ÔÚ¹ýÈ¥µÄÊ®ÄêÖУ¬OracleÒѾ³ÉΪÊÀ½çÉÏ×îרҵµÄÊý¾Ý¿âÖ®Ò»¡£¶ÔÓÚITר¼ÒÀ´Ëµ£¬¾ÍÊÇҪȷ±£ÀûÓÃOracleµÄÇ¿´óÌØÐÔÀ´Ìá¸ßËûÃǹ«Ë¾µÄÉú²úÁ¦¡£×îÓÐЧµÄ·½·¨Ö®Ò»ÊÇͨ¹ýOracleµ÷ÓÅ¡£ËüÓдóÁ¿µÄµ÷Õû²ÎÊýºÍ¼¼ÊõÀ´¸Ä½øÄãµÄOracleÊý¾Ý¿âµÄÐÔÄÜ¡£
Oracleµ÷ÓÅÊÇÒ»¸ö¸´ÔÓµÄÖ÷Ìâ¡£¹ØÓÚµ÷ÓÅ¿ÉÒÔдÕûÕûÒ»±¾Ê飬²»¹ý£¬ÎªÁ˸ÄÉÆOracleÊý¾Ý¿âµÄÐÔÄÜ£¬ÓÐһЩ»ù±¾µÄ¸ÅÄîÊÇÿ¸öOracle DBA¶¼Ó¦¸Ã×ñ´ÓµÄ¡£
ÔÚÕâƪ¼ò½éÖУ¬ÎÒÃǽ«¼òÒªµØ½éÉÜÒÔϵÄOracleÖ÷Ì⣺
Íⲿµ÷Õû£ºÎÒÃÇÓ¦¸Ã¼ÇסOracle²¢²»Êǵ¥¶ÀÔËÐеġ£Òò´ËÎÒÃǽ«²é¿´Ò»ÏÂͨ¹ýµ÷ÕûOracle·þÎñÆ÷ÒԵõ½¸ßµÄÐÔÄÜ¡£
Rowre-sequencingÒÔ¼õÉÙ´ÅÅÌI/O£ºÎÒÃÇÓ¦¸Ã¶®µÃOracleµ÷ÓÅ×îÖØÒªµÄÄ¿±êÊǼõÉÙI/O¡£
Oracle SQLµ÷Õû£ºOracle SQLµ÷ÕûÊÇOracleµ÷ÕûÖÐ×îÖØÒªµÄÁìÓòÖ®Ò»£¬Ö»ÒªÍ¨¹ýһЩ¼òµ¥µÄSQLµ÷ÓŹæÔò¾Í¿ÉÒÔ´ó·ù¶ÈµØÌáÉýSQLÓï¾äµÄÐÔÄÜ£¬ÕâÊÇÒ»µã¶¼²»Ææ¹ÖµÄ¡£
µ÷ÕûOracleÅÅÐò£ºÅÅÐò¶ÔÓÚOracleÐÔÄÜÒ²ÊÇÓкܴóÓ°ÏìµÄ¡£
µ÷ÕûOracleµÄ¾ºÕù£º±íºÍË÷ÒýµÄ²ÎÊýÉèÖöÔÓÚUPDATEºÍINSERTµÄÐÔÄÜÓкܴóµÄÓ°Ïì¡£
ÎÒÃÇÊ×ÏÈ´Óµ÷ÕûOracleÍⲿµÄ»·¾³¿ªÊ¼¡£Èç¹ûÄÚ´æºÍCPUµÄ×ÊÔ´²»×ãµÄ»°£¬ÈκεÄOracleµ÷Õû¶¼ÊÇûÓаïÖúµÄ¡£
ÍⲿµÄÐÔÄÜÎÊÌâ
Oracle²¢²»Êǵ¥¶ÀÔËÐеġ£OracleÊý¾Ý¿âµÄÐÔÄܺÍÍⲿµÄ»·¾³ÓкܴóµÄ¹Øϵ¡£ÕâЩÍⲿµÄÌõ¼þ°üÀ¨ÓУº
¡ôCPU--CPU×ÊÔ´µÄ²»×ãÁî²éѯ±äÂý¡£µ±²éѯ³¬¹ýÁËOracle·þÎñÆ÷µÄCPUÐÔÄÜʱ£¬ÄãµÄÊý¾Ý¿âÐÔÄܾÍÊܵ½CPUµÄÏÞÖÆ¡£
¡ôÄÚ´æ--¿ÉÓÃÓÚOralceµÄÄÚ´æÊýÁ¿Ò²»áÓ°ÏìSQLµÄÐÔÄÜ£¬ÌرðÊÇÔÚÊý¾Ý»º³åºÍÄÚ´æÅÅÐò·½Ãæ¡£
¡ôÍøÂç--´óÁ¿µÄNet8ͨÐÅÁîSQLµÄÐÔÄܱäÂý¡£
Ðí¶àÐÂÊÖ¶¼´íÎóµÄÈÏΪӦ¸ÃÊ×Ïȵ÷ÕûOracleÊý¾Ý¿â£¬¶ø²»ÊÇÏÈÈ·ÈÏÍⲿ×ÊÔ´ÊÇ·ñ×ã¹»¡£Êµ¼ÊÉÏ£¬Èç¹ûÍⲿ»·¾³³öÏÖÆ¿¾±£¬ÔÙ¶àµÄOracleµ÷Õû¶¼ÊÇûÓаïÖúµÄ¡£
ÔÚ¼ì²éOracleµÄÍⲿ»·¾³Ê±£¬ÓÐÁ½¸ö·½ÃæÊÇÐèҪעÒâµÄ£º
1¡¢µ±ÔËÐжÓÁеÄÊýÄ¿³¬¹ý·þÎñÆ÷µÄCPUÊýÁ¿Ê±£¬·þÎñÆ÷µÄÐÔÄܾͻáÊܵ½CPUµÄÏÞÖÆ¡£²¹¾ÈµÄ·½·¨ÊÇΪ·þÎñÆ÷Ôö¼Ó¶îÍâµÄCPU»òÕ߹رÕÐèÒªºÜ¶à´¦Àí×ÊÔ´µÄ×é¼þ£¬ÀýÈçOracle Parallel Query ¡£
2¡¢ÄÚ´æ·ÖÒ³¡£µ±ÄÚ´æ·Öҳʱ£¬ÄÚ´æÈÝÁ¿ÒѾ²»×㣬¶øÄÚ´æÒ³ÊÇÓë´ÅÅÌÉϵĽ»»»Çø½øÐн»»¥µÄ¡£²¹¾ÈµÄ·½·¨ÊÇÔö¼Ó¸ü¶àµÄÄڴ棬¼õÉÙOracle SGAµÄ´óС£¬»òÕ߹رÕOracleµÄ¶àÏ̷߳þÎñÆ÷¡£
¿ÉÒÔʹÓø÷ÖÖ±ê×¼µÄ·þÎñÆ÷¹¤¾ßÀ´µÃµ½·þÎñÆ÷µÄͳ¼ÆÊý¾Ý£¬ÀýÈçvmstat,glance,topºÍsar¡£DBAµÄÄ¿±êÊÇÈ·±£Êý¾Ý¿â·þÎñÆ÷ÓµÓÐ×ã¹»µÄCPUºÍÄÚ´æ×ÊÔ´À´´¦ÀíOracleµÄÇëÇó¡£
ÒÔÏÂÈÃÎÒÃÇÀ´¿´Ò»ÏÂOracleµÄrow-resequencingÊÇÈçºÎÄܹ»¼«´óµØ¼õÉÙ´ÅÅÌI/OµÄ¡£
Row-resequencing£¨ÐеÄÖØÐÂÅÅÐò£©
¾ÍÏóÎÒÃÇÉÏÃæÌáµ½µÄ£¬ÓоÑéµÄOracle DBA¶¼ÖªµÀI/OÊÇÏìӦʱ¼äµÄ×î´ó×é³É²¿·Ö¡£ÆäÖдÅÅÌI/OÌرðÀ÷º¦£¬ÒòΪµ±OracleÓÉ´ÅÅÌÉϵÄÒ»¸öÊý¾ÝÎļþµÃµ½Ò»¸öÊý¾Ý¿éʱ£¬¶ÁµÄ½ø³Ì¾Í±ØÐëµÈ´ýÎïÀíI/O²Ù×÷Íê³É¡£´ÅÅ̲Ù×÷Òª±ÈÊý¾Ý»º³åÂý10,000±¶¡£Òò´Ë£¬Èç¹û¿ÉÒÔÁîI/O×îС»¯£¬»òÕß¼õÉÙÓÉÓÚ´ÅÅÌÉϵÄÎļþ¾ºÕù¶ø´øÀ´µÄÆ¿¾±£¬¾Í¿ÉÒÔ´ó´óµØ¸ÄÉÆOracleÊý¾Ý¿âµÄÐÔÄÜ¡£
Èç¹ûϵͳÏìÓ¦ºÜÂý£¬Í¨¹ý¼õÉÙ´ÅÅÌI/O¾Í¿ÉÒÔÓÐÒ»¸öºÜ¿ìµÄ¸ÄÉÆ¡£Èç¹ûÔÚÒ»¸öÊÂÎñÖÐͨ¹ý°´Ò»¶¨µÄ·¶Î§ËÑË÷primary-keyË÷ÒýÀ´·ÃÎÊ±í£¬ÄÇôÖØÐÂÒÔCTASµÄ·½·¨×éÖ¯±í½«ÊÇÄã¼õÉÙI/OµÄÊ×Òª²ßÂÔ¡£Í¨¹ýÔÚÎïÀíÉϽ«ÐÐÅÅÐòΪºÍprimary-keyË÷ÒýÒ»ÑùµÄ˳Ðò£¬¾Í¿ÉÒÔ¼Ó¿ì»ñµÃÊý¾ÝµÄËٶȡ£
¾ÍÏó´ÅÅ̵ĸºÔØƽºâÒ»Ñù£¬ÐеÄÖØÐÂÅÅÐòÒ²ÊǺܼòµ¥µÄ£¬¶øÇÒÒ²ºÜ¿ì¡£Í¨¹ýÓëÆäËüµÄDBA¹ÜÀí¼¼ÇÉÒ»ÆðʹÓ㬾ͿÉÒÔÔÚ¸ßI/OµÄϵͳÖдó´óµØ¼õÉÙÏìÓ¦µÄʱ¼ä¡£
ÔÚ¸ßÈÝÁ¿µÄÔÚÏßÊÂÎñ´¦Àí»·¾³ÖУ¨online transaction processing£¬OLTP£©£¬Êý¾ÝÊÇÓÉÒ»¸öprimaryË÷ÒýµÃµ½µÄ£¬ÖØÐÂÅÅÐò±í¸ñµÄÐоͿÉÒÔÁîÁ¬Ðø¿éµÄ˳ÐòºÍËüÃǵÄprimaryË÷ÒýÒ»Ñù£¬ÕâÑù¾Í¿ÉÒÔÔÚË÷ÒýÇý¶¯µÄ±í¸ñ²éѯÖУ¬¼õÉÙÎïÀíI/O²¢ÇÒ¸ÄÉÆÏìӦʱ¼ä¡£Õâ¸ö¼¼ÇɽöÔÚÓ¦ÓÃÑ¡Ôñ¶àÐеÄʱºòÓÐÓ㬻òÕßÔÚʹÓÃË÷Òý·¶Î§ËÑË÷ºÍÓ¦Ó÷¢³ö¶à¸ö²éѯÀ´µÃµ½Á¬ÐøµÄkeyʱÓÐЧ¡£¶ÔÓÚËæ»úµÄΨһprimary-key£¨Ö÷¼ü£©µÄ·ÃÎʽ«²»»áÓÉÐÐÖØÐÂÅÅÐòÖеõ½ºÃ´¦¡£
ÈÃÎÒÃÇ¿´Ò»ÏÂËüÊÇÈçºÎ¹¤×÷µÄ¡£¿¼ÂÇÒÔϵÄÒ»¸öSQLµÄ²éѯ£¬ËüʹÓÃÒ»¸öË÷ÒýÀ´µÃµ½100ÐУº
selectsalaryfromemployeewherelast_name like 'B%';
Õâ¸ö²éѯ½«»áʹÓÃlast_name_index£¬ËÑË÷ÆäÖеÄÿһÐÐÀ´µÃµ½Ä¿±êÐС£Õâ¸ö²éѯ½«»áÖÁÉÙʹÓÃ100´ÎÎïÀí´ÅÅ̵ĶÁÈ¡£¬ÒòΪemployeeµÄÐдæ·ÅÔÚ²»Í¬µÄÊý¾Ý¿éÖС£
²»¹ý£¬Èç¹û±íÖеÄÐÐÒѾÖØÐÂÅÅÐòΪºÍlast_name_indexµÄÒ»Ñù£¬Í¬ÑùµÄ²éѯÓÖ»áÔõÑù´¦ÀíÄØ£¿ÎÒÃÇ¿ÉÒÔ¿´µ½Õâ¸ö²éѯֻÐèÒªÈý´ÎµÄ´ÅÅÌI/O¾Í¶ÁÍêÈ«²¿100¸öÔ±¹¤µÄ×ÊÁÏ£¨Ò»´ÎÓÃ×÷Ë÷ÒýµÄ¶ÁÈ¡£¬Á½´ÎÓÃ×÷Êý¾Ý¿éµÄ¶ÁÈ¡£©£¬¼õÉÙÁË97´ÎµÄ¿é¶ÁÈ¡¡£
ÖØÐÂÅÅÐò´øÀ´µÄÐÔÄܸÄÉƵij̶ÈÔÚÓÚÔÚÄ㿪ʼµÄʱºòÐеÄÂÒÐòÐÔÈçºÎ£¬ÒÔ¼°ÄãÐèÒªÓÉÐòÁÐÖзÃÎʶàÉÙÐС£ÖÁÓÚÒ»¸ö±íÖеÄÐÐÓëË÷ÒýµÄÅÅÐò¼üµÄÆ¥Åä³Ì¶È£¬¿ÉÒԲ鿴Êý¾Ý×ÖµäÖеÄdba_indexesºÍdba_tablesÊÓͼµÃµ½¡£
ÔÚdba_indexesµÄÊÓͼÖУ¬²é¿´clustering_factorÁС£Èç¹ûclustering_factorµÄÖµºÍ±íÖеĿéÊýÄ¿´óÖÂÒ»Ñù£¬ÄÇôÄãµÄ±íºÍË÷ÒýµÄ˳ÐòÊÇÒ»ÑùµÄ¡£²»¹ý£¬Èç¹ûclustering_factorµÄÖµ½Ó½ü±íÖеÄÐÐÊýÄ¿£¬ÄǾͱíÃ÷±í¸ñÖеÄÐкÍË÷ÒýµÄ˳ÐòÊDz»Ò»ÑùµÄ¡£
ÐÐÖØÐÂÅÅÐòµÄ×÷ÓÃÊDz»¿ÉÒÔС¿´µÄ¡£ÔÚÐèÒª½øÐдó·¶Î§µÄË÷ÒýËÑË÷µÄ´ó±íÖУ¬ÐÐÖØÐÂÅÅÐò¿ÉÒÔÁî²éѯµÄÐÔÄÜÌá¸ßÈý±¶¡£
Ò»µ©ÄãÒѾ¾ö¶¨ÖØÐÂÅÅÐò±íÖеÄÐУ¬Äã¿ÉÒÔʹÓÃÒÔÏµĹ¤¾ßÖ®Ò»À´ÖØÐÂ×éÖ¯±í¸ñ¡£
¡ôʹÓÃOracleµÄCreate Table As Select (CTAS)Óï·¨À´¿½±´±í¸ñ
¡ôOracle9i×Ô´øµÄ±í¸ñÖØÐÂ×éÖ¯¹¤¾ß
ÒÔÏ£¬ÎÒÃÇÀ´¿´ÒÔÏÂSQLÓï¾äµÄµ÷ÓÅ¡£
SQLµ÷ÓÅ
OracleµÄSQLµ÷ÓÅÊÇÒ»¸ö¸´ÔÓµÄÖ÷Ì⣬ÉõÖÁÊÇÐèÒªÕû±¾ÊéÀ´½éÉÜOracle SQLµ÷ÓŵÄϸ΢²î±ð¡£²»¹ýÓÐһЩ»ù±¾µÄ¹æÔòÊÇÿ¸öOracle DBA¶¼ÐèÒª¸ú´ÓµÄ£¬ÕâЩ¹æÔò¿ÉÒÔ¸ÄÉÆËûÃÇϵͳµÄÐÔÄÜ¡£SQLµ÷ÓŵÄÄ¿±êÊǼòµ¥µÄ£º
¡ôÏû³ý²»±ØÒªµÄ´ó±íÈ«±íËÑË÷£º²»±ØÒªµÄÈ«±íËÑË÷µ¼Ö´óÁ¿²»±ØÒªµÄI/O£¬´Ó¶øÍÏÂýÕû¸öÊý¾Ý¿âµÄÐÔÄÜ¡£µ÷ÓÅר¼ÒÊ×ÏÈ»á¸ù¾Ý²éѯ·µ»ØµÄÐÐÊýÄ¿À´ÆÀ¼ÛSQL¡£ÔÚÒ»¸öÓÐÐòµÄ±íÖУ¬Èç¹û²éѯ·µ»ØÉÙÓÚ40%µÄÐУ¬»òÕßÔÚÒ»¸öÎÞÐòµÄ±íÖУ¬·µ»ØÉÙÓÚ7%µÄÐУ¬ÄÇôÕâ¸ö²éѯ¶¼¿ÉÒÔµ÷ÕûΪʹÓÃÒ»¸öË÷ÒýÀ´´úÌæÈ«±íËÑË÷¡£¶ÔÓÚ²»±ØÒªµÄÈ«±íËÑË÷À´Ëµ£¬×î³£¼ûµÄµ÷ÓÅ·½·¨ÊÇÔö¼ÓË÷Òý¡£¿ÉÒÔÔÚ±íÖмÓÈë±ê×¼µÄBÊ÷Ë÷Òý£¬Ò²¿ÉÒÔ¼ÓÈëbitmapºÍ»ùÓÚº¯ÊýµÄË÷Òý¡£Òª¾ö¶¨ÊÇ·ñÏû³ýÒ»¸öÈ«±íËÑË÷£¬Äã¿ÉÒÔ×Ðϸ¼ì²éË÷ÒýËÑË÷µÄI/O¿ªÏúºÍÈ«±íËÑË÷µÄ¿ªÏú£¬ËüÃǵĿªÏúºÍÊý¾Ý¿éµÄ¶ÁÈ¡ºÍ¿ÉÄܵIJ¢ÐÐÖ´ÐÐÓйأ¬²¢½«Á½Õß×÷¶Ô±È¡£ÔÚһЩÇé¿öÏ£¬Ò»Ð©²»±ØÒªµÄÈ«±íËÑË÷µÄÏû³ý¿ÉÒÔͨ¹ýÇ¿ÖÆʹÓÃÒ»¸öindexÀ´´ïµ½£¬Ö»ÐèÒªÔÚSQLÓï¾äÖмÓÈëÒ»¸öË÷ÒýµÄÌáʾ¾Í¿ÉÒÔÁË¡£
¡ôÔÚÈ«±íËÑË÷ÊÇÒ»¸ö×î¿ìµÄ·ÃÎÊ·½·¨Ê±£¬½«Ð¡±íµÄÈ«±íËÑË÷·Åµ½»º´æÖУ¬µ÷ÓÅר¼ÒÓ¦¸ÃÈ·±£ÓÐÒ»¸öרÃŵÄÊý¾Ý»º³åÓÃ×÷Ðлº³å¡£ÔÚOracle7ÖУ¬Äã¿ÉÒÔʹÓÃalter table xxx cacheÓï¾ä£¬ÔÚOracle8»òÒÔÉÏ£¬Ð¡±í¿ÉÒÔ±»Ç¿ÖÆΪ·Åµ½KEEP³ØÖлº³å¡£
¡ôÈ·±£×îÓŵÄË÷ÒýʹÓ㺶ÔÓÚ¸ÄÉƲéѯµÄËٶȣ¬ÕâÊÇÌرðÖØÒªµÄ¡£ÓÐʱOracle¿ÉÒÔÑ¡Ôñ¶à¸öË÷ÒýÀ´½øÐвéѯ£¬µ÷ÓÅר¼Ò±ØÐë¼ì²éÿ¸öË÷Òý²¢ÇÒÈ·±£OracleʹÓÃÕýÈ·µÄË÷Òý¡£Ëü»¹°üÀ¨bitmapºÍ»ùÓÚº¯ÊýµÄË÷ÒýµÄʹÓá£
¡ôÈ·±£×îÓŵÄJOIN²Ù×÷£ºÓÐЩ²éѯʹÓÃNESTED LOOP join¿ìһЩ£¬ÓÐЩÔòÊÇHASH join¿ìһЩ£¬ÁíÍâһЩÔòÊÇsort-merge join¸ü¿ì¡£
ÕâЩ¹æÔò¿´À´¼òµ¥£¬²»¹ýËüÃÇÕ¼SQLµ÷ÓÅÈÎÎñµÄ90%£¬²¢ÇÒËüÃÇÒ²ÎÞÐèÍêÈ«¶®µÃOracle SQLµÄÄÚ²¿ÔË×÷¡£ÒÔÏÂÎÒÃÇÀ´¼òµ¥¸ÅÀÀÒÔÏÂOracle SQLµÄÓÅ»¯¡£
ÎÒÃÇÊ×ÏȼòÒª²é¿´OracleµÄÅÅÐò£¬²¢ÇÒ¿´Ò»¿´ÅÅÐò²Ù×÷ÊÇÈçºÎÓ°ÏìÐÔÄܵġ£
µ÷ÕûOracleµÄÅÅÐò²Ù×÷
ÅÅÐòÊÇSQLÓï·¨ÖÐÒ»¸öСµÄ·½Ã棬µ«ºÜÖØÒª£¬ÔÚOracleµÄµ÷ÕûÖУ¬Ëü³£³£±»ºöÂÔ¡£µ±Ê¹ÓÃcreate index¡¢ORDER BY»òÕßGROUP BYµÄÓï¾äʱ£¬OracleÊý¾Ý¿â½«»á×Ô¶¯Ö´ÐÐÅÅÐòµÄ²Ù×÷¡£Í¨³££¬ÔÚÒÔϵÄÇé¿öÏÂOracle»á½øÐÐÅÅÐòµÄ²Ù×÷£º
ʹÓÃOrder byµÄSQLÓï¾ä
ʹÓÃGroup byµÄSQLÓï¾äÔÚ´´½¨Ë÷ÒýµÄʱºò½øÐÐtable joinʱ£¬ÓÉÓÚÏÖÓÐË÷ÒýµÄ²»×ã¶øµ¼ÖÂSQLÓÅ»¯Æ÷µ÷ÓÃMERGE SORT¡£
µ±ÓëOracle½¨Á¢ÆðÒ»¸ösessionʱ£¬ÔÚÄÚ´æÖоͻáΪ¸Ãsession·ÖÅäÒ»¸ö˽ÓеÄÅÅÐòÇøÓò¡£Èç¹û¸ÃÁ¬½ÓÊÇÒ»¸öרÓõÄÁ¬½Ó(dedicated connection)£¬ÄÇô¾Í»á¸ù¾Ýinit.oraÖÐsort_area_size²ÎÊýµÄ´óСÔÚÄÚ´æÖзÖÅäÒ»¸öProgram Global Area (PGA)¡£Èç¹ûÁ¬½ÓÊÇͨ¹ý¶àÏ̷߳þÎñÆ÷½¨Á¢µÄ£¬ÄÇôÅÅÐòµÄ¿Õ¼ä¾ÍÔÚlarge_poolÖзÖÅä¡£²»ÐÒµÄÊÇ£¬¶ÔÓÚËùÓеÄsession£¬ÓÃ×öÅÅÐòµÄÄÚ´æÁ¿¶¼±ØÐëÊÇÒ»ÑùµÄ£¬ÎÒÃDz»ÄÜΪÐèÒª¸ü´óÅÅÐòµÄ²Ù×÷·ÖÅä¶îÍâµÄÅÅÐòÇøÓò¡£Òò´Ë£¬Éè¼ÆÕß±ØÐë×÷³öÒ»¸öƽºâ£¬ÔÚ·ÖÅä×ã¹»µÄÅÅÐòÇøÓòÒÔ±ÜÃâ·¢Éú´óµÄÅÅÐòÈÎÎñʱ³öÏÖ´ÅÅÌÅÅÐò£¨disk sorts£©µÄͬʱ£¬¶ÔÓÚÄÇЩ²¢²»ÐèÒª½øÐкܴóÅÅÐòµÄÈÎÎñ£¬¾Í»á³öÏÖһЩÀË·Ñ¡£µ±È»£¬µ±ÅÅÐòµÄ¿Õ¼äÐèÇ󳬳öÁËsort_area_sizeµÄ´óСʱ£¬Õâʱ½«»áÔÚTEMP±í¿Õ¼äÖзÖÒ³½øÐдÅÅÌÅÅÐò¡£´ÅÅÌÅÅÐòÒª±ÈÄÚ´æÅÅÐò´ó¸ÅÂý14,000±¶¡£
ÉÏÃæÎÒÃÇÒѾÌáµ½£¬Ë½ÓÐÅÅÐòÇøÓòµÄ´óСÊÇÓÐinit.oraÖеÄsort_area_size²ÎÊý¾ö¶¨µÄ¡£Ã¿¸öÅÅÐòËùÕ¼ÓõĴóСÓÉinit.oraÖеÄsort_area_retained_size²ÎÊý¾ö¶¨¡£µ±ÅÅÐò²»ÄÜÔÚ·ÖÅäµÄ¿Õ¼äÖÐÍê³Éʱ£¬¾Í»áʹÓôÅÅÌÅÅÐòµÄ·½Ê½£¬¼´ÔÚOracleʵÀýÖеÄÁÙʱ±í¿Õ¼äÖнøÐС£
´ÅÅÌÅÅÐòµÄ¿ªÏúÊǺܴóµÄ£¬Óм¸¸ö·½ÃæµÄÔÒò¡£Ê×ÏÈ£¬ºÍÄÚ´æÅÅÐòÏà±È½Ï£¬ËüÃÇÌرðÂý£»¶øÇÒ´ÅÅÌÅÅÐò»áÏûºÄÁÙʱ±í¿Õ¼äÖеÄ×ÊÔ´¡£Oracle»¹±ØÐë·ÖÅ仺³å³Ø¿éÀ´±£³ÖÁÙʱ±í¿Õ¼äÖеĿ顣ÎÞÂÛʲôʱºò£¬ÄÚ´æÅÅÐò¶¼±È´ÅÅÌÅÅÐòºÃ£¬´ÅÅÌÅÅÐò½«»áÁîÈÎÎñ±äÂý£¬²¢ÇÒ»áÓ°ÏìOracleʵÀýµÄµ±Ç°ÈÎÎñµÄÖ´ÐС£»¹ÓУ¬¹ý¶àµÄ´ÅÅÌÅÅÐò½«»áÁîfree buffer waitsµÄÖµ±ä¸ß£¬´Ó¶øÁîÆäËüÈÎÎñµÄÊý¾Ý¿éÓÉ»º³åÖÐÒÆ×ß¡£
½Ó×Å£¬ÈÃÎÒÃÇ¿´Ò»ÏÂOracleµÄ¾ºÕù£¬²¢ÇÒ¿´Ò»Ï±íµÄ´æ´¢²ÎÊýµÄÉèÖÃÊÇÈçºÎÓ°ÏìSQL UPDATEºÍINSERTÓï¾äµÄÐÔÄܵġ£
µ÷ÕûOracleµÄ¾ºÕù
OracleµÄÆäÖÐÒ»¸öÓŵãʱËü¿ÉÒÔ¹ÜÀíÿ¸ö±í¿Õ¼äÖеÄ×ÔÓɿռ䡣Oracle¸ºÔð´¦Àí±íºÍË÷ÒýµÄ¿Õ¼ä¹ÜÀí£¬ÕâÑù¾Í¿ÉÒÔÈÃÎÒÃÇÎÞÐ趮µÃOracleµÄ±íºÍË÷ÒýµÄÄÚ²¿ÔË×÷¡£²»¹ý£¬¶ÔÓÚÓоÑéµÄOracleµ÷ÓÅר¼ÒÀ´Ëµ£¬ËûÐèÒª¶®µÃOracleÊÇÈçºÎ¹ÜÀí±íµÄextentºÍ¿ÕÏеÄÊý¾Ý¿é¡£¶ÔÓÚµ÷ÕûÓµÓиߵÄinsert»òÕßupdateµÄϵͳÀ´Ëµ£¬ÕâÊǷdz£ÖØÒªµÄ¡£
Òª¾«Í¨¶ÔÏóµÄµ÷Õû£¬ÄãÐèÒª¶®µÃfreelistsºÍfreelist×éµÄÐÐΪ£¬ËüÃǺÍpctfree¼°pctused²ÎÊýµÄÖµÓйء£ÕâЩ֪ʶ¶ÔÓÚÆóÒµ×ÊÔ´¼Æ»®£¨ERP£©µÄÓ¦ÓÃÊÇÌرðÖØÒªµÄ£¬ÒòΪÔÚÕâЩӦÓÃÖУ¬²»ÕýÈ·µÄ±íÉèÖÃͨ³£ÊÇDMLÓï¾äÖ´ÐÐÂýµÄÔÒò¡£
¶ÔÓÚ³õѧÕßÀ´Ëµ£¬×î³£¼ûµÄ´íÎóÊÇÈÏΪĬÈϵÄOracle²ÎÊý¶ÔÓÚËùÓеĶÔÏó¶¼ÊÇ×î¼ÑµÄ¡£³ý·Ç´ÅÅ̵ÄÏûºÄ²»ÊÇÒ»¸öÎÊÌ⣬·ñÔòÔÚÉèÖñíµÄpctfreeºÍpctused²ÎÊýʱ£¬¾Í±ØÐ뿼ÂÇƽ¾ùµÄÐг¤ºÍÊý¾Ý¿âµÄ¿é´óС£¬ÕâÑù¿ÕµÄ¿é²Å»á±»ÓÐЧµØ·Åµ½freelistsÖС£µ±ÕâЩÉèÖò»Õýȷʱ£¬ÄÇЩµÃµ½µÄfreelistsÒ²ÊÇ¡°dead¡±¿é£¬ÒòΪËüÃÇûÓÐ×ã¹»µÄ¿Õ¼äÀ´´æ´¢Ò»ÐУ¬ÕâÑù½«»áµ¼ÖÂÃ÷ÏԵĴ¦ÀíÑÓ³Ù¡£
Freelists¶ÔÓÚÓÐЧµØÖØÐÂʹÓÃOracle±í¿Õ¼äÖеĿռäÊǺÜÖØÒªµÄ£¬ËüºÍpctfree¼°pctusedÕâÁ½¸ö´æ´¢²ÎÊýµÄÉèÖÃÖ±½ÓÏà¹Ø¡£
ͨ¹ý½«pctusedÉèÖÃΪһ¸ö¸ßµÄÖµ£¬ÕâʱÊý¾Ý¿â¾Í»á¾¡¿ìµØÖØÐÂʹÓÿ顣²»¹ý£¬¸ßÐÔÄܺÍÓÐЧµØÖØÐÂʹÓñíµÄ¿éÊǶÔÁ¢µÄ¡£ÔÚµ÷ÕûOracleµÄ±í¸ñºÍË÷Òýʱ£¬ÐèÒªÈÏÕ濼ÂǾ¿¾¹ÐèÒª¸ßÐÔÄÜ»¹ÊÇÓÐЧµÄ¿Õ¼äÖØÓ㬲¢ÇҾݴËÀ´ÉèÖñíµÄ²ÎÊý¡£ÒÔÏÂÎÒÃÇÀ´¿´Ò»ÏÂÕâЩfreelistsÊÇÈçºÎÓ°ÏìOracleµÄÐÔÄܵġ£
µ±ÓÐÒ»¸öÇëÇóÐèÒª²åÈëÒ»Ðе½±í¸ñÖÐʱ£¬Oracle¾Í»áµ½freelistÖÐÑ°ÕÒÒ»¸öÓÐ×ã¹»µÄ¿Õ¼äÀ´ÈÝÄÉÒ»ÐеĿ顣ÄãÒ²ÐíÖªµÀ£¬freelist´®ÊÇ·ÅÔÚ±í¸ñ»òÕßË÷ÒýµÄµÚÒ»¸ö¿éÖУ¬Õâ¸ö¿éÒ²±»³ÆΪ¶ÎÍ·£¨segment header£©¡£pctfreeºÍpctused²ÎÊýµÄΨһĿµÄ¾ÍÊÇΪÁË¿ØÖÆ¿éÈçºÎÔÚfreelistsÖнø³ö¡£ËäÈ»freelist linkºÍunlinkÊǼòµ¥µÄOracle¹¦ÄÜ£¬²»¹ýÉèÖÃfreelist link(pctused)ºÍunlink(pctfree)¶ÔOracleµÄÐÔÄÜȷʵÓÐÓ°Ïì¡£
ÓÉDBAµÄ»ù±¾ÖªÊ¶ÖªµÀ£¬pctfree²ÎÊýÊÇ¿ØÖÆfreelist un-linksµÄ£¨¼´½«¿éÓÉfreelistsÖÐÒƳý£©¡£ÉèÖÃpctfree=10Òâζ×Åÿ¸ö¿é¶¼±£Áô10%µÄ¿Õ¼äÓÃ×÷ÐÐÀ©Õ¹¡£pctused²ÎÊýÊÇ¿ØÖÆfreelist re-linksµÄ¡£ÉèÖÃpctused=40Òâζ×ÅÖ»ÓÐÔÚ¿éµÄʹÓõÍÓÚ40%ʱ²Å»á»Øµ½±í¸ñµÄfreelistsÖС£
Ðí¶àÐÂÊÖ¶ÔÓÚÒ»¸ö¿éÖØлص½freelistsºóµÄ´¦Àí¶¼ÓÐЩÎó½â¡£Æäʵ£¬Ò»µ©ÓÉÓÚÒ»¸öɾ³ýµÄ²Ù×÷¶øÁî¿é±»ÖØмÓÈëµ½freelistÖУ¬Ëü½«»áÒ»Ö±±£ÁôÔÚfreelistÖм´Ê¹¿Õ¼äµÄʹÓó¬¹ýÁË60%£¬Ö»ÓÐÔÚµ½´ïpctfreeʱ²Å»á½«Êý¾Ý¿éÓÉfreelistÖÐÒÆ×ß¡£
±í¸ñºÍË÷Òý´æ´¢²ÎÊýÉèÖõÄÒªÇó×ܽá
ÒÔϵÄһЩ¹æÔòÊÇÓÃÀ´ÉèÖÃfreelists,freelistgroups,pctfreeºÍpctused´æ´¢²ÎÊýµÄ¡£ÄãÒ²ÖªµÀ£¬pctusedºÍpctfreeµÄÖµÊÇ¿ÉÒÔºÜÈÝÒ×µØͨ¹ýalter tableÃüÁîÐ޸ĵģ¬Ò»¸öºÃµÄDBAÓ¦¸ÃÖªµÀÈçºÎÉèÖÃÕâЩ²ÎÊýµÄ×î¼ÑÖµ¡£
ÓÐЧµØʹÓÿռäºÍ¸ßÐÔÄÜÖ®¼äÊÇÓÐì¶ÜµÄ£¬¶ø±í¸ñµÄ´æ´¢²ÎÊý¾ÍÊÇ¿ØÖÆÕâ¸ö·½ÃæµÄì¶Ü£º
¡ô¶ÔÓÚÐèÒªÓÐЧµØÖØÐÂʹÓÿռ䣬¿ÉÒÔÉèÖÃÒ»¸ö¸ßµÄpctusedÖµ£¬²»¹ý¸±×÷ÓÃÊÇÐèÒª¶îÍâµÄI/O¡£Ò»¸ö¸ßµÄpctusedÖµÒâζ×ÅÏà¶ÔÂúµÄ¿é¶¼»á·Åµ½freelistÖС£Òò´Ë£¬ÕâЩ¿éÔÚÔÙ´ÎÂú֮ǰֻ¿ÉÒÔ½ÓÊܼ¸ÐмǼ£¬´Ó¶øµ¼Ö¸ü¶àµÄI/O¡£
¡ô×·Çó¸ßÐÔÄܵĻ°£¬¿ÉÒÔ½«pctusedÉèÖÃΪһ¸öµÍµÄÖµ£¬ÕâÒâζ×ÅOracle²»»á½«Êý¾Ý¿é·Åµ½freelistsÖÐÖ±µ½Ëü¼¸ºõÊǿյġ£
ÄÇô¿é½«¿ÉÒÔÔÚÂú֮ǰ½ÓÊÕ¸ü¶àµÄÐУ¬Òò´Ë¿ÉÒÔ¼õÉÙ²åÈë²Ù×÷µÄI/O¡£Òª¼ÇסOracleÀ©Õ¹Ð¿éµÄÐÔÄÜÒª±ÈÖØÐÂʹÓÃÏÖÓеĿé¸ß¡£¶ÔÓÚOracleÀ´Ëµ£¬À©Õ¹Ò»¸ö±í±È¹ÜÀífreelistsÏûºÄ¸üÉÙµÄ×ÊÔ´¡£
ÈÃÎÒÃÇÀ´»Ø¹ËÒ»ÏÂÉèÖöÔÏó´æ´¢²ÎÊýµÄһЩ³£¼û¹æÔò£º
¡ô¾³£½«pctusedÉèÖÃΪ¿ÉÒÔ½ÓÊÕÒ»ÌõÐÂÐС£¶ÔÓÚ²»ÄܽÓÊÜÒ»ÐеÄfree blocks¶ÔÓÚÎÒÃÇÀ´ËµÊÇûÓÐÓõġ£Èç¹ûÕâÑù×ö£¬½«»áÁîOracleµÄÐÔÄܱäÂý£¬ÒòΪOracle½«ÔÚÀ©Õ¹±íÀ´µÃµ½Ò»¸ö¿ÕµÄ¿é֮ǰ£¬Æóͼ¶ÁÈ¡5¸ö¡°dead¡±µÄfree block ¡£
¡ô±í¸ñÖÐchained rowsµÄ³öÏÖÒâζ×ÅpctfreeÌ«µÍ»òÕßÊÇdb_block_sizeÌ«ÉÙ¡£ÔںܶàÇé¿öÏ£¬RAWºÍLONG RAWÁж¼ºÜ¾Þ´ó£¬ÒÔÖÁ³¬¹ýÁËOracleµÄ×î´ó¿éµÄ´óС£¬Õâʱchained rowsÊDz»¿ÉÒÔ±ÜÃâµÄ¡£
¡ôÈç¹ûÒ»¸ö±íÓÐͬʱ²åÈëµÄSQLÓï¾ä£¬ÄÇôËüÐèÒªÓÐͬʱɾ³ýµÄÓï¾ä¡£ÔËÐе¥Ò»¸öÒ»¸öÇå³ýµÄ¹¤×÷½«»á°ÑÈ«²¿µÄ¿ÕÏпé·Åµ½Ò»¸öfreelistÖУ¬¶øûÓÐÆäËü°üº¬ÓÐÈκοÕÏпéµÄfreelists³öÏÖ¡£
¡ôfreelist²ÎÊýÓ¦¸ÃÉèÖÃΪ±í¸ñͬʱ¸üеÄ×î´óÖµ¡£ÀýÈ磬Èç¹ûÔÚÈκÎʱºò£¬Ä³¸ö±í×î¶àÓÐ20¸öÓû§Ö´ÐвåÈëµÄ²Ù×÷£¬ÄÇô¸Ã±íµÄ²ÎÊýÓ¦¸ÃÉèÖÃΪfreelists=20¡£
Ó¦¼ÇסµÄÊÇfreelist groups²ÎÊýµÄÖµÖ»ÊǶÔÓÚOracle Parallel ServerºÍReal Application Clusters²ÅÊÇÓÐÓõġ£¶ÔÓÚÕâÀàOracle£¬freelist groupsÓ¦¸ÃÉèÖÃΪ·ÃÎʸñí¸ñµÄOracle Parallel ServerʵÀýµÄÊýÄ¿¡£