ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

°¢Àï°Í°ÍµÄOracle DBA±ÊÊÔÌâ´ð°¸-SQL tuningÀà
2014-11-24 01:01:19 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:5788´Î
Tags£º°¢Àï°Í°Í Oracle DBA ÊÔÌâ ´ð°¸ -SQL tuning

SQL tuningÀà²Î¿¼½â´ð£º
Ò»£ºSQL tuning Àà


1:Áоټ¸ÖÖ±íÁ¬½Ó·½Ê½


³ÌÐò´úÂë
hash join/merge join/nest loop(cluster join)/index join


2:²»½èÖúµÚÈý·½¹¤¾ß£¬ÔõÑù²é¿´sqlµÄÖ´Ðмƻ®


³ÌÐò´úÂë
set autot on
explain plan set statement_id = &item_id for &sql;
select * from table(dbms_xplan.display);
http://download-west.oracle.com/ ¡­ /b10752/ex_plan.htm


3:ÈçºÎʹÓÃCBO,CBOÓëRULEµÄÇø±ð


ÔÚoptimizer_mode=chooseʱ,Èç¹û±íÓÐͳ¼ÆÐÅÏ¢(·ÖÇø±íÍâ),ÓÅ»¯Æ÷½«Ñ¡ÔñCBO,·ñÔòÑ¡RBO¡£RBO×ñÑ­¼òµ¥µÄ·Ö¼¶·½·¨Ñ§,ʹÓÃ15ÖÖ¼¶±ðÒªµã£¬µ±½ÓÊÕµ½²éѯ£¬ÓÅ»¯Æ÷½«ÆÀ¹ÀʹÓõ½µÄÒªµãÊýÄ¿, È»ºóÑ¡Ôñ×î¼Ñ¼¶±ð(×îÉÙµÄÊýÁ¿)µÄÖ´Ðз¾¶À´ÔËÐвéѯ¡£


CBO³¢ÊÔÕÒµ½×îµÍ³É±¾µÄ·ÃÎÊÊý¾ÝµÄ·½·¨,ΪÁË×î´óµÄÍÌÍÂÁ¿»ò×î¿ìµÄ³õʼÏìӦʱ¼ä,¼ÆËãʹÓò»Í¬ µÄÖ´Ðмƻ®µÄ³É±¾£¬²¢Ñ¡Ôñ³É±¾×îµÍµÄÒ»¸ö,¹ØÓÚ±íµÄÊý¾ÝÄÚÈݵÄͳ¼Æ±»ÓÃÓÚÈ·¶¨Ö´Ðмƻ®¡£


4:ÈçºÎ¶¨Î»ÖØÒª(ÏûºÄ×ÊÔ´¶à)µÄSQL


³ÌÐò´úÂë
select sql_text
from v$sql
where disk_reads > 1000 or (executions > 0 and buffer_gets/executions > 30000);


5:ÈçºÎ¸ú×Ùij¸ösessionµÄSQL


³ÌÐò´úÂë
exec dbms_system.set_sql_trace_in_session(sid,serial#,&sql_trace);
select sid,serial# from v$session where sid = (select sid from v$mystat where rownum = 1);
exec dbms_system.set_ev(&sid,&serial#,&event_10046,&level_12,¡±);


6:SQLµ÷Õû×î¹Ø×¢µÄÊÇʲô


²é¿´¸ÃSQLµÄresponse time(db block gets/consistent gets/physical reads/sorts (disk))


7:˵˵Äã¶ÔË÷ÒýµÄÈÏʶ(Ë÷ÒýµÄ½á¹¹¡¢¶ÔdmlÓ°Ï졢ΪʲôÌá¸ß²éѯÐÔÄÜ)


b-tree index/bitmap index/function index/patitional index(local/global) Ë÷Òýͨ³£ÄÜÌá¸ßselect/update/deleteµÄÐÔÄÜ,»á½µµÍinsertµÄËÙ¶È,


8:ʹÓÃË÷Òý²éѯһ¶¨ÄÜÌá¸ß²éѯµÄÐÔÄÜÂð Ϊʲô


Ë÷Òý¾ÍÊÇΪÁËÌá¸ß²éѯÐÔÄܶø´æÔÚµÄ, Èç¹ûÔÚ²éѯÖÐË÷ÒýûÓÐÌá¸ßÐÔÄÜ, Ö»ÄÜ˵ÊÇÓôíÁËË÷Òý,»òÕß½²Êdz¡ºÏ²»Í¬


9:°ó¶¨±äÁ¿ÊÇʲô °ó¶¨±äÁ¿ÓÐʲôÓÅȱµã


°ó¶¨±äÁ¿ÊÇÏà¶ÔÎı¾±äÁ¿À´½²µÄ,ËùνÎı¾±äÁ¿ÊÇÖ¸ÔÚSQLÖ±½ÓÊéд²éѯÌõ¼þ£¬ÕâÑùµÄSQLÔÚ²»Í¬Ìõ¼þÏÂÐèÒª·´¸´½âÎö,°ó¶¨±äÁ¿ÊÇָʹÓñäÁ¿À´´úÌæÖ±½ÓÊéдÌõ¼þ£¬²éѯbind valueÔÚÔËÐÐʱ´«µÝ£¬È»ºó°ó¶¨Ö´ÐС£ÓŵãÊǼõÉÙÓ²½âÎö,½µµÍCPUµÄÕùÓÃ,½ÚÊ¡shared_pool ;ȱµãÊDz»ÄÜʹÓÃhistogram,sqlÓÅ»¯±È½ÏÀ§ÄÑ


10:ÈçºÎÎȶ¨(¹Ì¶¨)Ö´Ðмƻ®


³ÌÐò´úÂë
query_rewrite_enabled = true
star_transformation_enabled = true
optimizer_features_enable = 9.2.0


´´½¨²¢Ê¹ÓÃstored outline
oracle can automatically create outlines for all SQL statements, or you can create them for specific SQL statements. In either case, the outlines derive their input from the optimizer.


oracle creates stored outlines automatically when you set the initialization parameter Create_STORED_OUTLINES to true. When activated, oracle creates outlines for all compiled SQL statements. You can create stored outlines for specific statements using the Create OUTLINE statement.


Creating Outlines£ºhttp://download-west.oracle.com/docs/cd/B19306_01/server.102/b14211/outlines.htm


11:ºÍÅÅÐòÏà¹ØµÄÄÚ´æÔÚ8iºÍ9i·Ö±ðÔõÑùµ÷Õû£¬ÁÙʱ±í¿Õ¼äµÄ×÷ÓÃÊÇʲô


Oracle 8iÖÐsort_area_size/sort_area_retained_size¾ö¶¨ÁËÅÅÐòËùÐèÒªµÄÄÚ´æ


Èç¹ûÅÅÐò²Ù×÷²»ÄÜÔÚsort_area_sizeÖÐÍê³É,¾Í»áÓõ½temp±í¿Õ¼ä


Oracle 9iÖÐÈç¹ûworkarea_size_policy=autoʱ,


ÅÅÐòÔÚpgaÄÚ½øÐÐ,ͨ³£pga_aggregate_targetµÄ1/20¿ÉÒÔÓÃÀ´½øÐÐdisk sort;


Èç¹ûworkarea_size_policy=manualʱ,ÅÅÐòÐèÒªµÄÄÚ´æÓÉsort_area_size¾ö¶¨


ÔÚÖ´ÐÐorder by/group by/distinct/union/create index/index rebuild/minusµÈ²Ù×÷ʱ,


Èç¹ûÔÚpga»òsort_area_sizeÖв»ÄÜÍê³É,ÅÅÐò½«ÔÚÁÙʱ±í¿Õ¼ä½øÐÐ(disk sort),


ÁÙʱ±í¿Õ¼äÖ÷Òª×÷ÓþÍÊÇÍê³ÉϵͳÖеÄdisk sort.


12:´æÔÚ±íT(a,b,c,d),Òª¸ù¾Ý×Ö¶ÎcÅÅÐòºóÈ¡µÚ21¡ª30Ìõ¼Ç¼ÏÔʾ£¬Çë¸ø³ösql


³ÌÐò´úÂë
create table t(a number(,b number(,c number(,d number();
/
begin
for i in 1 .. 300 loop
insert into t values(mod(i,2),i/2,dbms_random.value(1,300),i/4);
end loop;
end;
/
select * from (select c.*,rownum as rn from (select * from t order by c desc) c) where rn between 21 and 30;
/
select * from (select * from test order by c desc) x where rownum < 30
minus
select * from (select * from test order by c desc) y where rownum < 20 order by 3 desc


Ïà±ÈÖ® minusÐÔÄܽϲî


¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£º±±¾©YGTD±ÊÊÔÌâ ÏÂһƪ£ºOracleÐÔÄܵ÷ÓÅÔ­Ôò

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿