当前位置: 首页 > news >正文

《Oracle高性能自动化运维》一一3.4 Redo优化

本节书摘来自华章计算机《Oracle高性能自动化运维》一书中的第3章,第3.4节,作者:冷菠 著,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 Redo优化

从前面的内容可以知道,Oracle Redo的产生主要是由DML事务引起的,与DML事务相关的数据库更改主要包含:
数据块更改;
回滚段数据块镜像更新;
数据库内部信息更新(数据字典表更新)。
可以通过日志挖掘获取数据库更改的相关信息,如下:
image
image

可以看到,Redo中记录了DML事物的数据块更改、回滚段更新等信息。因此,可以考虑采取以下措施来减少Redo的产生,从而达到优化Redo的目的:
减少索引键更新操作;
减少大表(键)更新操作;
使用Direct Load加载数据;
使用Nologging进行特定操作;
使用临时表(Temporary Table);;
使用外部表(External Table);
批量化处理DML业务程序;
减少事务Commit次数,采用组提交的方式;
减少Select For Update显示锁定,可以明显减少Redo产生;
减少表记录的数量规模(利用分区路由架构分区裁剪特性),例如使用分区、分表、分库等策略;
减少不必要的DML操作可以减少Redo产生,例如改写、整合SQL程序,优化业务逻辑。
可以通过下面的示例验证优化的可行性。
(1)采用组提交减少Redo的产生
不采用组提交插入数据:
image
image

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

从上述数据可以看出:
不采用组提交产生Redo:9268980;
采用组提交产生Redo:5241596;
组提交大大减少了Redo的产生:4027384(9268980-5241596)。
(2)采用临时表可以减少Redo产生
采用普通表插入数据:
image

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

从上述数据可以看出:
普通表产生Redo:5479300;
全局临时表产生Redo:1607268;
全局临时表大大减少了Redo产生:3872032(5479300-1607268)。
可以看到,采用组提交和使用临时表都能有效减少Redo的产生,从而提升数据库的性能。有兴趣的读者可以尝试采用其他措施进行扩展验证。

相关文章:

  • 光伏技术“质变期”是否已经到来?
  • 智慧城市建设快速发展 难题颇多亟待解决
  • H5公司升级改造其在克利夫兰的数据中心
  • 使用Apache Jmeter进行并发压力测试
  • 理解和使用SQL Server中的并行
  • 三类传感器助力保证无人驾驶安全
  • [20170705]lsnrctl status LISTENER_SCAN1
  • 锂电池有多火?上半年54家上市公司投了1160亿
  • 钱建林出席西古光通成立30周年庆典
  • 日本政府推网络战考试制度 黑客需持证上岗
  • 千万WiFi热点难成成运营级网络
  • 2017年一季度太阳能行业企业融资达32亿美元
  • error while loading shared libraries: libssl.so.6: cannot open shared object file
  • LeetCode 142. Linked List Cycle II 20170706
  • 算法-三向字符串快速排序
  • SegmentFault for Android 3.0 发布
  • 07.Android之多媒体问题
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • C语言笔记(第一章:C语言编程)
  • es的写入过程
  • export和import的用法总结
  • extjs4学习之配置
  • go append函数以及写入
  • golang 发送GET和POST示例
  • HTTP那些事
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • JavaScript设计模式与开发实践系列之策略模式
  • Laravel5.4 Queues队列学习
  • 包装类对象
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 来,膜拜下android roadmap,强大的执行力
  • 设计模式(12)迭代器模式(讲解+应用)
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 微服务核心架构梳理
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (13):Silverlight 2 数据与通信之WebRequest
  • (论文阅读30/100)Convolutional Pose Machines
  • (三分钟)速览传统边缘检测算子
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)程序员技术练级攻略
  • ***通过什么方式***网吧
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET 反射的使用
  • @RequestMapping处理请求异常
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)
  • [ACTF2020 新生赛]Include