- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通过Oracle执行计划识别低效SQL及优化
通过Oracle执行计划识别低效SQL
、*、亠、、兀 1
^注意点
对应执行计划
简要分析
返回行与逻辑读比率
A-Rows〔buffers
真实返回1行记录,花费1048个逻辑读,性能 有大问题
1 |1048
评估值准确的重要性
E-Rows |A-Rows
评估32行,真实75888行,非常不准确,执行 计划的准确性让人怀疑
| 1
1 | 1
|75888
32 |75888
类型转换需认真关注
|* 1 | TABLE ACCESS FULL |T_C(
O类型转换,一般用不上索引,所以是 fileter不 是 access
23)
Predicate in formati on (ide ntified
1 - filter(TO NUMBER( “ID” )=
请小心递归调用部分
统计信息
产生4321此递归调用 这一般是SQL带函数引发的
4321 recursive calls 0 db block gets
54321 con siste nt gets
注意表的访冋次数
Start | E-Rows |A-Rows
表被访问了 80016次,偏多了,一般不考虑N1 连接,要考虑hash连接等
1 | 32 |80016
80016| 1 |75888
注意表真实访问行数
E-Rows |A -Rows
1000 | 1000 70183 | 10
除了预测错外,要在执行计划中有count stopkey关键字。还可能是rownum分页查询的 执行计划,表示在第10行就停止前进了
谨慎观察排序与否
统计信息
1 sorts (memory) 0 sorts(disk) 73155 rows processed
查看该SQL是否排序, 此处说明在内存中排序 并未到磁盘中排序
通过逻辑结构调整来优化 SQL
现象描述
调整操作
某统计语句较慢
调整block大小,如从2KB调整为16KB
某范围查询语句较慢
从普通表调整为分区表
某表删除大量记录后访问依然很慢
释放咼水位线
某数据库表空间查询结果返回很慢
清除回收站对象
某应用系统的表记录插入慢
将频繁自动扩展的表空间改成固定尺寸,
且设置较大值,避免频繁扩展
某等值查询语句慢
添加索引改成索引扫描
使用rowid扫描
避免类型转换
避免使用函数如funci (col) =123
通过表结构设计来优化 SQL
现象描述
调整操作
索引失效导致分区大表用不到索引
确认是否执行过导致 索引失效的操作
全分区扫描
增加适当分区,使查询落在指定分区,避免全区扫描
数据全部落入默认分区,查询缓慢
将默认分区做split分区,同时增加分区表各分区比例 监控
分区表建立局部索引,但是 SQL用不上分区条件,导 致扫描许多小索引
将分区表的局部索引调整为全局索引
对全局临时表手机信息导致执行计划错误,sql性能低
不收集全局临时表统计信息
接口程序中根据不同业务设计了多张接口表,导致并 发受到影响,清理数据开销也大
改造接口表,统 成 张全局临时表
一条SQL关联10多个表,性能较低
通过将某关键表的字段进行扩充,将表连接中需要的 字段都融入到这个表中
原创力文档


文档评论(0)