| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 11. À妽º | Fast Forward | Next |
PostgreSQL¿¡¼´Â À妽ºÀÇ º¸¼ö³ª Æ©´×Àº ÇÊ¿ä ¾øÁö¸¸, ¾î´À À妽º°¡ ½ÇÁ¦ÀÇ Äõ¸®·Î »ç¿ëµÇ°í ÀÖ´ÂÁö È®ÀÎÇÏ´Â °ÍÀº ¿ª½Ã Áß¿äÇÕ´Ï´Ù. °³°³ÀÇ Ä¿¸Çµå¿¡¼ÀÇ À妽ºÀÇ »ç¿ë »óȲÀº EXPLAIN Ä¿¸Çµå·Î °ËÁõÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸ñÀûÀ» À§ÇÑ ¿ë·Ê¸¦Section 13.1¿¡ ³ªÅ¸³À´Ï´Ù. ¶ÇÇÑ, Section 25.2¿¡ ³ªÅ¸³»´Â ´ë·Î, °¡µ¿ÁßÀÇ ¼¹ö¼ À妽º »ç¿ë »óȲÀÇ ÀüüÀûÀÎ Åë°è Á¤º¸¸¦ ²¨³¾ ¼öµµ ÀÖ½À´Ï´Ù.
¾î´À À妽º¸¦ ¼³Á¤ÇؾßÇÒ °ÍÀΰ¡¸¦ ÆÇ´ÜÇϱâ À§ÇÑ ÀϹÝÀûÀÎ ¼ø¼¸¦ Á¤ÇÏ´Â °ÍÀº °ï¶õÇÕ´Ï´Ù. Áö±Ý±îÁö´Â ¿¹·Î¼ ÀüÇüÀûÀÎ ÄÉÀ̽º¸¦ ¸î °³Àΰ¡ ±â¼úÇØ ¿Ô½À´Ï´Ù. ¸¹Àº °æ¿ì, ÃæºÐÇÑ °ËÁõÀÌ ÇÊ¿äÇÕ´Ï´Ù. º» ÀýÀÇ ³ª¸ÓÁö´Â °ËÁõÀ» À§ÇÑ ÈùÆ® ¸î °³¸¦ ¼³¸íÇϰڽÀ´Ï´Ù.
¿ì¼±, ¹Ýµå½Ã ANALYZE Ä¿¸Çµå¸¦ ½ÇÇàÇØ Áֽʽÿä. ÀÌ Ä¿¸Çµå¿¡ ÀÇÇØ, Å×ÀÌºí ³»ÀÇ °ªÀÇ ºÐÆ÷¿¡ °üÇÑ Åë°è Á¤º¸¸¦ ¼öÁýÇÕ´Ï´Ù. ÀÌ Á¤º¸´Â Äõ¸®¿¡ ÀÇÇØ µ¹·ÁÁÖ¾îÁö´Â Çà ¼ö¸¦ ÃßÃøÇÒ ¶§ ÇÊ¿äÇÕ´Ï´Ù. ÃßÃøµÈ Çà ¼ö´Â °¡´ÉÇÑ °èȹ¿¡ ½ÇÁúÀûÀÎ ÄÚ½ºÆ®¸¦ ÇÒ´çÇϱâ À§Çؼ planner°¡ ÇÊ¿äÇÕ´Ï´Ù. ½ÇÁ¦ÀÇ Åë°è Á¤º¸°¡ Á¶±ÝÀÌ¶óµµ ºñ¾î ÀÖ´Â °æ¿ì, µðÆúÆ® °ªÀÌ °¡Á¤µË´Ï´Ù. ÀÌ µðÆúÆ® °ªÀº °ÅÀÇ ºÎÁ¤È®ÇÕ´Ï´Ù. µû¶ó¼, ANALYZEÄ¿¸Çµå¸¦ ½ÇÇàÇÏÁö ¾Ê°í , ¾îÇø®ÄÉÀ̼ÇÀÇ À妽º »ç¿ë »óȲÀ» °ËÁõÇØµµ, ±×´ÙÁö Àǹ̰¡ ¾ø½À´Ï´Ù.
°ËÁõ¿¡´Â ½ÇÁ¦·Î »ç¿ëÇÏ´Â µ¥ÀÌÅ͸¦ »ç¿ëÇØ Áֽʽÿä. Å×½ºÆ® µ¥ÀÌÅ͸¦ »ç¿ëÇØ À妽º¸¦ ÀÛ¼ºÇßÀ» °æ¿ì, Å×½ºÆ® µ¥ÀÌÅÍ¿¡ ÇÊ¿äÇÑ À妽º ¾ËÁö¸¸, ±× ÀÌ»óÀº ¸ð¸¨´Ï´Ù.
¸Å¿ì ÀÛÀº Å×½ºÆ® µ¥ÀÌÅ͸¦ »ç¿ëÇÏ´Â Àϵµ, °á°ú¿¡ ƯÈ÷ Ä¡¸íÀûÀÎ ¿µÇâÀ» ÁÝ´Ï´Ù. 100,000Çà¿¡¼ 1,000 ÇàÀ» ¼±ÅÃÇÏ´Â °æ¿ì´Â À妽º°¡ »ç¿ëµÉ °¡´É¼ºÀÌ ÀÖÁö¸¸, 100 Çà¿¡¼ 1ÇàÀ» ¼±ÅÃÇÏ´Â °æ¿ì´Â À妽º°¡ ¿ì¼±ÀûÀ¸·Î »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé, 100ÇàÀº ¾Æ¸¶ 1°³ÀÇ µð½ºÅ© ÆäÀÌÁö¿¡ µé¾î°¡±â ¶§¹®¿¡, 1 ÆäÀÌÁö¸¦ ¼ø¼´ë·Î Àо´Â °Íº¸´Ù ºü¸¥ °èȹÀÌ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù.
¶ÇÇÑ, ¾îÇø®ÄÉÀ̼ÇÀÌ ¾ÆÁ÷ ½ÇÇàµÇÁö ¾Ê´Â °æ¿ì, Å×½ºÆ® µ¥ÀÌÅ͸¦ ÀÛ¼º ÇÒ ¶§´Â ÁÖÀǰ¡ ÇÊ¿äÇÕ´Ï´Ù. ¸Å¿ì À¯»çÇÑ °ªÀ̳ª, ¿ÏÀüÇÏ°Ô ·£´ýÀÎ °ª, ¶Ç´Â Á¤·Ä(sorting)µÈ ¼ø¼·Î °ªÀÌ »ðÀԵǰí ÀÖ´Â °æ¿ì, ±× Åë°è Á¤º¸´Â ½ÇÁ¦ÀÇ µ¥ÀÌÅÍÀÇ ºÐÆ÷¿Í µ¿¶³¾îÁø °ÍÀÌ µÇ¾î ¹ö¸³´Ï´Ù.
À妽º°¡ »ç¿ëµÇÁö ¾ÊÀº °æ¿ì, Å×½ºÆ®¸¦ À§Çؼ À妽º¸¦ °Á¦ÀûÀ¸·Î »ç¿ëÇϵµ·Ï ÇÏ¸é Æí¸®ÇÕ´Ï´Ù. ´Ù¾çÇÑ °èȹ ŸÀÔÀ» ¹«È¿·Î ¼³Á¤ÇÒ ¼ö ÀÖ´Â ½ÇÇà½Ã ÆÄ¶ó¹ÌÅͰ¡ ÀÖ½À´Ï´Ù (Section 17.6.1¸¦ ÂüÁ¶ÇØ Áֽʽÿä). ¿¹¸¦ µé¸é, °¡Àå ±âº»ÀûÀÎ °èȹÀÎ ½ÃÄö¼È ½ºÄµ(enable_seqscan) ¹× nested-loop Á¶ÀÎ(enable_nestloop)À» ¹«È¿·Î ¼³Á¤Çϸé, ½Ã½ºÅÛÀº ´Ù¸¥ °èȹÀ» »ç¿ëÇϵµ·Ï °¿ä´çÇÕ´Ï´Ù. ±×·¯ÇÑ ¼³Á¤À» ½Ç½ÃÇØµµ, ½Ã½ºÅÛÀÌ ½ÃÄö¼È ½ºÄµÀ̳ª nested-loop Á¶ÀÎÀ» ¼±ÅÃÇÏ´Â °æ¿ì, À妽º¸¦ »ç¿ëÇÏÁö ¾Ê´Â ÀÌÀ¯·Î Á» ´õ ±Ùº»ÀûÀÎ ÀÌÀ¯°¡ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é, Äõ¸®ÀÇ Á¶°ÇÀÌ À妽º¿¡ ÀÏÄ¡ÇÏÁö ¾Ê´Â °ÍÀ» »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. (¾î¶² Á¾·ùÀÇ Äõ¸®°¡ ¾î¶² À妽º¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ»Áö´Â Àü Àå¿¡¼ ¼³¸íµÇ¾ú½À´Ï´Ù.)
°Á¦ÀûÀ¸·Î À妽º¸¦ »ç¿ëÇϵµ·Ï ¼³Á¤ÇØ, À妽º¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â ´ÙÀ½ÀÇ 2°³ÀÇ »óȲÀÌ »ý°¢µË´Ï´Ù. ½Ã½ºÅÛÀÇ ÆÇ´ÜÀÌ ¿Ã¹Ù¸£°í, À妽º »ç¿ëÀÌ ½ÇÁ¦ ÀûÀýÇÏÁö ¾ÊÀº »óȲÀ̰ųª Äõ¸® °èȹÀÇ ÄÚ½ºÆ® ÃßÁ¤ÀÌ Çö½ÇÀ» ¹Ý¿µÇÏÁö ¾Ê´Â »óȲÀÔ´Ï´Ù. µû¶ó¼, À妽º¸¦ »ç¿ëÇÑ Äõ¸®ÀÇ ½ÇÇà ½Ã°£°ú »ç¿ëÇÏÁö ¾Ê´Â °æ¿ìÀÇ ½ÇÇà ½Ã°£À» ÃøÁ¤ÇØ º¼ Çʿ䰡 ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, EXPLAIN ANALYZEÄ¿¸Çµå°¡ Æí¸®ÇÕ´Ï´Ù.
ÄÚ½ºÆ® ÃßÁ¤ÀÌ À߸øµÈ °ÍÀ¸·Î ÆÇ¸íµÇ¾úÀ» °æ¿ì, µÎ °¡Áö °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÃÑ ÄÚ½ºÆ®´Â °¢ °èȹ ³ëµåÀÇ Çà ´ÜÀ§ÀÇ ÄÚ½ºÆ®¿¡, °èȹ ³ëµåÀÇ ÃßÁ¤ ¼±Åõµ¸¦ °Å´Â °ÍÀ¸·Î »êÃâµË´Ï´Ù. °èȹ ³ëµåÀÇ ÄÚ½ºÆ® ÃßÁ¤Àº ½ÇÇà½Ã ÆÄ¶ó¹ÌÅÍ¿¡ ÀÇÇØ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù (Section 17.6.2¸¦ ÂüÁ¶ÇØ Áֽʽÿä). ºÎÁ¤È®ÇÑ ¼±Åõµ ÃßÁ¤Àº ºÒÃæºÐÇÑ Åë°è Á¤º¸ÀÇ ¿øÀÎÀÌ µË´Ï´Ù. Åë°è Á¤º¸¼öÁý¿ëÀÇ ÆÄ¶ó¹ÌÅ͸¦ Á¶ÀýÇÏ¿© »óȲÀ» °³¼±ÇÒ ¼ö ÀÖ½À´Ï´Ù ( ALTER TABLE ¸¦ ÂüÁ¶ÇØ Áֽʽÿä).
ÄÚ½ºÆ®¸¦ ÀûÀýÈ÷ Á¶ÀýÇÒ ¼ö ¾ø´Â °æ¿ì, ¸í½ÃÀûÀ¸·Î À妽º¸¦ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¶Ç´Â PostgreSQL°³¹ßÀÚ¿¡°Ô ¹®Á¦¸¦ Á¶»çÇϵµ·Ï ÀÇ·ÚÇÏ°Ô µÉÁöµµ ¸ð¸¨´Ï´Ù.