SQL语句性能调整
2007-05-06 12:05:38 来源:WEB开发网(4)对于超过5个表的连接的查询,建议不要使用成本优化器,而是在SQL语句中通过添加/* + rule */提示或者通过指定的执行计划来避免可能会在20分钟以上的SQL解析时间。
基于规则优化器(RBO):
(1)ORACLE 8i以及ORACLE的以前版本主要用(RBO),并且比较有效;
(2)通过optimizer_mode=rule来选择RBO;通过alter session set optimizer_goal=rule来选择RBO; 通过添加/* + rule */来选择RBO;
(3)在RBO中,from 子句的表的顺序决定表的连接顺序。From 子句的最后一个表是驱动表,这个表应该是最小的表。
(4)限定性最强的布尔表达式放在最底层。
4、跟踪、优化SQL语句的方法
保证在实例级将TIMED_STATISTICS设置为TRUE(在 INIT.ORA中永久的设置它或执行 ALTER SYSTEM 命令临时设置它);
保证将MAX_DUMP_FILE_SIZE设置的较高。此参数控制跟踪文件的大小。
决定USER_DUMP_DEST所指向的位置,并保证有足够的磁盘空间。这是放置跟踪文件的位置。
在应用系统运行时,打开所怀疑的回话的SQL_TRACE.(在 INIT.ORA中通过SQL_TRACE=TRUE永久的设置对所有的回话进行跟踪或通过使用系统包DBMS_SYSTEM.set_sql_trace_in_session(sid,serial,true);命令临时设置它)
执行业务相关操作;
设置跟踪结束(DBMS_SYSTEM.set_sql_trace_in_session(sid,serial,false),如果没有该步骤,可能跟踪文件中的信息不全,因为可能有一部分还在缓存中);
定位跟踪文件;
对步骤6的跟踪文件进行TKPROF,生成报告文件;
研究此报告文件,可以看到CPU、DISK、 QUERY、 COUNT等参数和execution plan(执行计划),优化开销最大的SQL;
重复执行步骤4)~9)直到达到所需的性能目标。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接