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

TOP

oracleÃæÊÔÌâ¼°Æä´ð°¸(¶þ)
2014-11-24 02:23:02 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:2691´Î
Tags£ºoracle ÊÔÌâ ¼°Æä ´ð°¸
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µ÷Õû×î¹Ø×¢µÄÊÇʲô
¼ì²éϵͳµÄI/OÎÊÌâ
sar£­dÄܼì²éÕû¸öϵͳµÄiostat£¨IO statistics£©


²é¿´¸ÃSQLµÄresponse time(db block gets/consistent gets/physical reads/sorts (disk))
7. ˵˵Äã¶ÔË÷ÒýµÄÈÏʶ£¨Ë÷ÒýµÄ½á¹¹¡¢¶ÔdmlÓ°Ïì¡¢¶Ô²éѯӰÏ졢ΪʲôÌá¸ß²éѯÐÔÄÜ£©
Ë÷ÒýÓÐB-TREE¡¢BIT¡¢CLUSTERµÈÀàÐÍ¡£ORACLEʹÓÃÁËÒ»¸ö¸´ÔÓµÄ×ÔƽºâB-tree½á¹¹;ͨ³£À´Ëµ£¬ÔÚ±íÉϽ¨Á¢Ç¡µ±µÄË÷Òý£¬²éѯʱ»á¸Ä½ø²éѯÐÔÄÜ¡£µ«ÔÚ½øÐвåÈ롢ɾ³ý¡¢ÐÞ¸Äʱ£¬Í¬Ê±»á½øÐÐË÷ÒýµÄÐ޸ģ¬ÔÚÐÔÄÜÉÏÓÐÒ»¶¨µÄÓ°Ïì¡£ÓÐË÷ÒýÇÒ²éѯÌõ¼þÄÜʹÓÃË÷Òýʱ£¬Êý¾Ý¿â»áÏȶÈÈ¡Ë÷Òý£¬¸ù¾ÝË÷ÒýÄÚÈݺͲéѯÌõ¼þ£¬²éѯ³öROWID£¬ÔÙ¸ù¾ÝROWIDÈ¡³öÐèÒªµÄÊý¾Ý¡£ÓÉÓÚË÷ÒýÄÚÈÝͨ³£±ÈÈ«±íÄÚÈÝÒªÉٺܶ࣬Òò´Ëͨ¹ýÏȶÁË÷Òý£¬ÄܼõÉÙI/O£¬Ìá¸ß²éѯÐÔÄÜ¡£


b-tree index/bitmap index/function index/patitional index(local/global)Ë÷Òýͨ³£ÄÜÌá¸ßselect/update/deleteµÄÐÔÄÜ,»á½µµÍinsertµÄËÙ¶È,
8. ʹÓÃË÷Òý²éѯһ¶¨ÄÜÌá¸ß²éѯµÄÐÔÄÜÂð£¿ÎªÊ²Ã´
ͨ³£,ͨ¹ýË÷Òý²éѯÊý¾Ý±ÈÈ«±íɨÃèÒª¿ì.µ«ÊÇÎÒÃÇÒ²±ØÐë×¢Òâµ½ËüµÄ´ú¼Û.
Ë÷ÒýÐèÒª¿Õ¼äÀ´´æ´¢,Ò²ÐèÒª¶¨ÆÚά»¤, ÿµ±ÓмǼÔÚ±íÖÐÔö¼õ»òË÷ÒýÁб»ÐÞ¸Äʱ,Ë÷Òý±¾ÉíÒ²»á±»ÐÞ¸Ä. ÕâÒâζ×ÅÿÌõ¼Ç¼µÄINSERT,DELETE,UPDATE½«Îª´Ë¶à¸¶³ö4,5 ´ÎµÄ´ÅÅÌI/O. ÒòΪË÷ÒýÐèÒª¶îÍâµÄ´æ´¢¿Õ¼äºÍ´¦Àí,ÄÇЩ²»±ØÒªµÄË÷Òý·´¶ø»áʹ²éѯ·´Ó¦Ê±¼ä±äÂý.ʹÓÃË÷Òý²éѯ²»Ò»¶¨ÄÜÌá¸ß²éѯÐÔÄÜ,Ë÷Òý·¶Î§²éѯ(INDEX RANGE SCAN)ÊÊÓÃÓÚÁ½ÖÖÇé¿ö:
»ùÓÚÒ»¸ö·¶Î§µÄ¼ìË÷,Ò»°ã²éѯ·µ»Ø½á¹û¼¯Ð¡ÓÚ±íÖмǼÊýµÄ30%Ò˲ÉÓÃ;
»ùÓÚ·ÇΨһÐÔË÷ÒýµÄ¼ìË÷


Ë÷Òý¾ÍÊÇΪÁËÌá¸ß²éѯÐÔÄܶø´æÔÚµÄ,Èç¹ûÔÚ²éѯÖÐË÷ÒýûÓÐÌá¸ßÐÔÄÜ,Ö»ÄÜ˵ÊÇÓôíÁËË÷Òý,»òÕß½²Êdz¡ºÏ²»Í¬
9. °ó¶¨±äÁ¿ÊÇʲô£¿°ó¶¨±äÁ¿ÓÐʲôÓÅȱµã£¿
°ó¶¨±äÁ¿ÊÇÖ¸ÔÚSQLÓï¾äÖÐʹÓñäÁ¿£¬¸Ä±ä±äÁ¿µÄÖµÀ´¸Ä±äSQLÓï¾äµÄÖ´Ðнá¹û¡£
Óŵ㣺ʹÓð󶨱äÁ¿£¬¿ÉÒÔ¼õÉÙSQLÓï¾äµÄ½âÎö£¬ÄܼõÉÙÊý¾Ý¿âÒýÇæÏûºÄÔÚSQLÓï¾ä½âÎöÉϵÄ×ÊÔ´¡£Ìá¸ßÁ˱à³ÌЧÂʺͿɿ¿ÐÔ¡£¼õÉÙ·ÃÎÊÊý¾Ý¿âµÄ´ÎÊý, ¾ÍÄÜʵ¼ÊÉϼõÉÙORACLEµÄ¹¤×÷Á¿¡£
ȱµã£º¾­³£ÐèҪʹÓö¯Ì¬SQLµÄд·¨£¬ÓÉÓÚ²ÎÊýµÄ²»Í¬£¬¿ÉÄÜSQLµÄÖ´ÐÐЧÂʲ»Í¬£»


°ó¶¨±äÁ¿ÊÇÏà¶ÔÎı¾±äÁ¿À´½²µÄ,ËùνÎı¾±äÁ¿ÊÇÖ¸ÔÚSQLÖ±½ÓÊéд²éѯÌõ¼þ£¬
ÕâÑùµÄSQLÔÚ²»Í¬Ìõ¼þÏÂÐèÒª·´¸´½âÎö,°ó¶¨±äÁ¿ÊÇָʹÓñäÁ¿À´´úÌæÖ±½ÓÊéдÌõ¼þ£¬²éѯbind valueÔÚÔËÐÐʱ´«µÝ£¬È»ºó°ó¶¨Ö´ÐС£
ÓŵãÊǼõÉÙÓ²½âÎö,½µµÍCPUµÄÕùÓÃ,½ÚÊ¡shared_pool
ȱµãÊDz»ÄÜʹÓÃhistogram,sqlÓÅ»¯±È½ÏÀ§ÄÑ
10. ÈçºÎÎȶ¨(¹Ì¶¨)Ö´Ðмƻ®
¿ÉÒÔÔÚSQLÓï¾äÖÐÖ¸¶¨Ö´Ðмƻ®¡£Ê¹ÓÃHINTS;
query_rewrite_enabled = true
star_transformation_enabled = true
optimizer_features_enable = 9.2.0
´´½¨²¢Ê¹ÓÃstored outline
11. ºÍÅÅÐòÏà¹ØµÄÄÚ´æÔÚ8iºÍ9i·Ö±ðÔõÑùµ÷Õû£¬ÁÙʱ±í¿Õ¼äµÄ×÷ÓÃÊÇʲô
SORT_AREA_SIZE ÔÚ½øÐÐÅÅÐò²Ù×÷ʱ£¬Èç¹ûÅÅÐòµÄÄÚÈÝÌ«¶à£¬ÄÚ´æÀï²»ÄÜÈ«²¿·ÅÏ£¬ÔòÐèÒª½øÐÐÍⲿÅÅÐò£¬
´ËʱÐèÒªÀûÓÃÁÙʱ±í¿Õ¼äÀ´´æ·ÅÅÅÐòµÄÖмä½á¹û¡£


8iÖÐsort_area_size/sort_area_retained_size¾ö¶¨ÁËÅÅÐòËùÐèÒªµÄÄڴ棬 Èç¹ûÅÅÐò²Ù×÷²»ÄÜÔÚsort_area_sizeÖÐÍê³É,¾Í»áÓõ½temp±í¿Õ¼ä
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
SELECT *
FROM (SELECT ROWNUM AS row_num, tmp_tab.*
FROM (SELECT a, b, c, d
FROM T
ORDER BY c) tmp_tab
WHERE ROWNUM <= 30)
WHERE row_num >= 20
ORDER BY row_num;


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ÐÔÄܽϲî
¶þ£ºÊý¾Ý¿â»ù±¾¸ÅÄîÀà
1 Pctused and pctfree ±íʾʲôº¬ÒåÓÐʲô×÷ÓÃ
pctusedÓëpctfree¿ØÖÆÊý¾Ý¿éÊÇ·ñ³öÏÖÔÚfreelistÖÐ, pctfree¿ØÖÆÊý¾Ý¿éÖб£ÁôÓÃÓÚupdateµÄ¿Õ¼ä,µ±Êý¾Ý¿éÖеÄfree spaceСÓÚpctfreeÉèÖõĿռäʱ,¸ÃÊý¾Ý¿é´ÓfreelistÖÐÈ¥µô,µ±¿éÓÉÓÚdml²Ù×÷free space´óÓÚpct_usedÉèÖõĿռäʱ,¸ÃÊý¾Ý¿â¿é½«±»Ìí¼ÓÔÚfreelistÁ´±íÖС£
2 ¼òµ¥ÃèÊötablespace / segment / extent / blockÖ®¼äµÄ¹Øϵ
tablespace: Ò»¸öÊý¾Ý¿â»®·ÖΪһ¸ö»ò¶à¸öÂß¼­µ¥Î»£¬¸ÃÂß¼­µ¥Î»³ÉΪ±í¿Õ¼ä;ÿһ¸ö±í¿Õ¼ä¿ÉÄÜ°üº¬Ò»¸ö»ò¶à¸ö Segment;
Segments: SegmentÖ¸ÔÚtablespaceÖÐΪÌض¨Âß¼­´æ´¢½á¹¹·ÖÅäµÄ¿Õ¼ä¡£Ã¿Ò»¸ö¶ÎÊÇÓÉÒ»¸ö»ò¶à¸öextent×é³É¡£°üÀ¨Êý¾Ý¶Î¡¢Ë÷Òý¶Î¡¢»Ø¹ö¶ÎºÍÁÙʱ¶Î¡£
Extents: Ò»¸ö extent ÓÉһϵÁÐÁ¬ÐøµÄ Oracle blocks×é³É.ORACLEΪͨ¹ýextent À´¸øsegment·ÖÅä¿Õ¼ä¡£
Data Blocks£ºOracle Êý¾Ý¿â×î

Ê×Ò³ ÉÏÒ»Ò³ 1 2 3 4 5 6 7 ÏÂÒ»Ò³ βҳ 2/9/9
¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºÈçºÎÅжÏÒ»¶Î³ÌÐòÊÇÓÉ C ±àÒë³ÌÐò.. ÏÂһƪ£ºÓÃÁ´±íÄ£Äâ´óÕûÊý¼Ó·¨ÔËËã

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

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