|
¡á Top SQL Æ©´×ÀÇ Çʿ伺
Áö³ ȸ±îÁö ½Ç½Ã°£ Wait Event ¸ð´ÏÅ͸µ°ú À̺¥Æ®º° ¿øÀκм®¿¡ ´ëÇؼ °£´ÜÈ÷ »ìÆ캸¾Ò´Ù. ÀϽÃÀû ¼º´ÉÀå¾Ö ½Ã À绡¸® ¿øÀÎÀ» ã¾Æ³»´Â °Íµµ Áß¿äÇÏÁö¸¸ º¸´Ù ¹Ù¶÷Á÷ÇÑ °ÍÀº ÀÌ·¯ÇÑ ¼º´É¹®Á¦¸¦ »çÀü¿¡ ÃÖ´ëÇÑ ¿¹¹æÇÏ´Â °ÍÀÓÀº µÎ¸»ÇÒ ÇÊ¿äµµ ¾ø´Ù. ¿À¶óŬ ¼º´É¹®Á¦¸¦ ´Ù·ç´Âµ¥ ÀÖ¾î °Á¶ÇÏ°í ½ÍÀº ÇÑ°¡Áö´Â ½Ã½ºÅÛ ÀÚ¿øÀÇ ¹èºÐÀ» º¯°æÇϰųª Áõ°¡¸¦ °í·ÁÇϱâ Àü¿¡, ºÒÇÊ¿äÇÑ ÀÛ¾÷À» ÃÖ¼ÒÈÇÔÀ¸·Î½á ÀÚ¿ø¿ä±¸ Ƚ¼ö¿Í ÀÚ¿øÁ¡À¯ ½Ã°£À» ÁÙ¿©ÁÖ´Â ³ë·ÂÀÌ ¼±ÇàµÇ¾î¾ß ÇÑ´Ù´Â Á¡ÀÌ´Ù. Wait Event¿¡ ´ëÇÑ ¸ð´ÏÅ͸µ°ú ºÐ¼®ÀÌ DBMSÀÇ ÀÚ¿ø¿¡ ´ëÇÑ °æÇÕ°ú °ü·ÃµÈ ¼º´É¹®Á¦¸¦ ÆľÇÇϴµ¥ À¯¿ëÇÑ ¹æ¹ýÀÓ¿¡ Ʋ¸²¾øÁö¸¸, ÀÌ °°Àº Á¤º¸´Â µ¥ÀÌÅͺ£À̽º ȤÀº ±× ÇÏÀ§ ·¹º§ÀÇ ±¸Á¶Àû ºñÈ¿À²¼ºÀ» µå·¯³»¾îÁÙ »Ó ¾ÖÇø®ÄÉÀÌ¼Ç ·¹º§ÀÇ ¹®Á¦¸¦ Á÷Á¢ÀûÀ¸·Î ¾Ë·ÁÁÖÁö´Â ¾Ê´Â´Ù. °£´ÜÈ÷ ¸»ÇÏÀÚ¸é, DBMS Æ©´×À» À§ÇØ Á¤¼ºÀ» ½ñ±â ÀÌÀü¿¡ ¾ÖÇø®ÄÉÀÌ¼Ç Æ©´×¿¡ ´õ ¸¹Àº ÅõÀÚ¸¦ Ç϶ó´Â °ÍÀÌ´Ù. ÀÌ·± °üÁ¡¿¡¼ DBA°¡ ºñ±³Àû ¼Õ½±°Ô ¼öÇàÇÒ ¼ö ÀÖ´Â °ÍÀÌ ¿À¶óŬ ¸Þ¸ð¸®·ÎºÎÅÍ ¾Ç¼º SQLÀ» ÃßÃâÇÏ¿© Æ©´×ÇÏ´Â Top SQL Æ©´×ÀÌ´Ù.
¡á Top SQL ÃßÃâ±âÁØ
»ç¿ëÀڷκÎÅÍ ¿äûµÇ¾î ¿À¶óŬ ³»¿¡¼ 󸮵Ǵ ¸ðµç SQLÀº ¿À¶óŬÀÇ °øÀ¯ ¸Þ¸ð¸® ¿µ¿ª °¡¿îµ¥ shared pool³»¿¡ ij½¬ µÇ¾î Áö¸ç ÀÌ·¸°Ô ij½¬ µÇ¾î ÀÖ´Â SQL°ú °ü·Ã Åë°èÁ¤º¸´Â V$SQL ¶Ç´Â V$SQLAREA ºä¸¦ ÅëÇؼ Á¶È¸ÇÒ ¼ö ÀÖ´Ù. À̶§, Top SQLÀ» ÃßÃâÇϴµ¥ Áß¿äÇÏ°Ô »ç¿ëµÇ´Â Ç׸ñÀº buffer_gets, disk_reads, executions, rows_processed µîÀ̸ç ÀϹÝÀûÀ¸·Î ¾Æ·¡¿Í °°Àº ±âÁØÀ¸·Î Top SQLÀ» ÃßÃâÇÑ´Ù.
¢¹ Buffer gets ¼öÄ¡°¡ ³ôÀº SQL
Buffer getsÀº ÇØ´ç SQLÀÌ Ã³¸®µÇ´Â °úÁ¤¿¡¼ ¾×¼¼½ºÇÑ ¸Þ¸ð¸® ºí·ÏÀÇ ¼ö(Logical IO)¸¦ ÀǹÌÇÑ´Ù. ¹°·Ð ÀÌ °ªÀÌ ³ô´Ù°í Çؼ ¹«Á¶°Ç ¾Ç¼º SQLÀÓÀ» ÀǹÌÇÏ´Â °ÍÀº ¾Æ´Ï´Ù. Áï, ÀÌ·¯ÇÑ SQLµé Áß¿¡´Â ½ÇÁ¦·Î ¿ä±¸µÇ´Â ÀÛ¾÷·®ÀÌ ¸¹¾Æ¼ ¾×¼¼½º ºí·Ï¼ö°¡ ¸¹Àº SQLµµ ÀÖÀ» °ÍÀÌ¸ç ºÒÇÊ¿äÇÑ Ã³¸®¸¦ ¼öÇàÇÏ´À¶ó ¾×¼¼½º ºí·Ï¼ö°¡ ¸¹Àº SQLµµ ÀÖÀ» °ÍÀÌ´Ù. ¾î´À °æ¿ìÀ̵ç ÀÌ SQLµéÀÌ ÇöÀç ¿À¶óŬ ¼¹ö¿¡ ºÎÇϸ¦ ¸¹ÀÌ À¯¹ßÇÏ°í ÀÖ´Â SQLµéÀ̶ó´Â °Í¸¸Àº ºÐ¸íÇÏ¸ç »ç¼ÒÇÑ ºñÈ¿À²Àû ¿ä¼Ò¿¡ ÀÇÇؼµµ ¼¹ö¿¡ Å« ¿µÇâÀ» ¹ÌÄ¥ ÀáÀçÀûÀÎ °¡´É¼ºÀÌ ÀÖ´Â SQLµéÀ̹ǷΠÀÏÂ÷ÀûÀ¸·Î Á¡°ËÇØ º¼ ÇÊ¿ä°¡ ÀÖ´Ù.
¾Ç¼º SQL¿©ºÎ¸¦ ÆÇ´ÜÇϱâ À§ÇÑ Buffer getsÀÇ ¼öÄ¡¿¡ Àý´ëÀûÀÎ ±âÁØÀº ¾øÀ¸¸ç ½Ã½ºÅÛÀÇ µ¥ÀÌÅÍ ±Ô¸ð¿Í Æ®·£Àè¼Ç·®¿¡ µû¶ó ´Ù¸£´Ù. buffer gets°ªÀ» ±âÁØÀ¸·Î ¿ª¼øÀ¸·Î Á¤·ÄÇÑ ÈÄ ÆÐÅÏÀ» »ìÆì ÀûÀýÇÑ ÃßÃâ±âÁØÀ» ¼±ÅÃÇÏ´Â °ÍÀÌ ÁÁÀ» °ÍÀÌ´Ù. ¸¸ÀÏ, »óÀ§ ¸î °³ÀÇ SQLµé°ú ³ª¸ÓÁö SQLµé °£ÀÇ buffer getsÀÇ ÆíÂ÷°¡ ¸Å¿ì Å©°Ô ³ªÅ¸³´Ù¸é »óÀ§ ¸î °³ÀÇ SQL¿¡ ´ëÇؼ¸¸ Æ©´×À» ¼öÇàÇØ Á־ Å« È¿°ú¸¦ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ÀϹÝÀûÀ¸·Î ½Ã½ºÅÛ¿¡¼ ¼öÇàµÇ´Â SQL °¡¿îµ¥ ½É°¢ÇÑ ºÎÇϸ¦ ¾ß±âÇÏ´Â SQLÀº ¼Ò¼ö¿¡ ºÒ°úÇÑ °æ¿ì°¡ ¸¹À¸¸ç µÚ¿¡ ±â¼úµÉ ´Ù¸¥ Á¶°Çµé°ú Á¶ÇÕÇÏ¿© ÃÖ´ë Top 50°Ç Á¤µµ¸¦ ÃßÃâÇÏ¿© È¿À²¼ºÀ» °ËÁõÇÏ°í Æ©´×À» ÅëÇØ °³¼±ÇÏ´Â ÀÛ¾÷À» ¼öÇàÇÏ¿© ÁÖ¸é ÃæºÐÇÏ´Ù.
¢¹Buffer gets/Execution ¼öÄ¡°¡ ³ôÀº SQL
SQLÀÇ ´ÜÀ§ ¼öÇà´ç buffer gets ¼öÄ¡¸¦ ÀǹÌÇÑ´Ù. ´ÜÀ§ ¼öÇà´ç buffer gets °ªÀÌ ³ô´Ù´Â °ÍÀº ÇØ´ç SQLÀÇ Ã³¸®°¡ ºñÈ¿À²ÀûÀÏ °¡´É¼ºÀÌ ³ôÀ½À» ÀǹÌÇÑ´Ù. ¾×¼¼½º ºí·Ï¼ö°¡ ºñÁ¤»óÀûÀ¸·Î ¸¹´Ù´Â °ÍÀº rows_processed °ª°ú ºñ±³ÇÏ¿© »ó´ëÀûÀ¸·Î Æò°¡µÇ¾î¾ß ÇÒ ºÎºÐÀÌ´Ù. ½ÇÁ¦·Î ¹ÝȯÇÏ´Â ·Î¿ì¼ö°¡ ¸Å¿ì ¸¹Àº ¹èÄ¡¼º SQLÀ̰ųª ȤÀº ¹ÝȯµÇ´Â ·Î¿ì¼ö°¡ 1°ÇÀÌ¶óµµ Group FunctionÀÌ »ç¿ëµÈ Summary¼º SQLÀ̶ó¸é 󸮰úÁ¤¿¡¼ ¸¹Àº ¼öÀÇ ºí·ÏÀ» ¾×¼¼½ºÇÏ´Â °ÍÀº ºÒ°¡ÇÇÇϸç ÀÌ ÀÚü°¡ ¹®Á¦°¡ µÉ ¼ö´Â ¾ø±â ¶§¹®ÀÌ´Ù.
¢¹Execution ¼öÄ¡°¡ ³ôÀº SQL
Executions´Â ÇØ´ç SQLÀÌ ¼öÇàµÈ Ƚ¼ö¸¦ ÀǹÌÇÑ´Ù. ¼öÇàȽ¼ö°¡ ÀæÀº SQLÀº buffer gets°¡ ³ôÀ» °æ¿ì°¡ ¸¹´Ù. ÀϹÝÀûÀ¸·Î ½Ê¸¸ ~ ¹é¸¸ ȸ ÀÌ»ó ºó¹øÇÏ°Ô ¼öÇàµÇ´Â SQLÀ̶ó¸é buffer gets/executions °ªÀÌ 2ÀÚ¸® ¼ö À̳»ÀÇ °ªÀ» ³ªÅ¸³»¾î¾ß Á¤»óÀÌ¸ç ´ÜÀ§ ¼öÇà´ç ¼Óµµ´Â 0.1ÃÊ À̳»·Î ¸Å¿ì »¡¶ó¾ß ÇÑ´Ù. µû¶ó¼, ÀÌ·¯ÇÑ SQLÀÇ °æ¿ì SQL´ÜÀ§·Î º¸¸é Æ©´×ÀÇ È¿°ú¸¦ ü°¨Çϱ⵵ ¾î·Æ°í Çʿ伺À» ´À³¢Áö ¸øÇÒ ¼öµµ ÀÖÀ¸³ª Æ©´×À» ÅëÇØ ¾ÆÁÖ ÀûÀº Â÷ÀÌ¶óµµ °³¼±À» °¡Á®¿Ã ¼ö ÀÖ´Ù¸é ½Ã½ºÅÛ ÀüüÀûÀÎ °üÁ¡¿¡¼´Â ¸Å¿ì Å« È¿°ú¸¦ °¡Á®´Ù ÁÙ ¼ö ÀÖ´Ù´Â Á¡ÀÌ Áß¿äÇÏ´Ù. ÇÏ·ç¿¡ ¹é¸¸¹ø ¼öÇàµÇ´Â SQL¿¡ ´ëÇÏ¿© 0.01Ãʸ¦ °³¼±ÇÑ´Ù¸é ½Ã½ºÅÛ ½Ã°£À¸·Î ÇÏ·ç¿¡ Àϸ¸Ãʸ¦ Àý¾àÇÑ ¼ÀÀÌ µÉ °ÍÀÌ´Ù. ÀÌ·¯ÇÑ SQL¿¡ ´ëÇؼ´Â ÇöÀç ºü¸£°Ô ¼öÇàµÇ°í ÀÖ´Ù°í Çصµ ´õ ºü¸£°Ô ó¸®ÇÒ ¿©Áö°¡ ¾ø´ÂÁö Á¡°ËÇÏ°í °¡´ÉÇÑ ¸ðµç ¹æ¾ÈÀ» µ¿¿øÇÏ¿© °³¼±½ÃÅ°µµ·Ï ³ë·ÂÇØ¾ß ÇÑ´Ù.
¢¹disk_reads ¼öÄ¡°¡ ³ôÀº SQL
disk_reads´Â SQLÀÌ Ã³¸®µÇ´Â °úÁ¤¿¡¼ ¹°¸®ÀûÀÎ IO¸¦ ÅëÇØ ¾×¼¼½ºÇÑ ºí·ÏÀÇ ¼ö¸¦ ÀǹÌÇÑ´Ù. ¹°¸®Àû IOÀÇ ¹ß»ý¿©ºÎ´Â ¿øÇÏ´Â ºí·ÏÀÌ ¸Þ¸ð¸®¿¡ ij½¬µÇ¾î ÀÖ´ÂÁö ¿©ºÎ¿¡ µû¶ó ´Þ¶óÁö¹Ç·Î ¼öÇàµÇ´Â Ƚ¼ö¿Í ¼öÇàµÇ´Â ½Ã°£´ëÀÇ µ¥ÀÌÅͺ£À̽º ij½¬ »óȲ¿¡ µû¶ó À¯µ¿ÀûÀ̶ó°í ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª, buffer getsÀÇ °ª°ú ºñ±³ÇÏ¿© disk_readsÀÇ ºñÀ²ÀÌ ³ôÀº SQLÀº Full ScanÀ» ¼öÇàÇÏ´Â SQLÀÏ °¡´É¼ºÀÌ Å«µ¥ ±× ÀÌÀ¯´Â Full ScanÀ» ÅëÇØ ¾×¼¼½ºµÇ´Â ºí·ÏµéÀº ±âº»ÀûÀ¸·Î DB buffer CacheÀÇ LRU ¾Ë°í¸®Áò¿¡ ÀÇÇØ °ü¸®µÇÁö ¾ÊÀ¸¹Ç·Î ÀÛ¾÷ ÈÄ¿¡ °ð¹Ù·Î ¸Þ¸ð¸®·ÎºÎÅÍ ¹Ð·Á³ª ¹ö¸± °¡´É¼ºÀÌ ³ô±â ¶§¹®ÀÌ´Ù. ¹Ý¸é¿¡ À妽º¸¦ ÅëÇÏ¿© ¾×¼¼½ºÇÏ´Â °æ¿ì, ÀÏ»óÀûÀ¸·Î ¾×¼¼½ºµÇ´Â Å×ÀÌºí¿¡ ´ëÇؼ´Â À妽ºÀÇ root block°ú branch blockÀº Ç×»ó ¸Þ¸ð¸®¿¡ ij½¬ µÇ¾î ÀÖÀ» È®·üÀÌ ³ôÀ¸¹Ç·Î ¹°¸®Àû IO¸¦ À¯¹ßÇÏ´Â ºñÀ²ÀÌ ³·À» ¼ö ¹Û¿¡ ¾ø´Ù.
¡á Top SQL ÃßÃâ±âÁØ
±ÛÀ» ¸Î±â Àü¿¡ ¸¶Áö¸·À¸·Î ¾ð±ÞÇÏ°í ½ÍÀº °Í Çϳª´Â, ¹®Á¦°¡ ¹ß»ýÇßÀ» ¶§ ¹®Á¦ÀÇ ¿øÀÎÀÌ bug·Î ÀÎÇÑ °ÍÀÏ °¡´É¼ºÀ» Ç×»ó ¿°µÎ¿¡ µÎ¾î¾ß ÇêµÈ °í»ýÀ» ´úÇÑ´Ù´Â °ÍÀÌ´Ù. ¿À¶óŬµµ »ç¶÷ÀÌ ¸¸µç ÇÁ·Î±×·¥À̹ǷΠ¹ö±×°¡ ¾øÀ» ¼ö ¾øÀ¸³ª ´ÙÇàÈ÷ ¿À¶óŬÀÇ ¹ö±× ¹× ÆÐÄ¡ °ü¸®´Â ¸Å¿ì ÈǸ¢ÇÑ ÆíÀÌ´Ù. ¿À¶óŬ ¸ÞŸ¸µÅ©¸¦ È°¿ëÇÏ¿© À¯»çÇÑ ¹®Á¦°¡ º¸°íµÈ ÀûÀº ¾ø´ÂÁö °ü·Ã ¹ö±×¿¡ ´ëÇÑ Á¤º¸´Â ¾ø´ÂÁö »ìÆ캸¾Æ¾ß Çϸç, Æò¼Ò¿¡ Á¤±âÀûÀ¸·Î ÆÐÄ¡ ¹× ¹öÀü °ü¸®¸¦ ÇØÁÖ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.
¿À¶óŬ ½Ã½ºÅÛÀ» ¿î¿µÇÏ´Ù º¸¸é Çö½Ç¿¡¼´Â ´Ù¾çÇÑ ¹®Á¦°¡ º¹ÀâÇÏ°Ô ¾ôÇô ³ªÅ¸³ª¹Ç·Î ¸í¹éÇÑ ¿øÀÎÀ» ÆľÇÇϱⰡ ½±Áö ¾ÊÀ» ¶§°¡ ¸¹Áö¸¸, ¿î¿µ ½Ã ÀÚ½ÅÀÇ ½Ã½ºÅÛ¿¡¼ ÀÚÁÖ ¹ß»ýÇÏ´Â Wait ÆÐÅÏ ¶ÇÇÑ ºÐ¸íÈ÷ Á¸ÀçÇϹǷΠ±½Àº °¡ÁöµéºÎÅÍ Çϳª¾¿ ÀÌÇØÇÏ°í ÇØ°áÇØ ³ª°¡´Ù º¸¸é ¿À¶óŬÀÌ ¿ì¸®°¡ º¸ÀÎ ¾ÖÁ¤¿¡ º¸´äÇØÁÙ ³¯ÀÌ ¿Ã °ÍÀ̶ó ¹Ï´Â´Ù. Áö¸é °ü°è»ó OPS(RAC) °ü·Ã WaitÀ» ºñ·ÔÇÑ ±âŸ Wait À̺¥Æ®¿¡ ´ëÇØ ´Ù·çÁö ¸øÇÑ Á¡, ±×¸®°í °¢ Wait À̺¥Æ®º°·Î Á»´õ Ä£ÀýÇÑ ¼³¸í°ú »ç·Ê¸¦ Á¦½ÃÇÏÁö ¸øÇÑ Á¡ÀÌ ¾Æ½¬¿òÀ¸·Î ³²Áö¸¸, ´©±¸µç ¾ÆÁÖ ÀÛÀº °Í Çϳª¶óµµ ÀÌ ±ÛÀ» ÅëÇØ »õ·ÎÀÌ ¾òÀ» ¼ö ÀÖ¾ú´Ù¸é ±× ÀÌ»ó ¹Ù¶ö °ÍÀº ¾ø´Ù.
|