SQL优化
来源:互联网 发布:aix 修改ssh端口 编辑:程序博客网 时间:2024/05/27 00:45
d数据库系统性能调整SQL优化包括三个步骤
1.通过查看系统中过去执行的历史可用信息,根据系统资源和应用程序确定高负载的SQL语句;
2.根据AWR报告结合系统动态视图确定高负载的SQL;
3.通过检查高负载SQL语句的执行计划,并提出优化方案。
确定高负载的SQL
高负载的SQL一般性能比较差,并且耗费系统中更多资源,可以通过下面的方法来确定
1.SQL TRACE
2.I/O统计,系统统计,SQL统计动态视图(v$filestat,v$segstat,v$sysstat,v$sesstat,v$sqlarea,v$sql,v$sqlstat,v$sqltext,v$sql_plan);
3.自动工作负荷库(AWR);
4.自动性能诊断监控工具(ADDM);
SQL TRACE
ORACLE企业管理器提供资源消耗过多的SQL语句方法,并产生只和评估SQL性能。
如果无法确定SQL语句,可以通过检查占用主机CPU较高开销的语句或v$sqlstat.buffer_gets,v$sqlstats.disk_reads
I/O开销并结合使用SQL TRACE产生包含该SQL语句的执行跟踪文件,然后使用TKPROFT生成输出文件。
可以使用下面的步骤确定消耗资源的SQL并获取其执行计划
1.收集ORACLE统计信息I/O(v$filestat)统计,系统的统计信息(v$sysstat)和SQL统计信息(v$sqlarea,v$sql/v$sqlstat
v$sql_plan和v$sql_plan_statistics)
2.根据上一步收集的数据,确定高负载的SQL。v$sqlstat包含共享池中所有SQL语句使用的资源信息:
Buffer Gets(v$sqlstats.buffer_gets占用较高CPU开销的语句)
磁盘读(v$sqlstat.disk_reads占用较高I/O开销的语句)
排序(v$sqlstat.sorts针对不多数排序操作)
同样可以通过自动工作负荷哭AWR报告进行确定
3.通过上述步骤收集信息在一段时期内检查buffer_gets最大的SQL语句,或者检查执行disk_reads最多的SQL语句,
同时从v$sqltext视图获取完整的SQL文本。
4.通过EXPLAN PLAN和v$SQL_PLAN获取该SQL语句优化器的执行计划
eg:
显示当前会话中最后一个执行SQL的执行计划
select * from table(dbms_xplan.display_cursor)
显示SQL ID 为‘6fvfsoohcsooo’的所有子游标的执行计划
select * from table(dbms_xplan.display_cursor('6fvfspphcsooo'));
显示游标的执行度划及其最近一次的统计信息
select * from
table(dbms_xplan.display_cursor('6fvfsoohcsooo',null,'allstats last'))
通过执行计划进行比较来确定性能下降的原因
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- sql优化
- sql优化
- Sql优化
- sql优化
- sql优化
- SQL 优化
- sql优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- SQL优化
- nginx配置文件nginx.conf的扩展
- poj-2718 Smallest Difference
- (转)可收缩、扩展的TextView
- Spring -- 一个事务中独立开启事务
- webView绕过信任证书访问https
- SQL优化
- transitionFromViewController详解
- 深度学习,A fast learning algorithm for deep belief nets
- Linux学习26_每天一个linux命令(44):top命令
- HTML中圆角样式
- (一)oozie工作流调度框架介绍
- Fragment和Activity之间的交互
- Git Pro 笔记--Git基础
- echarts之title-textAlign