22.1. Á¤±â Vacuuming

PostgreSQLÀÇ VACUUMÄ¿¸Çµå´Â ÀÏÁ¤ÇÑ ±âº»¿¡¼­ ½ÇÇàµÇ¾î¾ß¸¸ ÇÏ´Â ¸î °¡Áö ÀÌÀ¯°¡ ÀÖ½À´Ï´Ù.

  1. ¾÷µ¥ÀÌÆ®³ª »èÁ¦µÈ ÇàÀÌ Â÷ÁöÇÏ´Â µð½ºÅ© ¿µ¿ª º¹±¸ ¶Ç´Â Àç»ç¿ë

  2. PostgreSQL Äõ¸® planner¿¡¼­ »ç¿ëÇÏ´Â µ¥ÀÌÅÍ Åë°è Á¤º¸ÀÇ ¾÷µ¥ÀÌÆ®

  3. Æ®·£Àè¼Ç IDÀÇ wraparound¿¡ ÀÇÇÑ ¸Å¿ì ¿À·¡µÈ µ¥ÀÌÅÍÀÇ ¼Õ½Ç ¹æÁö

VACUUM ¿¬»êÀÇ »ç¿ë ºóµµ¿Í ¹üÀ§´Â °¢ »çÀÌÆ®¸¶´Ù ´Ù¸¥ ÀÌÀ¯·Î ½ÇÇàµÇ¾îÁý´Ï´Ù. ±×·¯¹Ç·Î µ¥ÀÌÅͺ£À̽º °ü¸®ÀÚ´Â ÀÌ·¯ÇÑ »çÇ×À» ÀÌÇØÇϰí ÀûÀýÇÑ Á¡°Ë °èȹÀ» °³¹ß, ½Ç½ÃÇØ¾ß ÇÕ´Ï´Ù. º» Àý¿¡¼­´Â »óÀ§ ´Ü°èÀÇ ¼³¸í¿¡ ÁýÁßÇϰڽÀ´Ï´Ù. Ä¿¸Çµå ±¸¹®°ú °ü·ÃµÈ »çÇ×À̳ª ±× ¿ÜÀÇ Á¤º¸´Â VACUUM ÂüÁ¶ ÆäÀÌÁö¸¦ »ìÆì º¸½Ê½Ã¿ä.

VACUUM Ç¥ÁØ Çü½ÄÀº ½ÇÇà ÁßÀÎ µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬»ê°ú º´ÇàÇÏ¿© ½ÇÇàµÉ ¼ö ÀÖ½À´Ï´Ù. SELECT, INSERT, UPDATE, DELETEµîÀÇ Ä¿¸àµå´Â Æò»ó½Ãó·³ °è¼ÓÇØ¼­ ÀÛµ¿ÇÕ´Ï´Ù. ±×·¯³ª vacuuming µ¿¾ÈÀº ALTER TABLE ADD COLUMNµîÀÇ Ä¿¸àµå¸¦ »ç¿ëÇØ Å×À̺í Á¤ÀǸ¦ º¯°æÇÒ ¼ö ¾ø½À´Ï´Ù. ¶ÇÇÑ, VACUUM¿¡´Â »ó´çÇÑ ¾çÀÇ I/O Æ®·¡ÇÈÀÌ ¿ä±¸µË´Ï´Ù. ¶§¹®¿¡ ´Ù¸¥ ½ÇÇà ÁßÀÎ ¼¼¼ÇÀÇ ¼º´ÉÀ» ¾ÇÈ­½ÃŰ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. ¹é±×¶ó¿îµå vacuumingÀÇ ÀÛ¾÷È¿À² °¨¼Ò¿¡ ¿µÇâÀ» ÁÙÀÏ ¼ö ÀÖ´Â ¼³Á¤ ÆÄ¶ó¹ÌÅͰ¡ ÀÖ½À´Ï´Ù. Section 17.4.4¸¦ ÂüÁ¶ÇØ Áֽʽÿä.

ÇÊ¿äÇÑ VACUUM ¿¬»êÀ» ¼öÇàÇÏ´Â ÀÚµ¿ ¸ÅÄ¿´ÏÁòÀº PostgreSQL 8.1¿¡¼­ Ãß°¡µÇ¾ú½À´Ï´Ù. Section 22.1.4¸¦ »ìÆìº¸½Ê½Ã¿ä.

22.1.1. µð½ºÅ© ¿ë·® º¹±¸

º¸Åë PostgreSQL ¿¬»ê¿¡¼­ ÇàÀÇ UPDATE³ª DELETE´Â ¿À·¡µÈ ¹öÀüÀÇ ÇàÀ» ¹Ù·Î »èÁ¦ÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ·¯ÇÑ Á¢±Ù ¹æ¹ýÀº ¿©·¯ ¹öÀü¿¡¼­ µ¿½Ã Á¦¾î(Chapter 12 ÂüÁ¶)ÀÇ ÀåÁ¡À» ¾ò±â À§ÇØ ÇÊ¿äÇÕ´Ï´Ù. ¹öÀüÀÇ ÇàÀº ´Ù¸¥ Æ®·£Àè¼Ç·ÎºÎÅÍ ÂüÁ¶µÉ °¡´É¼ºÀÌ ÀÖ´Â °æ¿ì¿¡´Â »èÁ¦µÇÁö ¾Ê½À´Ï´Ù. ±×·¯³ª °á±¹¿¡´Â, ¿À·¡µÇ°Å³ª »èÁ¦µÈ Çà¿¡ ´ëÇÑ Æ®·£Àè¼ÇÀÇ °ü½ÉÀº ¾ø¾îÁý´Ï´Ù. ÇÊ¿äÇÑ µð½ºÅ© ¿ë·®ÀÌ ¹«ÇÑÁ¤ ´Ã¾î³ª´Â °É ÇÇÇϱâ À§ÇØ, À̵éÀÌ Â÷ÁöÇÏ´Â ¿µ¿ªÀº »õ·Î¿î ÇàÀ¸·Î ÀçÀÌ¿ëµÉ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. À̰ÍÀº VACUUM¸¦ ½ÇÇàÇÏ¿© 󸮵˴ϴÙ.

ºÐ¸íÈ÷, ºó¹øÇÏ°Ô ¾÷µ¥ÀÌÆ® µÇ°Å³ª »èÁ¦µÇ´Â Å×À̺íÀº µå¹°°Ô °»½ÅµÇ´Â Å×ÀÌºíº¸´Ù ÀÚÁÖ vacuumingÀÌ ÇÊ¿ä·Î ÇÕ´Ï´Ù. ÁÖ±âÀûÀ¸·Î cron ÀÛ¾÷À» ¼³Á¤ÇØ ³õ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. cron ÀÛ¾÷Àº VACUUMÀÌ Å×À̺íÀ» ¼±Åø¸ Çϰí, º¯È­°¡ Àû´Ù°í º¸°íµÇ´Â Å×À̺íÀ» °Ç³Ê¶Ù´Â ÀÏÀ» ÇÕ´Ï´Ù. Å©°í ¹«°Ì°Ô ¾÷µ¥ÀÌÆ®µÈ Å×À̺í°ú Å©°í µå¹°°Ô ¾÷µ¥ÀÌÆ®µÇ´Â Å×ÀÌºí ¸ðµÎ¸¦ °¡Á³À» °æ¿ì, ÀÌ ÀÛ¾÷Àº ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. ÀÛÀº Å×ÀÌºí¿¡ ´ëÇÑ vacuumingÀÇ Ãß°¡ ÄÚ½ºÆ®´Â °ÆÁ¤ÇÏÁö ¾ÊÀ¸¼Åµµ µË´Ï´Ù.

VACUUMÄ¿¸àµå´Â 2 Á¾·ù°¡ ÀÖ½À´Ï´Ù. ù ¹øÂ° Çü½ÄÀº "lazy vacuum"À¸·Î ¾Ë·ÁÁ³À¸³ª ±×³É VACUUM·Î ºÒ¸³´Ï´Ù. À̰ÍÀº Å×À̺íÀ̳ª À妽º ³»ÀÇ ºÒÇÊ¿äÇÑ µ¥ÀÌÅÍ¿¡ ´ëÇØ ÇâÈÄ Àç»ç¿ëÇÒ ¼ö ÀÖ°Ô Ç¥½ÃÇÏ´Â ÀÏÀ» ÇÕ´Ï´Ù. ºÒÇÊ¿äÇÑ µ¥ÀÌÅͰ¡ ÀÖ´Â ¿µ¿ªÀº ¿µ¿ªÀÌ Å×ÀÌºí ¸¶Áö¸·¿¡ Àְųª, ¹èŸÀû Å×ÀÌºí ¶ôÀÌ ½±°Ô ¾ò¾îÁö´Â °æ¿ì¸¦ Á¦¿ÜÇϸé ȸ¼öµÇÁö ¾Ê½À´Ï´Ù . ÆÄÀÏÀÇ ½ÃÀÛÀ̳ª Áß°£ÀÇ ºÒÇÊ¿äÇÑ ¿µ¿ª¿¡ ´ëÇÑ ÆÄÀÏ Ãà¼Ò´Â ½ÇÇàµÇÁö ¾ÊÀ¸¸ç, ÆÄÀÏ ³»ÀÇ ¹Ì»ç¿ë ¿µ¿ªÀº operating system¿¡ ¹ÝȯµÇÁö ¾Ê½À´Ï´Ù. ÀÌ·± Á¾·ùÀÇ VACUUM´Â ÀϹÝÀûÀÎ µ¥ÀÌÅͺ£À̽º ¿¬°£°ú µ¿½Ã¿¡ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

µÎ ¹øÂ°ÀÇ Çü½ÄÀº VACUUM FULLÄ¿¸àµåÀÔ´Ï´Ù. ÀÌ´Â º¸´Ù °ø°ÝÀûÀÎ ¾Ë°í¸®ÁòÀ» »ç¿ëÇÏ¿© ºÒÇÊ¿äÇÏ°Ô µÈ ¹öÀüÀÇ ÇàÀÌ Â÷ÁöÇÏ´Â ¿µ¿ªÀ» ȸ¼öÇÕ´Ï´Ù. VACUUM FULL·Î ÇØ¹æµÈ ¸ðµç ¿µ¿ªÀº ¹Ù·Î operating system¿¡ ¹ÝȯµÇ°í, Å×ÀÌºí µ¥ÀÌÅÍ´Â µð½ºÅ©»ó¿¡¼­ ¹°¸®ÀûÀ¸·Î Ãà¼ÒµË´Ï´Ù. À¯°¨½º·´°Ôµµ ÀÌ·± Á¾·ùÀÇ VACUUMÄ¿¸àµå´Â VACUUM FULLÀÌ Ã³¸® ÁßÀÎ Å×ÀÌºí¸¶´Ù ¹èŸÀûÀÎ ¶ôÀ» ¿ä±¸ÇÕ´Ï´Ù. µû¶ó¼­, VACUUM FULL¸¦ ºó¹øÇÏ°Ô »ç¿ëÇϸé, µ¿½Ã¿¡ ½ÇÇàµÇ´Â µ¥ÀÌÅͺ£À̽º Äõ¸®ÀÇ ¼º´ÉÀÌ ´À·ÁÁú ¼öÀÖ½À´Ï´Ù.

VACUUM Ç¥ÁØ Çü½ÄÀº µð½ºÅ© °ø°£ÀÇ ¾ÈÁ¤µÈ »ç¿ëÀ» Á¡°ËÇÏ´Â ¸ñÀûÀ¸·Î °¡Àå ÀûÇÕÇÕ´Ï´Ù. µð½ºÅ© °ø°£À» operating system¿¡ ¸®ÅÏÇØ¾ßÇÒ °æ¿ì, VACUUM FULL —¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, °ð¹Ù·Î ´Ù½Ã ÇÒ´çµÇ¾îÁú µð½ºÅ© °ø°£ÀÌ ÇØÁ¦µÈ °ÍÀÇ Æ÷ÀÎÆ®´Â ¹«¾ùÀϱî¿ä? Àû´çÇÏ°Ô Ç¥ÁØ VACUUM¸¦ ½ÇÇàÇÏ´Â °ÍÀº ¹«°Å¿î °»½ÅÀÌ ÀÌ·ç¾îÁö´Â Å×À̺íÀ» Á¡°ËÇϱâ À§ÇØ VACUUM FULL¸¦ °¡²û ½ÇÇàÇÏ´Â °Íº¸´Ù ÈξÀ ³ªÀº ¹æ¹ýÀÔ´Ï´Ù.

ºñ½Á ÀÚµ¿ vaccumingÀ» »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì, ÇϳªÀÇ ¹æ¹ýÀº µ¥ÀÌÅͺ£À̽º ÀüüÀÇVACUUM¸¦ 1ÀÏ 1ȸ »ç¿ë ºóµµ°¡ ³·Àº ½Ã°£´ë¿¡ ½ºÄÉÁÙ ÇÏ´Â °ÍÀÔ´Ï´Ù. ÇÊ¿äÇϸé, °»½ÅÀÌ ºó¹øÇÏ°í ¹«°Å¿î Å×À̺íÀÇ vaccuming 󸮸¦ º¸´Ù ºó¹øÇÏ°Ô ½Ç½ÃÇϵµ·Ï Ãß°¡ÇØ Áֽʽÿä (¸Å¿ì ³ôÀº ºóµµ·Î µ¥ÀÌÅÍÀÇ ¾÷µ¥ÀÌÆ®¸¦ ½Ç½ÃÇÏ´Â Installation Áß¿¡¼­´Â ¸Å ºÐ¸¶´Ù Çѹø¾¿ °¡Àå ¹Ù»Û Å×À̺íÀÇVACUUM¸¦ ½Ç½ÃÇÏ´Â Àϵµ ÀÖ½À´Ï´Ù). 1°³ÀÇ Å¬·¯½ºÅÍ¿¡ º¹¼öÀÇ µ¥ÀÌÅͺ£À̽º°¡ ÀÖ´Â °æ¿ì, °¢°¢À» vaccuming ÇÏ´Â °ÍÀ» ÀØÁö ¸»¾Æ Áֽʽÿä. vacuumdb ÇÁ·Î±×·¥ÀÌ µµ¿òÀ» ÁÙ °ÍÀÔ´Ï´Ù.

VACUUM FULL´Â Å×ÀÌºí ³»ÀÇ ´ëºÎºÐÀÇ ÇàÀ» »èÁ¦ÇßÀ» °æ¿ì ÃßõµË´Ï´Ù. ¾ÈÁ¤ÀûÀÎ »óÅÂÀÇ Å×À̺í Å©±â´Â VACUUM FULLÀÇ º¸´Ù Àû±ØÀûÀÎ ¹æ½Ä¿¡ ÀÇÇØ Å©°Ô Ãà¼ÒµÉ ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ¿ë·®ÀÇ º¹±¸¸¦ À§ÇÑ Á¤»óÀûÀÎ vaccuming 󸮿¡´Â VACUUM FULLÀÌ ¾Æ´Ñ, ÀϹÝÀûÀÎ VACUUM¸¦ »ç¿ëÇØ Áֽʽÿä.

Å×À̺íÀÇ ³»¿ëÀÌ Á¤±âÀûÀ¸·Î ¿ÏÀüÈ÷ »èÁ¦µÉ °æ¿ì, DELETEÀÇ µÚ¿¡ VACUUM¸¦ »ç¿ëÇÏ´Â °Íº¸´Ù´Â TRUNCATE¸¦ »ç¿ëÇÏ´Â °ÍÀÌ ´õ ÁÁ½À´Ï´Ù. TRUNCATE´Â Å×À̺íÀÇ ¸ðµç ³»¿ëÀ» Áï¼®¿¡¼­ »èÁ¦ÇÕ´Ï´Ù. ¶ÇÇÑ, ±× ÈÄ¿¡ ¾È ¾²ÀÌ´Â µð½ºÅ© ¿ë·®À» ȸ¼öÇϱâ À§ÇØ VACUUM³ª VACUUM FULL¸¦ ½Ç½ÃÇÒ Çʿ䰡 ¾ø½À´Ï´Ù.

22.1.2. plannerÀÇ Åë°è Á¤º¸ °»½Å

PostgreSQLÄõ¸® planner´Â ¶Ù¾î³­ Äõ¸® °èȹÀ» ÀÛ¼ºÇϱâ À§ÇØ, Å×À̺íÀÇ ³»¿ë¿¡ °üÇÑ Åë°è Á¤º¸¸¦ ÀÇÁ¸ÇÕ´Ï´Ù. ÀÌ Åë°è Á¤º¸´Â ANALYZE ¿¡ ÀÇÇØ ¼öÁýµË´Ï´Ù. ÀÌ Ä¿¸àµå´Â ÀÚ±âÀÚ½ÅÀ̳ª VACUUMÀÇ ¿É¼ÇÀû ´Ü°è·Î¼­ È£ÃâµÉ ¼ö ÀÖ½À´Ï´Ù. ÇÕ¸®ÀûÀ¸·Î Á¤È®ÇÑ Åë°è Á¤º¸¸¦ °¡Áö´Â °ÍÀº Áß¿äÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ºñÈ¿À²ÀûÀÎ °èȹÀ» ¼±ÅÃÇØ, µ¥ÀÌÅͺ£À̽º ¼º´ÉÀ» ¾Çȭų °ÍÀÔ´Ï´Ù.

¿µ¿ª º¹±¸¸¦ À§ÇÑ vaccuming ó¸®¿Í °°ÀÌ, ºó¹øÇÑ Åë°è Á¤º¸ÀÇ °»½ÅÀº µå¹°°Ô °»½ÅµÇ´Â Å×ÀÌºíº¸´Ù °»½ÅÀÇ ºó¹øÇÑ Å×ÀÌºí¿¡°Ô À¯ÀÍÇÕ´Ï´Ù. ±×·¯³ª ºó¹øÇÏ°Ô °»½ÅµÇ´Â Å×À̺íÀ̾, µ¥ÀÌÅÍÀÇ Åë°èÀûÀÎ ºÐÆ÷°¡ Å©°Ô º¯°æµÇÁö ¾ÊÀ¸¸é, Åë°è Á¤º¸¸¦ °»½ÅÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. ´Ü¼øÇÑ °æÇè ¹æ¹ýÀº Å×ÀÌºí ³»ÀÇ ¿­ÀÇ ÃÖ¼ÒÄ¡, ÃÖ´ëÄ¡¿¡ ¾î´À Á¤µµÀÇ º¯È­°¡ ÀÖ¾ú´ÂÁö¸¦ »ý°¢ÇÏ´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¸é, ÇàÀÇ °»½Å ½Ã°¢À» º¸°üÇÏ´Âtimestamp¿­ÀÇ °æ¿ì, ÃÖ´ëÄ¡´Â ÇàÀÌ Ãß°¡¿Í °»½ÅµÇ´Â °Í¿¡ µû¶ó ´Ü¼øÇÏ°Ô Áõ°¡ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¿­Àº ¾Æ¸¶µµ, ¿¹¸¦ µé¸é, Web »çÀÌÆ® »óÀÇ ¾×¼¼½ºµÈ ÆäÀÌÁö URL¸¦ º¸°üÇÏ´Â ¿­º¸´Ù ºó¹øÇÏ°Ô Åë°è Á¤º¸¸¦ °»½ÅÇÒ Çʿ䰡 ÀÖ°Ú½À´Ï´Ù. ÀÌ URL¿­ÀÇ °»½Å ºóµµµµ ³ôÀ» Áö´Â ¸ð¸£Áö¸¸, ±× °ªÀÇ Åë°èÀûÀÎ ºÐÆ÷ÀÇ º¯°æÀº »ó´ëÀûÀ¸·Î ³·À» °ÍÀÔ´Ï´Ù.

ƯÁ¤ÇÑ Å×ÀÌºí¿¡ ´ëÇØ¼­ ANALYZE¸¦ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, Å×À̺íÀÇ Æ¯Á¤ÇÑ ¿­¿¡¸¸ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î, ¾îÇø®ÄÉÀ̼ÇÀÇ ¿ä±¸¿¡ »óÀÀÇÏ¿© º¸´Ù ºó¹øÇÏ°Ô ÀϺΠÅë°è Á¤º¸¸¦ °»½ÅÇÒ ¼ö ÀÖ´Â À¯¿¬¼ºÀÌ ÀÖ½À´Ï´Ù. ±×·¯³ª ½ÇÁ¦·Î´Â ºü¸¥ ¿¬»êÀÌ ¾Æ´Ï¶ó, ´ÜÁö µ¥ÀÌÅͺ£À̽º Àüü¸¦ ÇØ¼®ÇÏ´Â °ÍÀÌ ÃÖ¼±ÀÔ´Ï´Ù. ¸ðµç ÇϳªÀÇ ÇàÀ» Àд °Íº¸´Ù´Â Å×ÀÌºí¿¡¼­ ·£´ýÀÇ ÇàÀ» ÃßÃâÇØ Åë°è 󸮿¡ »ç¿ëÇÕ´Ï´Ù.

Tip: ¿­ ´ÜÀ§¿¡¼­ÀÇANALYZE½ÇÇà ºóµµÀÇ Á¶Á¤Àº ¸Å¿ì ½Ç¿ëÀûÀÌ´Ù°í´Â ¸»ÇÒ ¼ö´Â ¾øÁö¸¸, ANALYZE·Î Áý°èµÇ´Â Åë°è Á¤º¸ÀÇ »ó¼¼ ·¹º§ Á¶Á¤À» ¿­ ´ÜÀ§·Î ½Ç½ÃÇÏ´Â °ÍÀº À¯¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. WHERE±¸·Î ÀÚÁÖ »ç¿ëµÇ¾î µ¥ÀÌÅÍ ºÐÆ÷ÀÇ ±ÔÄ¢¼ºÀÌ °ÅÀÇ ¾ø´Â ¿­Àº, ´Ù¸¥ ¿­º¸´Ù ´õ »ó¼¼ÇÑ µ¥ÀÌÅÍ µµ¼ö ºÐÆ÷°¡ ÇÊ¿äÇÒ °ÍÀÔ´Ï´Ù. ALTER TABLE SET STATISTICS¸¦ ÂüÁ¶ÇØ Áֽʽÿä.

ÇÏ·ç Áß »ç¿ë ºóµµ°¡ ³·Àº ¶§ µ¥ÀÌÅͺ£À̽º Àüü¿¡ ´ëÇØ ANALYZE ¸¦ ½ºÄÉÁÙÇÏ´Â °ÍÀº ÁÁÀº ¹æ¹ýÀÔ´Ï´Ù. ÀÌ´Â ¹ã¸¶´Ù VACUUM¿Í À¯¿ëÇÏ°Ô °áÇÕµÉ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª Å×À̺í Åë°èÁ¤º¸¸¦ º¯°æÇÏ´Â °ÍÀÌ »ó´ëÀûÀ¸·Î ´ÊÀº »çÀÌÆ®¿¡¼­´Â Áö³ªÄ£ ÇൿÀÔ´Ï´Ù. º¸´Ù ³·Àº ºóµµ·Î ANALYZE¸¦ ½ÇÇàÇÏ´Â °ÍÀ¸·Î ÃæºÐÇÕ´Ï´Ù.

22.1.3. Æ®·£Àè¼Ç IDÀÇ ·¦¾î¶ó¿îµå ½ÇÆÐ ¹æÁö

PostgreSQLÀÇ MVCC Æ®·£Àè¼ÇÀǹ̴ Ʈ·£Àè¼Ç ID(XID) ¼ýÀÚ ºñ±³°¡ °¡´ÉÇÑ °Í¿¡ ÀÇÁ¸Çϰí ÀÖ½À´Ï´Ù. ÇöÀçÀÇ Æ®·£Àè¼ÇÀÇ XIDº¸´Ù ÃÖ±ÙÀÇ XID¸¦ °¡Áø ¹öÀüÀÇ ÇàÀº "¹Ì·¡ÀÇ °Í"À̸ç, ÇöÀçÀÇ Æ®·£Àè¼Ç·ÎºÎÅÍ º¸¿©ÁöÁö ¾Ê½À´Ï´Ù. ±×·¯³ª Æ®·£Àè¼Ç IDÀÇ Å©±â¿¡´Â Á¦ÇÑ(ÁýÇÊ ½ÃÁ¡¿¡¼­ 32 ºñÆ®)ÀÌ ÀÖ¾î, Àå½Ã°£(40¾ï Æ®·£Àè¼Ç) °¡µ¿Çϰí Àִ Ŭ·¯½ºÅÍ´ÂÆ®·£Àè¼ÇÀÇ ·¦¾î¶ó¿îµå¸¦ °Þ°Ô µË´Ï´Ù. XIDÀÇ Ä«¿îÅͰ¡ 0À¸·Î µ¹¾Æ¿À°í µ¹¿¬¿¡, Áö³­ Æ®·£Àè¼ÇÀÌ ¹Ì·¡ÀÇ °ÍÀ¸·Î º¸À̵µ·Ï, Áï, Ãâ·ÂÀÌ º¸¿©Áö ¾Ê½À´Ï´Ù. ´ÜÀûÀ¸·Î ¸»Çϸé, ÆÄ¸êÀûÀÎ µ¥ÀÌÅÍÀÇ ¼Õ½ÇÀÔ´Ï´Ù (½ÇÁ¦´Â µ¥ÀÌÅÍ´Â º¸°üµÇ°í ÀÖÁö¸¸, ±×°ÍÀ» ȹµæÇÒ ¼ö ¾øÀ¸¸é, ¼Ò¿ë ¾øÀ» °ÍÀÔ´Ï´Ù). À̰ÍÀ» ¸·±â À§Çؼ­´Â Àüü µ¥ÀÌÅͺ£À̽ºÀÇ ¸ðµç Å×À̺íÀ» Àû¾îµµ 20¾ï Æ®·£Àè¼Ç ¸¶´Ù vaccuming ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù.

Á¤±âÀûÀÎ vaccuming 󸮿¡ ÀÇÇØ ÀÌ ¹®Á¦°¡ ÇØ°áµÇ´Â ÀÌÀ¯´Â PostgreSQL°¡ Ưº°ÇÑ XID, FrozenXID¸¦ ±¸º°Çϰí Àֱ⠶§¹®¿¡ÀÔ´Ï´Ù. ÀÌ XID´Â Ç×»ó ¸ðµç º¸ÅëÀÇ XIDº¸´Ù ³°Àº °ÍÀ¸·Î °£ÁÖÇØÁý´Ï´Ù. º¸ÅëÀÇ XID(2ÀÌ»óÀÇ °ª)´Â modulo-231ÀÇ ¼ö½ÄÀ» »ç¿ëÇØ ºñ±³µË´Ï´Ù. ÀÌ´Â ¸ðµç ÀϹÝÀûÀÎ XID¿¡¼­´Â 20¾ï"º¸´Ù ³°Àº"XID¿Í 20¾ï"º¸´Ù »õ·Î¿î"XID°¡ Á¸ÀçÇÏ´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ¹Ù²Ù¾î ¸»Çϸé, º¸ÅëÀÇ XID °ø°£Àº ³¡³ªÁö ¾Ê°í ¼øÈ¯µÇ°í ÀÖ½À´Ï´Ù. ±× ¶§¹®¿¡, ¾î´À ƯÁ¤ÇÑ XIDÀÎ ¹öÀüÀÇ ÇàÀ» ÀÛ¼ºÇϸé, ±× ¹öÀüÀÇ ÇàÀº ÀÌÈÄÀÇ 20¾ï Æ®·£Àè¼Ç·ÎºÎÅÍ´Â ¾î´À º¸ÅëÀÇ XID¿¡ ´ëÇÑ ºñ±³¿Í´Â °ü°è¾øÀÌ, "°ú°ÅÀÇ °Í"À¸·Î Àνĵ˴ϴÙ. ±× ¹öÀüÀÇ ÇàÀÌ 20¾ï Æ®·£Àè¼Ç ÈÄ¿¡µµ Á¸ÀçÇÒ °æ¿ì, °©Àڱ⠹̷¡ÀÇ °ÍÀ¸·Î Àνĵ˴ϴÙ. ÀÌ´Â µ¥ÀÌÅÍÀÇ ¼Õ½ÇÀ» ¸·±â À§ÇØ, ¿À·¡µÈ Çà ¹öÀüÀº 20¾ïÀÇ Æ®·£Àè¼ÇÀÌ µÇ±â Àü¿¡, À̵û±Ý XID FrozenXID ¸¦ Àç¼³°èÇØ¾ß ÇÕ´Ï´Ù. Ư¼öÇÑ XID¿¡ Çѹø ÇÒ´çµÇ¸é, À̵éÀº ·¦¾î¶ó¿îµå ¹®Á¦¿¡ °ü°è¾øÀÌ, ¸ðµç º¸ÅëÀÇ Æ®·£Àè¼Ç¿¡°Ô "°ú°ÅÀÇ °Í"À¸·Î¼­ ÀÎ½ÄµÇ¸ç ¶ÇÇÑ, ¹öÀüÀÇ ÇàÀº ¾ó¸¶³ª ±ä°¡¿Í »ó°ü ¾øÀÌ »èÁ¦µÉ¶§±îÁö ÁÁÀº »óŰ¡ µË´Ï´Ù. ÀÌ ¿À·¡µÈ XID¸¦ ´Ù½Ã ÁöÁ¤ÇÏ´Â °ÍÀº VACUUM¿¡ ÀÇÇØ ´Ù·ç¾îÁý´Ï´Ù.

VACUUMÀÇ µ¿ÀÛÀº ¼³Á¤ ÆÄ¶ó¹ÌÅÍvacuum_freeze_min_age¿¡ ÀÇÇØ¼­ Á¦¾îµË´Ï´Ù. vacuum_freeze_min_ageÆ®·£Àè¼Çº¸´Ù ³°Àº XID´Â ¸ðµÎ, FrozenXID·Î ġȯµË´Ï´Ù. º¸´Ù Å«vacuum_freeze_min_age°ªÀº Æ®·£Àè¼Ç Á¤º¸¸¦ Àå±â°£ º¸°üÇÕ´Ï´Ù. ÇÑÆí, Å×À̺íÀÇ vaccumingÀÌ ´Ù½Ã ½ÇÇàµÇ±â Àü¿¡ ÀÛÀº °ªµéÀº Æ®·£Á§¼ÇÀÇ ¼ýÀÚ¸¦ °è¼Ó Áõ°¡½Ãų ¼ö ÀÖ½À´Ï´Ù.

Å×À̺íÀÌ vaccumingÇÏÁö ¾ÊÀ» ¼öÀÖ´Â ÃÖ´ë ½Ã°£Àº, ¸¶Áö¸· vaccumingÀÌ ³¡³ª°í 20¾ï Æ®·£Àè¼ÇÀ¸·ÎºÎÅÍ »ç¿ëµÈ vacuum_freeze_min_age¸¦ °øÁ¦ÇÑ °ÍÀÔ´Ï´Ù. ÀÌ ½Ã°£º¸´Ù Àå±â°£ vaccumingÀ» ½Ç½ÃÇÏÁö ¾ÊÀ¸¸é µ¥ÀÌÅÍ ¼Õ½ÇÀÌ ¹ß»ýÇÕ´Ï´Ù. À̰ÍÀ» È®½ÇÈ÷ ¹æÁöÇϱâ À§Çؼ­, ÀÚµ¿ vaccuming demon ´Â autovacuum_freeze_max_age¼³Á¤ ÆÄ¶ó¹ÌÅÍ·Î ÁöÁ¤µÇ¾ú´ø ±â°£º¸´Ù ³°Àº XID¸¦ °¡Áú °¡´É¼ºÀÌ ÀÖ´Â ÀÓÀÇÀÇ Å×À̺íÀ» È£ÃâÇÕ´Ï´Ù. (À̰ÍÀº ÀÚµ¿ vaccumingÀ» »ç¿ëÇÒ ¼ö ¾øÀ» ¶§µµ ÀϾ´Ï´Ù. )

ÀÌ´Â Å×À̺íÀÌ vaccumingµÇ¾î ÀÖÁö ¾Ê¾Ò´Ù¸é, ÀÚµ¿ vaccumingÀÌ ´ë·« autovacuum_freeze_max_age - vacuum_freeze_min_ageÆ®·£Àè¼Ç¸¶´Ù È£ÃâµÈ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ÆÄƼ¼ÇÀ» À§ÇØ Á¤»óÀûÀ¸·Î vaccuming 󸮸¦ ½Ç½ÃÇÏ´Â Å×ÀÌºí¿¡¼­´Â Áß¿äÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯³ª (»ðÀÔ¸¸ Çϰí, °»½ÅÀ̳ª »èÁ¦¸¦ ÇÏÁö ¾Ê´Â Å×À̺íÀ» Æ÷ÇÔ) Á¤ÀûÀÎ Å×ÀÌºí¿¡¼­´Â ÆÄƼ¼ÇÀ» À§ÇÑ vaccuming 󸮸¦ ½Ç½ÃÇÒ Çʿ䰡 ¾ø¾îÁö±â ¶§¹®¿¡, ¸Å¿ì Àå±â°£ Á¤ÀûÀÎ Å×ÀÌºí¿¡¼­´Â °­Á¦ÀûÀÎ ÀÚµ¿ vaccuming°£ÀÇ °£°ÝÀ» ÃÖ´ë±îÁö ´Ã¸± ¼ö ÀÖ½À´Ï´Ù. ±âÀçÇÒ ÇÊ¿ä´Â ¾øÁö¸¸, autovacuum_freeze_max_age¸¦ ´Ã¸²À¸·Î¼­ vacuum_freeze_min_age¸¦ ÁÙÀÓÀ¸·Î¼­ ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.

autovacuum_freeze_max_age¸¦ ´Ã¸®´Â °Í¿¡´Â 1°³ °áÁ¡ÀÌ ÀÖ½À´Ï´Ù. ±×°ÍÀº µ¥ÀÌÅͺ£À̽º Ŭ·¯½ºÅÍÀÇ ÇÏÀ§ µð·ºÅ丮pg_clog°¡ ´õ Å« ¿ë·®ÀÌ µÇ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀº autovacuum_freeze_max_ageÀÇ ¹üÀ§±îÁö ¸ðµç Æ®·£Àè¼ÇÀÇ Ã³¸® »óȲÀ» ÀúÀåÇØ¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù. ó¸® »óȲÀº Æ®·£Àè¼Ç Çϳª ¸¶´Ù 2 ºñÆ® »ç¿ëÇϱ⠶§¹®¿¡, ¸¸¾àautovacuum_freeze_max_age°¡ ÃÖ´ë Çã¿ëÄ¡ÀÎ 2¾ï¿¡¼­ Á¶±Ý ÀûÀº °ªÀ» ¼³Á¤ÇÑ °æ¿ì, pg_clog´Â ¾à 0.5±â°¡¹ÙÀÌÆ®ÀÇ ¿ë·®ÀÌ µÉ °ÍÀ¸·Î ¿¹»óÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à ´ç½ÅÀÇ µ¥ÀÌÅͺ£À̽º ÃÑ ¿ë·®°ú ºñ±³Çؼ­ »ç¼ÒÇÏ´Ù°í ¿©°ÜÁú °æ¿ì´Â, autovacuum_freeze_max_age¸¦ ÃÖ´ë Çã¿ëÄ¡·Î ¼³Á¤ÇÒ °ÍÀ» ±ÇÇÕ´Ï´Ù. ¹Ý´ëÀÏ °æ¿ì´Â pg_clog ¿ë·®À¸·Î Çã¿ë ÇÒ ¼ö ÀÖ´Â °ª¿¡ µû¶ó ¼³Á¤ÇØ Áֽʽÿä. (µðÆúÆ®´Â 2000¸¸ Æ®·£Àè¼ÇÀÔ´Ï´Ù. ȯ»êÇϸé pg_clog´Â ´ë·« 50 ¸Þ°¡¹ÙÀÌÆ®ÀÇ ¿ë·®ÀÌ µË´Ï´Ù. )

vacuum_freeze_min_age¸¦ ÁÙÀÌ´Â °ÍÀº ´ÜÁ¡À» Çϳª °¡Áö°í ÀÖ½À´Ï´Ù. ÀÌ·Î ÀÎÇØ VACUUM°¡ µµ¿òÀÌ µÇÁö ¾Ê°Ô µÉÁöµµ ¸ð¸¨´Ï´Ù. Å×À̺í ÇàÀÌ °ð¹Ù·Î º¯°æµÇ´Â °æ¿ì(»õ·Î¿î XID¸¦ ȹµæÇÏ°Ô µË´Ï´Ù), Å×À̺í ÇàÀÇ XID¸¦FrozenXID·Î º¯°æÇÏ´Â °ÍÀº ¾µµ¥¾ø´Â ÀÛ¾÷ÀÔ´Ï´Ù. ¶§¹®¿¡, ÀÌ ¼³Á¤Àº ÇàÀÇ º¯°æÀÌ ÀϾÁö ¾ÊÀ» ¶§±îÁö, ¸ØÃßÁö ¾ÊÀ» ¸¸ÇÏ°Ô ÃæºÐÇÑ Å©±â¿©¾ß ÇÕ´Ï´Ù. ¼³Á¤À» ÁÙÀÌ´Â °ÍÀÇ ´Ù¸¥ ´ÜÁ¡Àº ÇàÀ» »ðÀÔ ¶Ç´Â º¯°æÇÑ Æ®·£Àè¼Ç¿¡ °üÇÑ Á¤º¸°¡ °ð¹Ù·Î ¾ø¾îÁö´Â °ÍÀÔ´Ï´Ù. ÀÌ Á¤º¸´Â ƯÈ÷, µ¥ÀÌÅͺ£À̽º Àå¾Ö ÈÄ¿¡, ¹«¾ùÀÌ À߸ø µÇ¾ú³ª¸¦ ÇØ¼®ÇÏ´Â °æ¿ì Æí¸®ÇÕ´Ï´Ù. ÀÌ 2°³ÀÇ ÀÌÀ¯·Î ¼³Á¤À» ÁÙÀÌ´Â °ÍÀº ¿ÏÀüÇÑ Á¤Àû Å×À̺íÀÌ ¾Æ´Ñ ÀÌ»ó ÃßõµÇÁö ¾Ê½À´Ï´Ù.

µ¥ÀÌÅͺ£À̽º ³»ÀÇ °¡Àå ¿À·¡µÈ XIDÀÇ ±â°£À» ÃßÀûÇϱâ À§Çؼ­, VACUUM´Â ½Ã½ºÅÛ Å×À̺ípg_class¿Í pg_database¿¡ XID Åë°è Á¤º¸¸¦ º¸°üÇÕ´Ï´Ù. ƯÈ÷, Å×À̺ípg_classÇàÀÇrelfrozenxid¿­¿¡´Â Å×ÀÌºí¿¡ ´ëÇÑ ¸¶Áö¸·VACUUM·Î »ç¿ëµÈ µ¿°áµÈ cutoff XID°¡ Æ÷ÇԵ˴ϴÙ. cutoff XIDº¸´Ù ¿À·¡µÈ ¸ðµç º¸Åë XID´Â Å×ÀÌºí ³»¿¡¼­ FrozenXID¿¡ ÀÇÇØ ġȯµÇ´Â °ÍÀ» º¸ÁõÇϰí ÀÖ½À´Ï´Ù. ºñ½ÁÇÏ°Ô µ¥ÀÌÅͺ£À̽º pg_databaseÇàÀÇ datfrozenxid¿­Àº µ¥ÀÌÅͺ£À̽º ³»¿¡¼­ ³ªÅ¸³ª´Â ÀϹÝÀûÀÎ XIDÀÇ ÇÏÇÑÄ¡ÀÔ´Ï´Ù. ÀÌ´Â µ¥ÀÌÅͺ£À̽º ³»ÀÇ Å×ÀÌºí ¸¶´Ù relfrozenxid°ªÀÇ ÃÖ¼ÒÄ¡ÀÔ´Ï´Ù. ÀÌ Á¤º¸¸¦ °Ë»çÇÏ´Â °£ÆíÇÑ ¹æ¹ýÀº ÀÌÇÏÀÇ Äõ¸®¸¦ ½ÇÇàÇÏ´Â °ÍÀÔ´Ï´Ù.

SELECT relname, age(relfrozenxid) FROM pg_class WHERE relkind = 'r';
SELECT datname, age(datfrozenxid) FROM pg_database;

age¿­Àº cuoff XID·ÎºÎÅÍ ÇöÀçÀÇ Æ®·£Àè¼Ç XID±îÁöÀÇ Æ®·£Àè¼Ç ¼ö¸¦ ÃøÁ¤ÇÕ´Ï´Ù. VACUUM Á÷ÈÄ, age(relfrozenxid)´Â »ç¿ëµÈvacuum_freeze_min_age¼³Á¤º¸´Ù ¾à°£ Ä¿Áú °ÍÀÔ´Ï´Ù (VACUUM¸¦ °³½ÃÇÑ ÈÄ, ½ÃÀÛµÈ Æ®·£Àè¼ÇÀÇ ¼ö¿¡ ÀÇÇØ Ä¿Áý´Ï´Ù). age(relfrozenxid)°¡ autovacuum_freeze_max_age¸¦ ÃʰúÇÏ´Â °æ¿ì, Å×ÀÌºí¿¡ ´ëÇÑ ÀÚµ¿ vaccumingÀÌ ¹Ù·Î °­¿äµÇ¾îÁý´Ï´Ù.

¸î °¡Áö ÀÌÀ¯·Î ÀÚµ¿ vaccumingÀÌ Å×À̺íÀÇ ¿À·¡µÈ XID Á¤¸®ÇÏ´Â °ÍÀ» ½ÇÆÐÇßÀ» °æ¿ì, ½Ã½ºÅÛÀº µ¥ÀÌÅͺ£À̽ºÀÇ °¡Àå ¿À·¡µÈ XID°¡ ·¦¾î¶ó¿îµå Æ÷ÀÎÆ®·ÎºÎÅÍ 1000¸¸ Æ®·£Àè¼Ç¿¡ À̸£·¶À» °æ¿ì¿Í °°Àº °æ°í ¸Þ¼¼Áö¸¦ ¹ßÇàÇϱ⠽ÃÀÛÇÕ´Ï´Ù.

WARNING:  database "mydb" must be vacuumed within 177009986 transactions
HINT:  To avoid a database shutdown, execute a full-database VACUUM in "mydb".

ÀÌ·¯ÇÑ °æ°í°¡ ¹«½ÃµÇ¸é, ½Ã½ºÅÛÀº Á¤ÁöÇÏ°í ·¦¾î¶ó¿îµåÇÒ ¶§±îÁö 100¸¸º¸´Ù Æ®·£Àè¼ÇÀÌ ÀûÀº »õ·Î¿î Æ®·£Àè¼Ç¿î ½ÇÇàÀ» °ÅÀý´çÇÕ´Ï´Ù.

ERROR:  database is shut down to avoid wraparound data loss in database "mydb"
HINT:  Stop the postmaster and use a standalone backend to VACUUM in "mydb".

100¸¸ Æ®·£Àè¼Ç¶ó°í ÇÏ´Â ¾ÈÀü ¸¶ÁøÀº °ü¸®ÀÚ°¡ ÇÊ¿äÇÑ VACUUMÄ¿¸àµå¸¦ ¼öµ¿À¸·Î ½ÇÇàÇÏ´Â °ÍÀ¸·Î, µ¥ÀÌÅÍ ¼Õ½Ç ¾øÀÌ º¹¿ø ÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ Á¸ÀçÇÕ´Ï´Ù. ±×·¯³ª ½Ã½ºÅÛÀÌ ¾ÈÀü Á¤Áö ¸ðµå°¡ µÇ¸é, Ä¿¸àµå¸¦ ½ÇÇàÇÏÁö ¾ÊÀ¸¹Ç·Î, ½ÇÇàÀ» À§Çؼ­´Â ¼­¹ö¸¦ Á¤ÁöÇÏ°í ½Ì±Û À¯Àú ¹é¿£µå·Î VACUUM¸¦ ½ÇÇàÇÏ´Â °Í ¿Ü¿¡ ¾ø½À´Ï´Ù. Á¤Áö ¸ðµå´Â ½Ì±Û À¯Àú ¹é¿£µå·Î °­¿äµÇÁö ¾Ê½À´Ï´Ù. ½Ì±Û À¯Àú ¹é¿£µå »ç¿ë¿¡ °üÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº postgres ¸Þ´º¾ó ÆäÀÌÁö¸¦ ÂüÁ¶ÇØ Áֽʽÿä.

22.1.4. ÀÚµ¿ vaccuming demon

PostgreSQL 8.1À» ½ÃÀÛÀ¸·Î ÀÚµ¿ vaccuming À̶ó°í ºÒ¸®´Â º°µµÀÇ ¼±Åà °¡´ÉÇÑ ¼­¹ö ÇÁ·Î¼¼½º°¡ ÀÖ½À´Ï´Ù. À̰ÍÀº VACUUM¿Í ANALYZEÄ¿¸àµåÀÇ ½ÇÇàÀ» ÀÚµ¿È­ÇÏ´Â °ÍÀ» ¸ñÀûÀ¸·Î ÇÕ´Ï´Ù. Ȱ¼ºÈ­ µÇ¸é, ÀÚµ¿ vaccumingÀº ´ë·®ÀÇ Æ©Çà »ðÀÔ, °»½Å, »èÁ¦°¡ ÀÌ·ç¾îÁ³´ø Å×À̺íÀ» °Ë»çÇÕ´Ï´Ù. ÀÌ °Ë»ç´Â Çà ¼öÁØÀÇ Åë°è Á¤º¸¼öÁý ±â´ÉÀ» »ç¿ëÇÕ´Ï´Ù. µû¶ó¼­, stats_start_collector¿Í stats_row_level°¡ true·Î ¼³Á¤µÇ¾î ÀÖÁö ¾ÊÀ¸¸é ÀÚµ¿ vaccuming daemonÀ» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ¶ÇÇÑ, superuser_reserved_connections ÀÇ °ªÀ» ¼±ÅÃÇÒ ¶§ ÀÚµ¿ vaccuming ÇÁ·Î¼¼½º¸¦ À§ÇÑ ½½·ÔÀ» Çã°¡ÇÏ´Â °ÍÀº Áß¿äÇÕ´Ï´Ù.

ÀÚµ¿ vaccuming daemonÀÌ °¡´ÉÇÒ °æ¿ì, ¸Å autovacuum_naptimeÃÊ ½ÇÇàµË´Ï´Ù. °¢°¢ÀÇ ½ÇÇà¿¡¼­, ó¸®Çϱâ À§ÇØ ÇϳªÀÇ µ¥ÀÌÅͺ£À̽º¸¦ ¼±ÅÃÇϰí, ±× µ¥ÀÌÅͺ£À̽º ³»ÀÇ °¢ Å×À̺íÀ» °Ë»çÇÕ´Ï´Ù. VACUUM³ª ANALYZE Ä¿¸Çµå´Â ÇÊ¿äÇÒ ¶§ Áö½ÃµË´Ï´Ù.

Å×À̺íÀÇ relfrozenxid°ªÀÌ autovacuum_freeze_max_ageÆ®·£Àè¼Çº¸´Ù ¿À·¡µÈ °æ¿ì, ±× Å×À̺íÀº Ç×»ó vaccuming µË´Ï´Ù. ±×¿Í ¹Ý´ëÀÏ ¶§´Â Àû¿ëÇÒ ¿¬»êÀ» °áÁ¤Çϱâ À§ÇØ 2°³ÀÇ Á¶°ÇÀ» »ç¿ëµË´Ï´Ù. ¸¶Áö¸· VACUUMÀÇ µÚ¿¡ ¾È ¾²ÀÌ´Â Æ©Çüö°¡ "vaccuming threshold"À» ÃʰúÇϸé, Å×À̺íÀº vaccuming µË´Ï´Ù. ÀÌ vaccuming thresholdÀº ÀÌÇÏ¿Í °°ÀÌ Á¤Àǵ˴ϴÙ.

vacuum threshold = vacuum base threshold + vacuum scale factor * number of tuples

¿©±â¼­, vaccuming ±âÃÊ thresholdÀºautovacuum_vacuum_threshold, vaccuming ½ºÄÉÀÏ °è¼ö´Âautovacuum_vacuum_scale_factor, Æ©Çà ¼ö´Âpg_class. reltuplesÀÔ´Ï´Ù. ¾È ¾²ÀÌ´Â Æ©Çà ¼ö´Â Åë°è ¼öÁý°¡·ÎºÎÅÍ ¾ò¾îÁý´Ï´Ù. ÀÌ´Â °¢ UPDATE, DELETE ¿¬»êÀ¸·Î °»½ÅµÇ´Â °ÅÀÇ Á¤È®ÇÑ ¼öÀÔ´Ï´Ù. (³ôÀº ºÎÇÏ·Î ÀϺΠÁ¤º¸´Â ¼Õ½ÇµÉ ¼ö Àֱ⠶§¹®¿¡, À̰ÍÀº °ÅÀÇ Á¤È®ÇÑ ¼öÀÔ´Ï´Ù.) ºÐ¼®À» À§Çؼ­ ºñ½ÁÇÑ Á¶°ÇÀÌ »ç¿ëµË´Ï´Ù.

analyze threshold = analyze base threshold + analyze scale factor * number of tuples

ÀÌÇÏ¿¡ Á¤ÀǵǴ thresholdÀÌ ¸¶Áö¸· ANALYZEÀÇ µÚ¿¡ »ðÀÔ, °»½ÅµÈ Æ©Çà ¼ö·Î ºñ±³µË´Ï´Ù.

µðÆúÆ® threshold°ú ½ºÄÉÀÏ °è¼ö´Â postgresql.conf·ÎºÎÅÍ ¾ò¾îÁöÁö¸¸, pg_autovacuum ½Ã½ºÅÛ Ä«Å»·Î±×¿¡ Ç׸ñÀ» »ý¼ºÇÏ´Â °ÍÀ¸·Î, Å×ÀÌºí¸¶´Ù °ãÃÄ ¾²´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. ƯÁ¤ÇÑ Å×ÀÌºí¿¡ ´ëÇØ¼­pg_autovacuumÇàÀÌ Á¸ÀçÇÒ °æ¿ì, ±×°÷¿¡ ÁöÁ¤ÇÑ ¼³Á¤ÀÌ Àû¿ëµË´Ï´Ù. ±×¿Í ¹Ý´ëÀÏ °æ¿ì, ÀüüÀûÀÎ ¼³Á¤ÀÌ »ç¿ëµË´Ï´Ù. ÀüüÀûÀÎ ¼³Á¤¿¡ °üÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº Section 17.9À» ÂüÁ¶ÇØ Áֽʽÿä.

±âº» threshold°ú ½ºÄÉÀÏ °è¼ö ¿Ü¿¡, pg_autovacuumÀÇ °¢ Å×ÀÌºí¿¡ ´ëÇØ 5°³ ÀÌ»óÀÇ ÆÄ¶ó¹ÌÅ͸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. 1 ¹øÂ°´Â pg_autovacuum.enabled·Î, false·Î ¼³Á¤ÇÏ¿© ÀÚµ¿ vacuumming demonÀÌ Å×À̺í Àüü¸¦ °Ç³Ê ¶Ùµµ·Ï Áö½ÃÇÕ´Ï´Ù. ÀÌ °æ¿ì ÀÚµ¿ vacuummingÀº Æ®·£Àè¼Ç IDÀÇ ·¦¾î¶ó¿îµå¸¦ ¸·¾Æ¾ß ÇÒ ¶§¸¸ Å×À̺íÀ» ´ë»óÀ¸·Î ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ 2°³ÀÇ ÆÄ¶ó¹ÌÅÍ, vaccuming ÄÚ½ºÆ® Áö¿¬(pg_autovacuum.vac_cost_delay)¿Í vaccuming ÄÚ½ºÆ® Á¦ÇÑ(pg_autovacuum. vac_cost_limit)ÀÔ´Ï´Ù. À̰͵éÀº ÄÚ½ºÆ®¿¡ ±Ù°ÅÇÏ´Â Vacuum Áö¿¬ ±â´É¿ëÀ¸·Î Å×ÀÌºí °íÀ¯ÀÇ °ªÀ» ¼³Á¤Çϱâ À§ÇØ »ç¿ëµË´Ï´Ù. ¸¶Áö¸· 2°³ÀÇ ÆÄ¶ó¹ÌÅÍ(pg_autovacuum.freeze_min_age) ¹×pg_autovacuum.freeze_max_age)´Â °¢°¢ Å×À̺í ÁöÁ¤ °ªÀ» vacuum_freeze_min_age, autovacuum_freeze_max_age¸¦ À§ÇØ ¼³Á¤ÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.

pg_autovacuum³»ÀÇ °ªÀÇ ÀϺΰ¡ À½ÀÇ ¼ýÀÚ·Î ¼³Á¤µÇ¾ú°Å³ª ƯÁ¤ÇÑ Å×À̺íÀ» À§ÇÑ pg_autovacuum¿¡ ÇàÀÌ Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì, postgresql.conf³»ÀÇ ´ëÀÀµÇ´Â °ªÀÌ »ç¿ëµË´Ï´Ù.

Çö½ÃÁ¡¿¡¼­´Â pg_autovacuumīŻ·Î±×¿¡ Ç׸ñÀ» »ý¼ºÇÏ·Á¸é, ¼öµ¿À¸·Î īŻ·Î±×¿¡ INSERTÇÒ ¼ö ¹Û¿¡ ¾ø½À´Ï´Ù. ÀÌ ±â´ÉÀº ÇâÈÄÀÇ ¸±¸®½º·Î °³¼± µÉ ¿¹Á¤ÀÔ´Ï´Ù. ¶ÇÇÑ, īŻ·Î±×ÀÇ Á¤Àǵµ º¯°æµÉ ¿¹Á¤ÀÔ´Ï´Ù.

Caution

ÇöÀç pg_autovacuum½Ã½ºÅÛ Ä«Å»·Î±×ÀÇ ³»¿ëÀº pg_dump¿Í pg_dumpallÅø·Î ÀÛ¼ºµÈ µ¥ÀÌÅͺ£À̽º ´ýÇÁ¿¡ ÀúÀåµÇÁö ¾Ê½À´Ï´Ù. ´ýÇÁ/¸®·ÎµåÀÇ °úÁ¤¿¡¼­ À̵éÀ» º¸°üÇÏ°í ½ÍÀ» °æ¿ì, īŻ·Î±×¸¦ ¼öµ¿À¸·Î È®½ÇÈ÷ ´ýÇÁÇÏ¿© Áֽʽÿä.