打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【赠书】那些被你忽略的性能 - Oracle Redo的产生场景及优化

Dear

购买链接:https://item.jd.com/12128635.html

底部有小福利哦~

冷菠

冷菠,资深DBA,著有《Oracle高性能自动化运维》,有近10年的数据库运维、团队管理以及培训经验。擅长数据库备份恢复、数据库性能诊断优化以及数据库自动化运维等。目前致力于大数据、智能一体化、开源云计算等领域的佳实践探索。

Oracle Redo是以条目(Redo record)的形式记录数据库的所有更改操作。这些更改包括数据库物理文件的更改,数据库运行状况更改,后台进程的写操作,DML事务操作,数据字典DDL操作,数据库内部递归调用等。其中,最主要的原因是DML事务的操作。

本文将分析Redo对于数据库DML操作的记录信息,并提出通过减少Redo条目达到优化Redo,提高数据库性能的方案。

DML事务相关的数据库更改有哪些?
  1. 数据块更改;

  2. 回滚段数据块镜像更新;

  3. 数据库内部信息更新(数据字典表更新)。


我们可以通过日志挖掘获取到数据库更改的相关信息,如下:

可以看到,Redo中记录了DML事物的数据块更改、回滚段更新等信息。

如何来减少Redo的产生,从而达到优化Redo的目的
  1. 减少索引键更新操作;

  2. 大表(键)更新操作;

  3. 使用Direct Load加载数据;

  4. 使用Nologging进行特定操作;

  5. 使用临时表(Temporary Table);

  6. 使用外部表(External Table);

  7. 批量化处理DML业务程序;

  8. 减少事务Commit次数,采用组提交的方式;

  9. 减少Select For Update显示锁定,可以明显减少Redo产生;

  10. 减少表记录的数量规模(利用分区路由架构分区裁剪特性),例如使用分区、分表、分库等策略;

  11. 减少不必要的DML操作可以减少Redo产生,例如改写、整合SQL程序,优化业务逻辑。

通过示例验证优化的可行性

采用组提交减少Redo的产生:

不采用组提交插入数据:

采用组提交(提交一次)插入数据:

从上述数据可以看出:

不采用组提交产生Redo :9268980;

采用组提交产生Redo: 5241596;

组提交大大减少了Redo的产生:4027384(9268980-5241596)。

采用临时表可以减少Redo产生:

采用普通表插入数据:

采用全局临时表插入数据:

从上述数据可以看出:

普通表产生Redo:5479300;

全局临时表产生Redo:1607268;

全局临时表大大减少了Redo产生:3872032(5479300-1607268)。

论证结论

可以看到,采用组提交和使用临时表都能有效的减少Redo的产生,从而提升了数据库性能。有兴趣的读者可以尝试采用其余措施进行扩展验证。

  福利

在本文评论区留下你真知灼见/心得体悟,并在本文发布后的隔天中午12点成为点赞数前2名,即可获得由冷菠老师编著的《Oracle高性能自动化运维》,特别鸣谢华章科技&机械工业出版社提供图书赞助。

大讲堂 一个分享交流的地方

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何加速Oracle大批量数据处理
临时表概念
Oracle 临时表的应用
Oracle中的事务
Oralce中,DDL语句为什么不能回滚
Oracle数据库之事务
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服