17.6. ¹®ÀÇ °èȹ

17.6.1. planner ¹æ¹ý ȯ°æ¼³Á¤

ÀÌ·¯ÇÑ ¼³Á¤ ¸Å°³º¯¼ö´Â, ¹®ÀÇ ÃÖÀûÈ­°¡ ¼±ÅÃÇÏ´Â ¹®ÀÇ °èȹ¿¡ ¿µÇâÀ» ÁÖ´Â ´ë·«ÀûÀÎ ¼ö¹ýÀ» Á¦°øÇÕ´Ï´Ù. ¾î´À ¹®ÀÇ¿¡ ´ëÇØ¼­ ÃÖÀûÈ­°¡ ¼±ÅÃÇÑ µðÆúÆ® °èȹÀÌ ÃÖÀûÀÌÁö ¾ÊÀº °æ¿ì, ÀáÁ¤ÀûÀÎ ÇØ°áÃ¥Àº, ÀÌ·¯ÇÑ ¼³Á¤ ¸Å°³º¯¼öÀÇ Çϳª¸¦ »ç¿ëÇØ, ÃÖÀûÈ­¿¡ ´Ù¸¥ °èȹÀ» ¼±ÅÃÇϵµ·Ï ´ëÇÏ´Â °ÍÀÔ´Ï´Ù. ±×·¯³ª, ¿µ±¸ÀûÀ¸·Î ÀÌ·¯ÇÑ ¼³Á¤À» ¹«È¿·Î ÇÏ´Â °ÍÀº ±×´ÙÁö ±ÇÀ¯¹ÞÁö ¾Ê½À´Ï´Ù. ǰÁúÀ» °³¼±ÇÏ´Â ¹æÃ¥Àº, ´ÙÀ½°ú °°ÀÌ ÇÏ¿© ÃÖÀûÈ­°¡ ¼±ÅÃÇÒ °èȹÀÇ Ç°ÁúÀ» Çâ»óÇÏ´Â °ÍÀÔ´Ï´Ù. planner ÄÚ½ºÆ® »ó¼ö (À»)¸¦ Á¶ÀýÇØ, ANALYZE ¸¦ º¸´Ù ºó¹øÇÏ°Ô ½ÇÇàÇØ,default_statistics_target¼³Á¤ ¸Å°³º¯¼öÀÇ °ªÀ» Å©°Ô ÇÕ´Ï´Ù, ±×¸®°íALTER TABLE SET STATISTICS¸¦ »ç¿ëÇØ, ƯÁ¤ÀÇ ¿­¿¡ ´ëÇØ¼­ ¼öÁýµÈ Åë°è Á¤º¸¸¦ ´Ã¸³´Ï´Ù.

enable_bitmapscan(boolean)

¹®ÀÇ planner°¡ ºñÆ® ¸Ê ½ºÄµ °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.

enable_hashagg(boolean)

¹®ÀÇ planner°¡ ÇØ½Ã µÈ Áý°è °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.

enable_hashjoin(boolean)

¹®ÀÇ planner°¡ ÇØ½Ã °áÇÕ °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.

enable_indexscan(boolean)

¹®ÀÇ planner°¡ À妽º ÁÖ»ç °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.

enable_mergejoin(boolean)

¹®ÀÇ planner°¡ ¸ÓÁö °áÇÕ °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.

enable_nestloop(boolean

¹®ÀÇ planner°¡ nested ·çÇÁ °áÇÕ °èȹÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. nested ·çÇÁ °áÇÕÀ» ¿ÏÀüÇÏ°Ô ±ÝÁöÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù¸¸, ÀÌ º¯¼ö¸¦ ¿ÀÇÁ·Î Çϸé, ¸¸¾à ´Ù¸¥ ¹æ¹ýÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù¸é, planner´Â ±× »ç¿ëÀ» ½Ç½ÃÇÏÁö ¾Ê°Ô µË´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.

enable_seqscan(boolean)

¹®ÀÇ planner°¡ ½ÃÄö¼È ½ºÄµ °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. ½ÃÄö¼È Áֻ縦 ¿ÏÀüÇÏ°Ô ±ÝÁöÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù¸¸, ÀÌ º¯¼ö¸¦ ¿ÀÇÁ·Î Çϸé, ¸¸¾à ´Ù¸¥ ¹æ¹ýÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù¸é, planner´Â ±× »ç¿ëÀ» ½Ç½ÃÇÏÁö ¾Ê°Ô µË´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.

enable_sort(boolean)

¹®ÀÇ planner°¡ ¸í½ÃÀû Á¤·Ä ´Ü°è¸¦ »ç¿ëÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. ¸í½ÃÀû Á¤·ÄÀ» ¹Ù²Ù°í¸¦ ¿ÏÀüÇÏ°Ô ±ÝÁöÇÏ´Â °ÍÀº ºÒ°¡´ÉÇÕ´Ï´Ù¸¸, ÀÌ º¯¼ö¸¦ ¿ÀÇÁ·Î Çϸé, ¸¸¾à ´Ù¸¥ ¹æ¹ýÀ» ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù¸é, planner´Â ±× »ç¿ëÀ» ½Ç½ÃÇÏÁö ¾Ê°Ô µË´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.

enable_tidscan(boolean)

¹®ÀÇ planner°¡TIDÁÖ»ç °èȹÇüÀ» ¼±ÅÃÇÏ´Â °ÍÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂonÀÔ´Ï´Ù.

17.6.2. planner ÄÚ½ºÆ® »ó¼ö

º»Àý·Î Ãë±ÞÇÏ´ÂÄÚ½ºÆ®º¯¼ö´Â, ÀÓÀÇÀÇ Ã´µµ·Î ÃøÁ¤µË´Ï´Ù. À̰͵éÀº »ó´ëÀûÀÎ °ª ¹Û¿¡ ¾ø½À´Ï´Ù. ±× ¶§¹®¿¡, °°Àº ÀÎÀڷΠôµµ¸¦ ¹Ù²Ù¾îµµ, plannerÀÇ ¼±ÅÃÀº °á°úÀûÀ¸·Î ¹Ù²îÁö ¾Ê½À´Ï´Ù. ÀüÅëÀûÀ¸·Î, ÀÌ·¯ÇÑ º¯¼ö´Â ÄÚ½ºÆ® ´ÜÀ§·Î¼­ ½ÃÄö¼ÈÀÎ ÆäÀÌÁö È¥ÀâÀ» ÂüÁ¶Çϰí ÀÖ¾ú½À´Ï´Ù. Áï,seq_page_cost¸¦ °ü½ÀÀûÀ¸·Î1.0À¸·Î ÇØ, ´Ù¸¥ ÄÚ½ºÆ® º¯¼ö¸¦ ±×°ÍÀ» Âü°í(?¼³Á¤µÇ¾î ÀÖ¾ú½À´Ï´Ù. ±×·¯³ª ¿øÇÑ´Ù¸é, ƯÁ¤ÀÇ ¸Ó½Å¿¡ À־ÀÇ ¹Ð¸® ¼¼ÄÁµå ´ÜÀ§ÀÇ ½ÇÇà ½Ã°£ µî, ´Ù¸¥ ôµµ¸¦ »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

Note: À¯°¨½º·´Áö¸¸, ÄÚ½ºÆ® º¯¼ö¿¡ ´ëÇÑ ÀÌ»óÀûÀÎ °ªÀ» °áÁ¤ÇÏ´Â, ´É¼÷ÇÏ°Ô Á¤ÀÇµÈ ¹æ¹ýÀÌ ¾ø½À´Ï´Ù. ƯÁ¤ÀÇ ¼³Ä¡°¡ ½Ç½ÃµÇ´Â ¹®ÀÇ Àüü¸¦ È¥Àç½ÃŲ °ÍÀÇ Æò±ÕÀ» ÃÖ¼±ÀÇ °ÍÀ¸·Î ´Ù·ç¾îÁö°í ÀÖ½À´Ï´Ù. ¸îÂ÷·ÊÀÇ ½ÇÇ踸À» ±Ù°Å·Î ÀÌ °ªÀ» º¯°æÇÏ´Â °ÍÀº À§ÇèÇÏ´Ù¶ó°í ¸»ÇÒ ¼ö ÀÖ½À´Ï´Ù.

seq_page_cost (floating point)

½ÃÄö¼ÈÀÎ ÀÏ·ÃÀÇ ÃëµæÀÇ ÀϺΰ¡ µÇ´Â, µð½ºÅ© ÆäÀÌÁö ÆÐÄ¡¿¡ °üÇÑ, plannerÀÇ ÃßÁ¤ ÄÚ½ºÆ®¸¦ ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 1.0ÀÔ´Ï´Ù.

random_page_cost(floating point)

ºñ¼ø¼­ÀûÀ¸·Î ²¨³»Áö´Â µð½ºÅ© ÆäÀÌÁöÀÇ ÄÚ½ºÆ®¿¡ ´ëÇÑ plannerÀÇ ÃßÃøÀ» ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 4ÀÔ´Ï´Ù. ÀÌ °ªÀ»seq_page_cost¿¡ »ó´ëÀûÀ¸·Î °¨¼Ò½Ã۸é, ½Ã½ºÅÛÀº À妽º ½ºÄµÀ» ±â²¨ÀÌ »ç¿ëÇÏ°Ô µË´Ï´Ù. Áõ°¡½Ã۸é, À妽º ½ºÄµÀÌ »ó´ëÀûÀ¸·Î °í°¡·Î µË´Ï´Ù. ¾çÂÊ ¸ðµÎÀÇ °ªÀ» Áõ°¨½ÃŰ´Â °ÍÀ¸·Î, CPU ÄÚ½ºÆ®¿¡ ´ëÇÑ µð½ºÅ© I/OÀÇ Á߿伺À» º¯°æ½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù. À̰Ϳ¡ ´ëÇØ¼­´Â, ÈļúÀÇ ¸Å°³º¯¼ö·Î ¼³¸íÇÕ´Ï´Ù.

Tip: ½Ã½ºÅÛÀºrandom_page_cost¸¦seq_page_costº¸´Ù ÀÛÀº °ªÀ¸·Î ¼³Á¤ÇÏ·Á°í ÇÕ´Ï´Ù¸¸, À̰Ϳ¡´Â ¹°¸®ÀûÀÎ Àǹ̴ ¾ø½À´Ï´Ù. ±×·¯³ª, µ¥ÀÌÅͺ£À̽º°¡ ¿ÏÀüÇÏ°Ô RAM¿¡ ij½ÃµÇ´Â °æ¿ì, °°Àº °ªÀ¸·Î ¼³Á¤ÇÏ´Â °ÍÀº Àǹ̸¦ °¡Áý´Ï´Ù. ÀÌ °æ¿ì, ¼ø¼­ ´ë·Î°¡ ¾Æ´Ñ ÆäÀÌÁö ¾×¼¼½º¿¡ ´ëÇÑ ÆÐ³ÎƼ°¡ Á¸ÀçÇÏÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù. ¶Ç, ´ëºÎºÐÀÌ Ä³½ÃµÇ´Â µ¥ÀÌÅͺ£À̽º¿¡¼­´Â, CPU ¸Å°³º¯¼ö¿¡ ´ëÇØ¼­ ¾çÂÊ °ªÀ» ÀÛ°Ô ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. RAM³»¿¡ Á¸ÀçÇÏ´Â ÆäÀÌÁöÀÇ ²¨³½ ÄÚ½ºÆ®´Â Åë»óº¸´Ù ÈξÀ À۱⠶§¹®ÀÔ´Ï´Ù.

cpu_tuple_cost(floating point)

¹®Àǰ£¿¡ °¢°¢ÀÇ ÇàÀÇ Ã³¸®¿¡ ´ëÇÑ plannerÀÇ ÃßÃøÀ» ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 0.01ÀÔ´Ï´Ù.

cpu_index_tuple_cost(floating point)

À妽º ½ºÄµ°£¿¡ °¢°¢ÀÇ À妽ºÇàÀÇ Ã³¸®¿¡ ´ëÇÑ plannerÀÇ ÃßÃøÀ» ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 0.005ÀÔ´Ï´Ù.

cpu_operator_cost(floating point)

¹®Àǽÿ¡ ½ÇÇàµÇ´Â °¢ ¿¬»êÀÚ³ª ÇÔ¼öÀÇ Ã³¸® ÄÚ½ºÆ®¿¡ ´ëÇÑ plannerÀÇ ÃßÃøÀ» ¼³Á¤ÇÕ´Ï´Ù. µðÆúÆ®´Â 0.0025ÀÔ´Ï´Ù.

effective_cache_size (integer)

´ÜÀÏÀÇ ¹®ÀÇ·Î ÀÌ¿ëÇÒ ¼ö ÀÖ´Â µð½ºÅ© ij½Ã ÇÁ·Î±×·¥ÀÇ ½ÇÈ¿ ¿ë·®¿¡ °üÇÑ plannerÀÇ °¡Á¤À» ¼³Á¤ÇÕ´Ï´Ù. À̰ÍÀº, À妽º¸¦ »ç¿ëÇÏ´Â ÄÚ½ºÆ® ÃßÁ¤Ä¡ÀÇ ¿ä¼Ò°¡ µË´Ï´Ù. º¸´Ù ºñ½Ñ °ªÀ¸·Î Çϸé, º¸´Ù ¸¹Àº À妽º ½ºÄµÀÌ »ç¿ëµÇ°Ô µÇ¾î, º¸´Ù ÀÛ°Ô ¼³Á¤Çϸé, ½ÃÄö¼È ½ºÄµÀÌ Á»´õ »ç¿ëµÇ°Ô µË´Ï´Ù. ÀÌ ¸Å°³º¯¼ö¸¦ ¼³Á¤ÇÒ ¶§¿¡´Â,PostgreSQLÀÇ °øÀ¯ ¹öÆÛ¿ÍPostgreSQLµ¥ÀÌÅÍ ÆÄÀÏ¿¡ »ç¿ëµÇ´Â Ä¿³ÚÀÇ µð½ºÅ© ij½Ã ÇÁ·Î±×·¥ÀÇ ¾çÀÇ ¾çÂÊ ¸ðµÎ¸¦ °í·ÁÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. ¶Ç, ÀÌ¿ë °¡´ÉÇÑ ¿µ¿ªÀ» °øÀ¯Çϱ⠶§¹®¿¡, ´Ù¸¥ Å×ÀÌºí¿¡ ´ëÇØ¼­ µ¿½Ã¿¡ ½ÇÇàµÇ´Â ¹®ÀÇÀÇ ¿¹»óµÇ´Â ÃÑÁ¤¼öµµ °í·ÁÇØ ÁÖ¼¼¿ä. ÀÌ ¸Å°³º¯¼ö´Â,PostgreSQL·Î ÇÒ´çÇÒ ¼ö ÀÖ´Â °øÀ¯ ¸Þ¸ð¸®ÀÇ Å©±â¿¡´Â ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ¶Ç, Ä¿³ÚÀÇ µð½ºÅ© ij½Ã ÇÁ·Î±×·¥À» ¿¹¾àÇÏÁöµµ ¾Ê½À´Ï´Ù. À̰ÍÀº ÃßÁ¤ ¸ñÀû¸¸À¸·Î »ç¿ëµË´Ï´Ù. µðÆúÆ®´Â 128 ¸Þ°¡¹ÙÀÌÆ®(128MB)ÀÔ´Ï´Ù.

17.6.3. À¯ÀüÀû ¹®ÀÇ ÃÖÀûÈ­

geqo(boolean)

exhaustive°Ë»öÀ» ½Ç½ÃÇÏÁö ¾Ê°í ¹®ÀÇ °èȹÀ» ½ÃµµÇÏ´Â ¾Ë°í¸®ÁòÀÎ, À¯ÀüÀû ¹®ÀÇ ÃÖÀûÈ­¸¦ À¯È¿ ¶Ç´Â ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´Â ¿ÂÀÔ´Ï´Ù. geqo_thresholdº¯¼ö´Â, ¾î´À ¹®ÀÇÀÇ Å¬·¡½º¿¡ ´ëÇØ, GEQO¸¦ ¹«È¿·Î ÇÏ´Â °Íº¸´Ù Ä¡¹ÐÇÑ ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù.

geqo_threshold(integer)

Àû¾îµµ À̸¸Å­ÀÇ ¼öÀÇFROMÇ׸ñ¼ö·Î ¹®ÀǸ¦ °èȹÇϴµ¥ À¯ÀüÀû ¹®ÀÇ ÃÖÀûÈ­¸¦ »ç¿ëÇÕ´Ï´Ù. (FULL OUTER JOINÀÇ »ý¼ºÀÚ´Â, 1°³ÀÇFROMÇ׸ñÀ¸·Î¼­ °è»êÇÏ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. ) µðÆúÆ®´Â 12ÀÔ´Ï´Ù. Á» ´õ ´Ü¼øÇÑ ¹®ÀÇ¿¡¼­´Â, °áÁ¤·ÐÀû, exhaustive planner¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ÃÖ¼±ÀÔ´Ï´Ù¸¸, ¸¹Àº Å×À̺íÀ» °¡Áö´Â ¹®ÀÇ¿¡¼­´Â, °áÁ¤·ÐÀû planner´Â ¸Å¿ì ½Ã°£ÀÌ °É¸³´Ï´Ù.

geqo_effort (integer)

GEQO¿¡ À־ÀÇ °èȹ ½Ã°£°ú ¹®ÀÇ °èȹÀÇ È¿À²¼ºÀÇ »çÀÌÀÇ Æ®·¹ÀÌµå ¿ÀÇÁ¸¦ Á¦¾îÇÕ´Ï´Ù. ÀÌ º¯¼ö´Â 1¿¡¼­ 10±îÁöÀÇ ¹üÀ§ÀÇ Á¤¼ö°¡ ¾Æ´Ï¸é ¾ÈµË´Ï´Ù. µðÆúÆ®ÀÇ °ªÀº 5ÀÔ´Ï´Ù. °ªÀ» Å©°Ô Çϸé, ¹®ÀÇ °èȹ ÀÛ¼º¿¡ ÀÇÇØ ¸¹Àº ½Ã°£À» ¼ÒºñÇÑ °ÍÀÌ µË´Ï´Ù¸¸, º¸´Ù È¿À²ÀûÀÎ ¹®ÀÇ °èȹÀÌ ¼±ÅÃµÉ °¡´É¼ºÀÌ Áõ°¡ÇÕ´Ï´Ù.

½ÇÁ¦geqo_effort´Â Á÷Á¢ ¾Æ¹«°Íµµ ½Ç½ÃÇÏÁö ¾Ê½À´Ï´Ù. ±×°ÍÀº GEQOÀÇ Çൿ¿¡ ¿µÇâÀ» ÁÖ´Â ´Ù¸¥ º¯¼ö¿¡ ´ëÇØ, µðÆúÆ®ÀÇ °ªÀ» °è»êÇϱâ À§Çؼ­¸¸ »ç¿ëµË´Ï´Ù(ÀÌÇÏ¿¡¼­ ¼³¸íÇÕ´Ï´Ù). ¿øÇÏ´Â °æ¿ì, ¼öÀÛ¾÷ ´ë½Å¿¡, ´Ù¸¥ ¸Å°³º¯¼ö¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

geqo_pool_size(integer)

GEQO·Î »ç¿ëµÇ´Â Ç® ¿ë·®À» °ü¸®ÇÕ´Ï´Ù. Ç® ¿ë·®°ú´Â À¯ÀüÀû ¸ðÁý´Ü³»ÀÇ °³Ã¼¼öÀÔ´Ï´Ù. Àû¾îµµ 2°³ À̾î¾ß Çϸç, 100¿¡¼­ 1000±îÁöÀÇ °ªÀÌ »ç¿ëµË´Ï´Ù. ¸¸¾à(µðÆúÆ®ÀÇ ¼³Á¤ÀÌ´Ù) ¿µÀ¸·Î ¼³Á¤µÇ¸é,geqo_effort¹× ¹®ÀÇ ¾ÈÀÇ Å×À̺í¼ö¿¡ ±Ù°ÅÇØ, ÀûÀýÇÑ µðÆúÆ®°¡ ¼±Åõ˴ϴÙ.

geqo_generations(integer)

GEQO·Î »ç¿ëµÇ´Â ¼¼´ëÀÇ ¼ö¸¦ °ü¸®ÇÕ´Ï´Ù. ¼¼´ë´Â ¾Ë°í¸®ÁòÀÇ ¹Ýº¹¼ö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÃÖ¾ÇÀ̾ 1Àº ¾øÀ¸¸é ¾ÈµÇ¾î, Ç® »çÀÌÁî¿Í °°Àº ¹üÀ§ÀÇ °ªÀÌ »ç¿ëµË´Ï´Ù. À̰ÍÀ» 0À¸·Î ¼³Á¤(µðÆúÆ®ÀÇ ¼³Á¤)Çϸé, ÀûÀýÇÑ µðÆúƮġ°¡geqo_effort¿¡ ±Ù°ÅÇØ ¼±Åõ˴ϴÙ.

geqo_selection_bias(floating point)

GEQO·Î »ç¿ëµÇ´Â Ç¥º»¼±Åà ÆíÀÇÀ» °ü¸®ÇÕ´Ï´Ù. Ç¥º»¼±Åà ÆíÀÇ´Â ¸ðÁý´Ü³»ÀÇ ¼±ÅÃÀûÀÎ ¾Ð·ÂÀÔ´Ï´Ù. °ªÀº 1.50¿¡¼­ 2.00À¸·Î, 2.00ÀÌ µðÆúÆ®ÀÔ´Ï´Ù.

17.6.4. ±× ¿ÜÀÇ planner ¿É¼Ç

default_statistics_target(integer)

ALTER TABLE SET STATISTICS·Î ƯÁ¤ÇÑ ¿­ÀÇ ´ë»ó ÁýÇÕÀ» ¼ÒÀ¯Çϰí ÀÖÁö ¾Ê¾Ò´ø Å×ÀÌºí¿­¿¡ ´ëÇØ, µðÆúÆ®ÀÇ Åë°è ´ë»óÀ» ¼³Á¤ÇÕ´Ï´Ù. º¸´Ù Å« °ªÀºANALYZE¿¡ ÇÊ¿äÇÑ ½Ã°£À» Áõ°¡½Ãŵ´Ï´Ù¸¸, plannerÀÇ ¿¹ÃøÀÇ Ç°ÁúÀ» Çâ»ó½Ãŵ´Ï´Ù. µðÆúÆ®´Â 10ÀÔ´Ï´Ù. PostgreSQLÀÇ ¹®ÀÇ planner¿¡ ÀÇÇÑ Åë°è Á¤º¸ÀÇ »ç¿ë¹ý¿¡ °üÇѺ¸´Ù »ó¼¼ÇÑ Á¤º¸´Â,Section 13.2À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

constraint_exclusion (boolean)

¹®ÀǸ¦ ÃÖÀûÈ­Çϱâ À§ÇÑ Å×À̺í Á¦ÇÑÀÇ ¹®ÀÇ plannerÀÇ »ç¿ëÀ» À¯È¿ ȤÀº ¹«È¿·Î ÇÕ´Ï´Ù. µðÆúÆ®´ÂoffÀÔ´Ï´Ù.

ÀÌ ¸Å°³º¯¼ö°¡on½Ã¿¡´Â, planner´Â Å×À̺íCHECKÁ¦¾àÀ¸·Î ¹®ÀÇ Á¶°ÇÀ» ºñ±³ÇØ, Á¦¾à°ú ¸ð¼øµÇ´Â Á¶°ÇÀÇ ½ºÄ³´× Å×À̺íÀ» »èÁ¦ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é ÀÌÇÏ¿Í °°ÀÌ µË´Ï´Ù.

CREATE TABLE parent(key integer, ...);
CREATE TABLE child1000(check (key between 1000 and 1999)) INHERITS(parent);
CREATE TABLE child2000(check (key between 2000 and 2999)) INHERITS(parent);
...
SELECT * FROM parent WHERE key = 2400;

Á¦¾à ¹èÁ¦°¡ À¯È¿Çϰí, ÀÌSELECT´Â ÀüÇôchild1000¸¦ ½ºÄµÇÏÁö ¾Ê½À´Ï´Ù. À̰ÍÀº »ó¼ÓÀÌ ÆÄƼ¼ÇµÈ Å×À̺íÀÇ ÀÛ¼º¿¡ »ç¿ëµÉ ¶§, ¼º´ÉÀ» Çâ»ó½Ãŵ´Ï´Ù.

Çö½ÃÁ¡¿¡¼­constraint_exclusionÀÇ µðÆúÆ®´Â ¹«È¿ÀÔ´Ï´Ù. Äõ¸® °èȹÀÌ Ä³½ÃµÇ´Â °æ¿ì, À߸øµÈ °á°ú¸¦ °¡Á®¿Ã À§Ç輺ÀÌ Àֱ⠶§¹®ÀÔ´Ï´Ù. Å×À̺í Á¦¾àÀÌ º¯°æ ¶Ç´Â »èÁ¦µÇ´Â °æ¿ì, ÀÌÀü¿¡ »ý¼ºµÈ °èȹÀÌ Áö±ÝÀº À߸øµÇ¾úÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ±×¸®°í Àç°èȹÀ» °­¿ëÇÏ´Â ³»ÀåµÈ ¸ÅÄ¿´ÏÁòÀÌ ÀÖ½À´Ï´Ù. (ÀÌ °áÇÔÀº, ÇâÈÄ¿¡ PostgreSQL¸±¸®½º¿¡¼­ ³íÀÇ µË´Ï´Ù.) ¶Ç ´Ù¸¥ ÀÌÀ¯´Â Á¦¾à °Ë»ç°¡ ºñ±³Àû °í°¡¿©¼­, ¸¹Àº °æ¿ì¿¡ ±¸Á¦¸¦ °¡Á®¿ÀÁö ¾Ê±â ¶§¹®ÀÔ´Ï´Ù ÀÌ ±â´ÉÀÇ ÀåÁ¡À» ÀÌ¿ëÇØ ¼³°èµÈ ¸¸Å­ ºñÀ² µÈ Å×À̺íÀ» ½ÇÁ¦·Î »ç¿ëÇϰí ÀÖ´Â (ºÐ)Æí ¸¶¼Å, À̰ÍÀ» À¯È¿ÇÏ°Ô ÇÏ´Â °ÍÀ» Ãßõ ÇÕ´Ï´Ù.

Á¦¾à¿¡ ÀÇÇÑ Á¦¿Ü ¹× ÆÄƼ¼Å´×¿¡ °üÇÑ ÀÚ¼¼ÇÑ °ÍÀºSection 5.9À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

from_collapse_limit (Á¤¼ö)

planner´Â,FROM¸®½ºÆ®°¡ À̵é Ç׸ñº¸´Ù ÀûÀº °á°úÀÇ °æ¿ì, ¼­ºêÄõ¸®¸¦ »óÀ§ÀÇ Äõ¸®¿¡ º´ÇÕ ÇÕ´Ï´Ù. º¸´Ù ÀÛÀº °ªÀº °èȹ ½Ã°£À» Ãà¼Ò½Ãŵ´Ï´Ù¸¸, ¿­µîÇÑ Äõ¸® °èȹÀ» °¡Á®¿Ã °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. µðÆúÆ®´Â 8ÀÔ´Ï´Ù. Åë»ó À̰ÍÀ»geqo_thresholdÀÌÇÏ·Î ÇØ µÎ¸é ÁÁÀ» °ÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀºSection 13.3À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

join_collapse_limit (Á¤¼ö)

ÃÖÁ¾ÀûÀ¸·Î ¸®½ºÆ®°¡ ÀÌ Ç׸ñ¼ö ÀÌÇϰ¡ µÉ ¶§, planner´Â, ¸í½ÃÀûÀÎJOIN±¸¹®(FULL JOIN¸¦ Á¦¿ÜÇÑ´Ù)À»FROMÇ׸ñÀÇ ¸®½ºÆ®·Î ÀçÀÛ¼ºÇÕ´Ï´Ù. ÀÌ °ªÀ» ÀÛ°Ô ÇÏ¸é °èȹ ÀÛ¼º ½Ã°£Àº °¨¼ÒÇÕ´Ï´Ù¸¸, ¿­µîÇÑ Äõ¸® °èȹÀÌ ÀÛ¼ºµÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.

µðÆúÆ®¿¡¼­´Â, ÀÌ °ªÀºfrom_collapse_limit¿Í °°Àº °ªÀ¸·Î ¼³Á¤µÇ¾î ÀÖ¾î ´ëºÎºÐÀÇ °æ¿ì¿¡ ÀûÀýÇÕ´Ï´Ù. À̰ÍÀ» 1·Î ¼³Á¤Çϸé, ¸í½ÃÀûÀÎJOINÀÇ Àç¼ø¼­ÇÏ´Â °ÍÀ» ¹æÁö ÇÕ´Ï´Ù. µû¶ó¼­, Äõ¸®·Î ÁöÁ¤µÈ ¸í½ÃÀû °áÇÕ ¼ø¼­´Â, ¸±·¹À̼ÇÀÌ °áÇյǴ ½ÇÁ¦ÀÇ ¼ø¼­°¡ µË´Ï´Ù. Äõ¸® Ç÷¡³Ê´Â Ç×»ó ÃÖÀûÀÎ °áÇÕ ¼ø¼­¸¦ ¼±ÅÃÇÑ´Ù°í´Â ÇÒ ¼ö ¾ø½À´Ï´Ù. »ó±Þ À¯Àú¶ó¸é ÀáÁ¤ÀûÀ¸·Î ÀÌ º¯¼ö¸¦ 1·Î ¼³Á¤ÇØ, ¸í½ÃÀûÀ¸·Î Èñ¸ÁÀ¸·Î ÇÏ´Â °áÇÕ ¼ø¼­¸¦ ÁöÁ¤Çصµ ±¦ÂúÀ» °ÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀºSection 13.3À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.