一. 知识点梳理:
1. commit操作消耗的时间,不会因为commit的数据的数量级发生太大的变化。不论数据量有多大,commit的数据量是很平均的。
原因:commit之前,事务的绝大部分工作已经完成(如生成undo块,生成redo缓存,修改数据,获取锁资源)
2. 进行commit操作的时候,oracle做了哪些事情?
a. 为事务生成一个scn(system change number), 每次有人提交scn会增加1, 用来保证事务的顺序。
b. 日志写进程 会将缓存中剩余重做日志写到磁盘中。(其实这个过程在未调用commit的时候就已经进行了,为了防止一次新刷新存 过多的情况,导致用户等待)
c. 当完成把日志从缓存刷到磁盘之后,commit才算是真正的完成。
二. 场景应用
1. 在开发企业应用的时候,尽量使用批量使用更新或修改的方式,不要一条一条的插入或修改。如果说总数量过大,可以每1000条提交一次。
理由:
a.cpu处理的时间减少:批量提交较少与数据库连接的次数,较少了sql硬解码或者软解码的次数,一次性生成undo块,redo缓 存,修改数据。
b. 等待redo日志从缓存中刷到磁盘中的时间减少。
本文深入解析Oracle数据库中commit操作的内部机制,包括SCN生成、重做日志刷新及优化批量提交策略,以减少CPU处理时间和等待redo日志刷新的时间。
935

被折叠的 条评论
为什么被折叠?



