DB2或ORACLE数据库,写日志时,线程或进程可以有多个么?

DB2或ORACLE数据库,写日志时,线程或进程可以有多个么? 若不能的话,为什么呢(不考虑性能问题)?

参与33

3同行回答

仙道彰仙道彰  数据库开发工程师 , 花旗集团
可以是多个;首先要理解数据库为什么要写日志呢?这主要是为了保持数据库的完整性和一致性;DB2采取的是提前写日志的模式;例如你要向数据库中插入一条数据,你提交确认的命令首先会写到日志里面去,然后才会执行该条插入语句,数据库中才会存在该笔记录;这样做的好处就是,当发生断电之...显示全部

可以是多个;
首先要理解数据库为什么要写日志呢?这主要是为了保持数据库的完整性和一致性;DB2采取的是提前写日志的模式;例如你要向数据库中插入一条数据,你提交确认的命令首先会写到日志里面去,然后才会执行该条插入语句,数据库中才会存在该笔记录;这样做的好处就是,当发生断电之类的是故事,日志文件可以用来把数据库退回到原来的某一个一致性状态。所有被提交确认的事务会被redo,所有未被提交的事务都将回滚;
至于写日志时的线程和进程是否有多个这个取决于数据库的并发性;基本上所有的数据库都是并发处理进程的;所以日志随着进程应该是并发写的;所以说进程可以有多个,多个日志也可以同步写。

收起
互联网服务 · 2017-09-12
  • 事务多并发处理和日志多并发写是两个完全不同的阶段。提前写入模式,多并发事物处理会把相关信息并发写入日志缓存,进入缓存中队列,写入日志的线程从队列中取。
    2017-09-19
mountainsunmountainsun  数据库运维工程师 , 吴江银行
数据库写日志主要是为了保证数据的完整性与一致性。一般来说,我们的DML操作,都需要等待数据库将相应的操作记录在活动日志中,只有日志写成功了,我们的DML操作才有可能成功。对于DB2来说,使用db2loggw来完成写日志,对于ORACLE 使用LGWR来完成写日志。对于我个人理解来说,因为日志...显示全部

数据库写日志主要是为了保证数据的完整性与一致性。一般来说,我们的DML操作,都需要等待数据库将相应的操作记录在活动日志中,只有日志写成功了,我们的DML操作才有可能成功。对于DB2来说,使用db2loggw来完成写日志,对于ORACLE 使用LGWR来完成写日志。对于我个人理解来说,因为日志都是顺序读写,不能并发写,所以对于数据库来说,这个进程只有一个。

收起
银行 · 2017-09-14
renou2012renou2012  数据库管理员 , KE
oracle的redo单实例是有多个线程写,如果RAC会有多个进程写,设计是为了避免实例间共享Redo文件引发的竞争,提高系统性能。显示全部

oracle的redo单实例是有多个线程写,如果RAC会有多个进程写,
设计是为了避免实例间共享Redo文件引发的竞争,提高系统性能。

收起
金融其它 · 2017-09-13

提问者

zhenda
数据库管理员昆仑银行
擅长领域: 数据库服务器云计算

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-09-12
  • 关注会员:4 人
  • 问题浏览:4664
  • 最近回答:2017-09-14
  • X社区推广