一次 关于临时表优化表
来源:互联网 发布:近则不逊远则怨 知乎 编辑:程序博客网 时间:2024/06/05 18:57
现在手头的系统,已经优化了 近4 个月了。其中效果还是很显著的。 如果一个系统中 SQL 70, 80 , 90, 100, 200, 300 分钟的SQL 一天有 4 ,50 个 现在 搞得 没有超过10 分钟 的, 系统性能 能不提升不???
之前和项目经理 吹牛, 说 怎么系统中 有很多临时表?? 这个性能 无法保证的, 主要保证其执行计划。 项目经理 :“ 我们系统中用到的临时表 为了就是提示性能”
哥:“ 我说的临时表主要是 指的是 建立在临时表空间中, 比如 一 commit 数据就删除的那种 , 不是业务上面的临时表, 比如 这个 TMP_XXXX, 这些表只是当临时表用 ”
那天果然遇到 临时表问题了。 项目经理:“ 这个流程 怎么跑了 300 多分钟 , 以前只跑了40 分钟么, XXX 你看下呢”。
我:“果然跑了300多分钟”。 于是哥着手 优化 。 哥最怕 回答 以前快, 现在怎么慢了? 做过优化的都知道, 数据库负载每时每刻 都不同, 数据量也是一样。 这种问题 总 不能 一概 回答 数据量 提升 10倍, 性能下降 100倍吧??? 后来 哥发现 那个 流程 就是 1个SQL 慢了,性能 至少慢 了500 倍!!!
哥 查询 正在 跑的SQL, v$session_longops , v$session , v$process , v$sqlarea 当时哥用了 几个SQL。 其实 哥用好几种 方法关联 到了, 哥为啥 搞几次??
主要 是为了 方便回答 领导 为啥 以前快, 这次慢的, 呵呵.....
搞出执行计划 涉及到临时表, 一看 nest loop , rows 为1 。 正好 又是大表, 而且还索引回表, 执行计划 就不写了。 反应出 统计信息问题。 再监测一下等待事件, 我靠,临时表空间 读写 频繁, 而且 每次 读写 1 条数据。 查了 临时表 数据来源 , 查到 有80多万。
得到 结论: 这个流程慢 主要是 因为 临时表 数据暴增, 导致原来的 执行计划 错误, 而计划中 nest loop 每次往 临时表 空间中写 一条数据, 读一条数据, 数据量有80万。从而使原来 只要 1 分钟的SQL 跑了 300多分钟!!!
找到问题的根源 , 然后 强制 使用hash join 。 然后 监测 等待事件 , 发现 每次 写入 64个数据块, 读出 64 个数据块。 相当于5000 条数据把。 于是 预测SQL 进度 发现 5 6分钟搞定。
最终整个流程 也在 40 多分钟搞定。 优化完, (此时 优化完, 但是 哥只是 优化到这一步, 也回答了领导 为啥 以前快, 现在 慢了, 哈哈) 。
- 一次 关于临时表优化表
- 一次使用临时表优化数据处理的过程
- mysql临时表优化
- 优化临时表使用
- 临时表空间优化
- 关于Oracle临时表
- 一次临时表空间用满问题
- 利用临时表优化SQL
- group by 优化临时表
- 关于mysql创建临时表
- mysql优化: 内存表和临时表
- 使用临时表优化大表查询
- mysql优化: 内存表和临时表
- mysql优化: 内存表和临时表
- mysql优化: 内存表和临时表
- Oracle临时表 优化查询速度
- Oracle临时表 优化查询速度
- Oracle临时表 优化查询速度
- 如何在mac系统下搭建git服务器
- 图解登录
- 测试思考
- 客户端文件上传分享
- Fragment小结
- 一次 关于临时表优化表
- css 实现垂直居中的常用方法
- 三大集群
- eclipse的复活
- nrf51822 --- adc转换
- 多态的作用
- Fragment的使用(三)
- 帝国败局:一代首富 因何退隐江湖?
- Tomcat下使用Log4j 接管 catalina.out 日志文件生成方式: