µ±Ç°Î»Ö㺠´úÂëÃÔ >> SQL >> Oracle SQL性能优化深入浅出 Èý
  Ïêϸ½â¾ö·½°¸

Oracle SQL性能优化深入浅出 Èý

Èȶȣº76   ·¢²¼Ê±¼ä£º2016-05-05 12:08:26.0
Oracle SQL性能优化深入浅出 3
用EXPLAIN PLAN 分æž�SQLè¯?�¥:
EXPLAIN PLAN æ˜?¸€ä¸?¾ˆå¥½çš„分æž�SQLè¯?�¥çš„å·¥å…?它甚至å�¯ä»¥åœ¨ä¸�执行SQL的情况下分æž�è¯?�¥. 通过分æž�,我们就å�¯ä»¥çŸ¥é�“ORACLEæ˜??Žä¹ˆæ ·è¿žæŽ¥è¡¨,使用ä»?么方å¼�扫æ��表(索引æ‰?��或全表扫æ�?以å�Šä½¿ç”¨åˆ°çš„索引å��ç§°.
你需è¦�按照从里到å¤?从上到下的æ?åº�解读分æž�的结果.
EXPLAIN PLAN分æž�的结果是用缩进的格å¼�排列çš? æœ?内部的æ“�作将è¢?œ€å…ˆè§£è¯? 如果两个æ“�作处于å�Œä¸€å±‚中,带有æœ?å°�æ“�作å�·çš„å°†è¢??先执è¡?
NESTED LOOPæ˜?°‘æ•°ä¸�按照上述规则处ç�†çš„æ“�ä½? 正确的执行路径是æ£?查å?NESTED LOOPæ��供数æ�®çš„æ“�ä½?其中æ“�作å�·æœ€å°�的将è?æœ?å…ˆå?ç�?

使用TKPROF工具分æž�SQLè¯?�¥:
SQL trace 工具收集正在执è?çš„SQLçš„æ?§èƒ½çжæ?�æ•°æ�?¹¶è®°å½•到一ä¸?·Ÿè¸?–‡ä»¶ä¸­. 这个跟踪文件æ��供了è?多有用的信æ�¯,例å?è§£æž�次数.执è?次数,CPU使用时间ç­?这些数æ�®å°†å�¯ä»¥ç”¨æ�¥ä¼˜åŒ–你的系ç»?
设置SQL TRACE在会�级� 有效
ALTER SESSION SET SQL_TRACE TRUE
设置SQL TRACE 在整ä¸?•°æ�?º“有效, 你必须将SQL_TRACEå�‚数在init.oraä¸??为TRUE, USER_DUMP_DESTå�‚数说明了生æˆ�è·Ÿè¸?–‡ä»¶çš„ç›?½•
å†�使用TKPROF对TRACE文件进è?分æž�分æž�结果更加准确ã€�清æ¥?

在SQLPLUS �置AUTOTRACE:
SET AUTOTRACE OFF :ä¸�能获得AUTOTRACE报告. 这是默è?çš?
SET AUTOTRACE ON EXPLAIN :仅仅显示优化器执行è?划的AUTOTRACE报告
SET AUTOTRACE ON STATISTICS :仅仅显示SQLè¯?�¥æ‰§è?的统计结果的AUTOTRACE报告
SET AUTOTRACE ON :包括上é�¢ä¸¤é¡¹å†…å?çš„AUTOTRACE报告
SET AUTOTRACE TRACEONLY :与SET AUTOTRACE ON类似,æ‰?有的统è?和数æ�?ƒ½åœ?¼Œä½†ä¸�å�?»¥æ‰“å�°

SQL 调整的目�
1)去掉ä¸�å¿…è?的大型表的全表扫æ��ã??
2)缓存å°�型表的全表扫æ��ã??
3)校验优化索引的使用�
4)æ?验优化的连接æŠ?æœ???

在è?计和å¼?å�‘时调整ï¼?/strong>
当è?计你的系统时,使用下列优化æ?§èƒ½çš„准则:
- 消除客户机ï¼�æœ�务器应用中ä¸�å¿…è¦�的网络传输,使用存储过程ã??
- 使用适å�ˆä½ ç³»ç»Ÿçš„Oracleæœ�务器é?‰ä»¶ï¼ˆä¾‹å¦‚,并è?查è?或分布å¼�æ•°æ�®åº“)ã€?
- 除é�žä½ çš„应用有特殊的éœ?è¦�,å�¦åˆ™ä½¿ç”¨ç¼ºçœ�çš„Oracleé”�ã??
- 利用数æ�®åº“è?ä½�应用模å�—,以便能以æ¯�个模å�—为基ç¡?æ�¥è¿½è¸??§èƒ½ã€?
- 选择你的数æ�®å�—çš„æœ?佳大å°�ã??-- 原则上æ�¥è¯´å¤§ä¸?些的性能较好ã€?
- 分布你的数æ�®ï¼Œä½¿å¾—一ä¸?Š‚ç‚¹ä½¿ç”¨çš„æ•°æ�®æœ?œ°å­˜è´®åœ¨è?节点ä¸???


  Ïà¹Ø½â¾ö·½°¸