oracle编程艺术-commit做了什么

本文深入解析Oracle数据库中commit操作的内部机制,包括SCN生成、重做日志刷新及优化批量提交策略,以减少CPU处理时间和等待redo日志刷新的时间。

一. 知识点梳理:

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日志从缓存中刷到磁盘中的时间减少。

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值