|
1. SQL优化可以用到那些性能工具
开发阶段:
SQL Profile
运维阶段:
ASH,AWR,ADDM,AWRDD,AWRSQRPT, SQLTRPT(sqltrpt.sql), 10046,10053,SQL Tuning Advisor、sql monitor、sql trace
v$sql, v$sqlarea, dbms_xplan.display_cursor(awr), ash, awr
2. 如何缩短SQL调优时间
定位SQL:
SQLTRPT(sqltrpt.sql),快速定位libary中及awk库中的TOPSQL,并且给出调优建议。
定位SQL之后:
观察执行计划的异常处(统计信息是否准确及时)
查证数据集合的access方式,关注full等
查证集合的join方式,尽量避免笛卡尔
3. 影响性能的常见因素
(1)数据库安装及参数随意修改
(2)SQL写的不规范
(3)逻辑数据库和表设计不合理
(4)无索引或索引设计不合理
(5)统计信息不准确
(6)可以批量处理的(bulk collect,forall),而采用单条处理
4. 学习索引的重要性
(1)学习索引的结构有助于建立各种索引,如位图索引在数据仓库中的应用
(2)可以提高检索速度,同时也会降低DML的数据及空间浪费。
(3)可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。
(4)在使用分组和排序 子句进行数据检索时,也可以提高性能。
(5)通过位图索引可以实现星型转换。
(6)通过创建唯一性索引,可以提高性能和提供数据约束。
5. SQL优化的误区
(1)没有遵从 OS->Session->SQL 逐级排查
(2)没有定位到主要问题,就开始优化,一开始方向就可能错了
(3)随意增加hint
(4)没有从业务上优化
(5)优化是无止境的
(6)也许可以不做这个业务或者从小表中获取到数据
|
|