Oracle commit的时候发生了什么
程序员文章站
2022-05-30 10:06:54
...
1.从理解LOGW什么时候将redo log buffer中把redo写入redo log file理解commit; 当redo log buffer 三分之一满的时候写 当commi
1.从理解LOGW什么时候将redo log buffer中把redo写入redo log file理解commit;
也就是说,redo是以一种相对连续的方式写入日志文件的。所以不管一个事务产生了多少redo,,其实commit的时候做的工作都差不多,因为大部门的redo已经写入日志文件了
2.commit的时候发生了什么
所以实际上每次commit的时候做的工作都很少,最大的工作就是将redo写入日志文件了,但是大部门redo已经写入到日志文件了;但是这也不代表,每次修改一个块的时候,都要去commit,这样会增加对日志文件的竞争(日志文件是个共享结构),同时也增加了对latches的竞争(保护对共享结构的访问)。所以应该根据逻辑事务的大小来决定什么时候commit。
3.下面一个例子,产生不同大小的redo,来说明提交的时候,做的工作时间上差不多
s1:创建一个大表
s2:创建一个需要插入10行数据的表t_10,设置自动追踪 s3:插入1000行 插入10000行 发现,插入10行,1000行,10000行,commit的时间都很短。推荐阅读
-
汉朝是从什么时候开始衰落的?初元元年开始历年发生了哪些事情?
-
乾隆八年的夏天热死人!乾隆八年发生了什么?
-
南唐亡国的时候发生了什么?李煜是如何投降的?
-
汉高祖刘邦出生的时候,都发生了什么?他的身世是怎样的?
-
php顶用mysql的START TRANSACTION和commit包围了4条插入语句,发现用事务比不用的时候插入的快这是为什么呢
-
php顶用mysql的START TRANSACTION和commit包围了4条插入语句,发现用事务比不用的时候插入的快这是为什么呢
-
b站第一次发弹幕是什么时候? bilibili查看自己第一次发弹幕的技巧
-
Oracle RAC Opatch auto的时候为什么不打到Rac database home上
-
Oracle commit的时候发生了什么
-
mybatis-为什么同样一条请求,有时候发的时候可以完成,有的时候却会卡住呢?