| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 27. ½Å·Ú¼º°ú ·Î±× ¼±Çà ±âÀÔ | Fast Forward | Next |
µ¥ÀÌÅͺ£À̽ºÀÇ ¼º´É¿¡ ¿µÇâÀ» ÁÖ´Â WAL¿¡ °ü·ÃÇÑ ¼³Á¤ ¸Å°³º¯¼ö°¡ ´Ù¼ö ÀÖ½À´Ï´Ù. º»Àý¿¡¼´Â, ±× »ç¿ë¹ýÀ» ¼³¸íÇÕ´Ï´Ù. ¼¹ö ¼³Á¤ ¸Å°³º¯¼öÀÇ ¼³Á¤ ¹æ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ °ÍÀº Chapter 17À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
üũÆ÷ÀÎÆ® ´Â, ÀÏ·ÃÀÇ Æ®·£Àè¼Ç¿¡¼, ¾²¿©Áø ¸ðµç Á¤º¸°¡ µ¥ÀÌÅÍ ÆÄÀÏÀÌ Ã¼Å© Æ÷ÀÎÆ® Àü¿¡ °»½ÅµÇ°í ÀÖ´ÂÁö º¸ÁõÇÏ´Â ½ÃÁ¡À» °¡¸®Åµ´Ï´Ù. üũ Æ÷ÀÎÆ®¿¡¼´Â, ¸ðµç ´õƼ µ¥ÀÌÅÍ ÆäÀÌÁö°¡ µð½ºÅ©¿¡ ³»º¸³»Á®, Ưº°ÇÑ Ã¼Å© Æ÷ÀÎÆ® ·¹Äڵ尡 ·Î±× ÆÄÀÏ¿¡ ±âÀԵ˴ϴÙ. Å©·¡½¬ ÇßÀ» ¶§, Å©·¡½¬ º¹±¸ 󸮴 ¸¶Áö¸· üũ Æ÷ÀÎÆ® ±â·ÏÀ» ã¾Æ³» ·Î±× ¾È¿¡¼ ¾î´À ·¹ÄÚµå(redo ·¹ÄÚµå·Î ºÒ¸®´Â)·ÎºÎÅÍ º¹±¸ 󸮰¡ REDO ·Î±× Á¶ÀÛÀ» ½ÃÀÛÇØ¾ßÇÒ °ÍÀΰ¡¸¦ °áÁ¤ÇÕ´Ï´Ù. ÀÌ Ã¼Å© Æ÷ÀÎÆ® ÀÌÀü¿¡ º¯°æµÈ µ¥ÀÌÅÍ´Â, ¹ú½á µð½ºÅ©»ó¿¡ ÀÖ´Â °ÍÀ¸·Î ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù. µû¶ó¼, üũ Æ÷ÀÎÆ®¸¦ ÇÑ ÈÄ, REDO ±â·Ï ³»ÀÇ Ã¼Å© Æ÷ÀÎÆ® ÀÌÀüÀÇ ·Î±× ¼¼±×¸àÆ®´Â ºÒÇÊ¿äÇØÁ®, ÀçÀÌ¿ë ¶Ç´Â »èÁ¦ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù (WAL¾ÆÄ«À̺ê(archive)¸¦ ÇÏ´Â °æ¿ì, ÀÌ ·Î±× ¼¼±×¸àÆ®´Â »èÁ¦ ȤÀº ÀçÀÌ¿ë µÇ±â Àü¿¡ º¸Á¸µÇ¾î¾ß ÇÕ´Ï´Ù).
¼¹öÀÇ ¹é±×¶ó¿îµå ¾²±â ÇÁ·Î¼¼½º´Â ÀÚµ¿ÀûÀ¸·Î üũ Æ÷ÀÎÆ®¸¦ ºó¹øÇÏ°Ô ½ÇÇàÇÕ´Ï´Ù. checkpoint_segments·Î±× ¼¼±×¸àÆ® ¼ö¿¡ À̸£´ÂÁö, ¶Ç´Â checkpoint_timeoutÃʰ¡ °æ°úÇÏ´ÂÁö, µÑ Áß ÇϳªÀÇ Á¶°ÇÀÌ Ã¤¿öÁö¸é üũ Æ÷ÀÎÆ®°¡ ÀÛ¼ºµË´Ï´Ù. ±âº»°ªÀº 3 ¼¼±×¸àÆ®¿Í 300Ãʰ¡ °¢°¢ ¼³Á¤µÇ°í ÀÖ½À´Ï´Ù. ¶Ç, CHECKPOINT SQL ¸í·ÉÀ» »ç¿ëÇØ °Á¦ÀûÀ¸·Î üũ Æ÷ÀÎÆ®¸¦ ÀÛ¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
checkpoint_segments, checkpoint_timeout, ¶Ç´Â µÑ ´Ù °¨¼Ò½Ã۸é, üũ Æ÷ÀÎÆ®´Â º¸´Ù ºó¹øÇÏ°Ô ÇàÇØÁý´Ï´Ù. À̰Ϳ¡ ÀÇÇØ, (Àçó¸®ÇØ¾ß ÇÒ ÀÏÀÌ Àû±â ¶§¹®¿¡) Å©·¡½¬ ÈÄÀÇ º¹±Í´Â »¡¶óÁý´Ï´Ù. ±×·¯³ª, º¸´Ù ºó¹øÇÏ°Ô ÇàÇØÁö´Â, º¯°æµÈ µ¥ÀÌÅÍ ÆäÀÌÁöÀÇ Ãâ·ÂÀ¸·Î ÀÎÇØ Áõ°¡ÇÏ´Â ºñ¿ë¿Í ±ÕÇüÀ» »ý°¢ÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. full_page_writes´Â ¼³Á¤µÈ °æ¿ì(±âº»°ªÀ¸·Î), ±× ¹Û¿¡ °í·ÁÇØ¾ß ÇÒ Á¡ÀÌ ÀÖ½À´Ï´Ù. µ¥ÀÌÅÍ ÆäÀÌÁöÀÇ Àϰü¼ºÀ» º¸ÁõÇϱâ À§Çؼ, °¢ üũ Æ÷ÀÎÆ® ÈÄ¿¡ ÃÖÃÊ·Î º¯°æµÇ´Â µ¥ÀÌÅÍ ÆäÀÌÁö´Â, ±× ÆäÀÌÁö ÀüüÀÇ ³»¿ëÀÌ ·Î±×¿¡ º¸Á¸µÇ°Ô µË´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì, üũ Æ÷ÀÎÆ®ÀÇ °£°ÝÀ» ÁÙÀÌ´Â °ÍÀº, WAL ·Î±×¿¡ÀÇ Ãâ·ÂÀ» Áõ°¡½ÃÄÑ, °£°ÝÀ» ª°Ô ÇÏ´Â ¸ñÀûÀ» ¹«ÀǹÌÇÏ°Ô Çϸç, º¸´Ù ¸¹Àº µð½ºÅ© I/O°¡ ¹ß»ýÇÕ´Ï´Ù.
üũ Æ÷ÀÎÆ®´Â ²Ï °í°¡ÀÔ´Ï´Ù. 1¹øÀÇ ÀÌÀ¯´Â, ÀÌ Ã³¸®´Â Çö½ÃÁ¡ÀÇ ¸ðµç ´õƼ ¹öÆÛ¸¦ ½á³»¾ß ÇÑ´Ù´Â °Í, 2¹øÂ°ÀÇ ÀÌÀ¯´Â, »ó±â¿Í °°ÀÌ ±× ÈÄ¿¡ ºÒÇÊ¿äÇÑ WALÀÇ ±âÀÔÀÌ ¹ß»ýÇÏ´Â °ÍÀÔ´Ï´Ù. ±× ¶§¹®¿¡, üũ Æ÷ÀÎÆ®ÀÇ ¸Å°³º¯¼ö¸¦ ³ô°Ô ÇØ, üũ Æ÷ÀÎÆ®°¡ ³Ê¹« ºó¹ßÇÏ´Â °ÍÀÌ ¾ø°Ô ÇÏ´Â °ÍÀ» ±ÇÇÕ´Ï´Ù. °£´ÜÇÑ Ã¼Å© Æ÷ÀÎÆ®ÀÇ ¸Å°³º¯¼öÀÇ °ÇÀü¼º °Ë»ç·Î¼ checkpoint_warning¸Å°³º¯¼ö¸¦ ¼³Á¤ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. üũ Æ÷ÀÎÆ®ÀÇ ¹ß»ý °£°ÝÀÌcheckpoint_warningÃÊÀÇ °æ¿ì, checkpoint_segmentsÀÇ Áõ°¡¸¦ ±ÇÇÏ´Â ¸Þ¼¼Áö°¡ ¼¹öÀÇ ·Î±×¿¡ Ãâ·ÂµË´Ï´Ù. ÀÌ ¸Þ¼¼Áö°¡ µå¹°°Ô ³ªÅ¸³µ´Ù°í ÇØµµ ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù¸¸, ºóÃâÇÏ´Â °Í °°À¸¸é, üũ Æ÷ÀÎÆ®ÀÇ Á¦¾î ¸Å°³º¯¼ö¸¦ Áõ°¡½ÃÄÑ¾ß ÇÕ´Ï´Ù. checkpoint_segments¸¦ ÃæºÐÈ÷ ³ô°Ô ¼³Á¤Çϰí ÀÖÁö ¾ÊÀ¸¸é ´ë±Ô¸ðCOPYÀü¼Û µîÀÇ Àϰý ÀÛ¾÷À¸·Î ÀÌ·¯ÇÑ °æ°í°¡ ¸¹ÀÌ ¹ß»ýÇÒÁöµµ ¸ð¸¨´Ï´Ù.
WAL ¼¼±×¸àÆ® ÆÄÀÏÀº Ç×»ó Àû¾îµµ 1°³ ÀÖÀ¸¸ç, ÀϹÝÀûÀ¸·Î (2 + checkpoint_completion_target)¡¿checkpoint_segments + 1º¸´Ù ¸¹Áö´Â ¾Ê½À´Ï´Ù. °¢ ¼¼±×¸àÆ® ÆÄÀÏÀº Åë»ó 16 ¸Þ°¡¹ÙÀÌÆ®(ÀÌ »çÀÌÁî´Â ¼¹öÀÇ ÄÄÆÄÀϽ÷Πº¯°æ °¡´É)ÀÔ´Ï´Ù. À̰ÍÀ¸·ÎºÎÅÍ, WAL·Î ÇÊ¿äÇÏ°Ô µÇ´Â ¿µ¿ªÀ» ÃßÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. º¸Åë, ³°Àº ¼¼±×¸àÆ® ÆÄÀÏÀÌ ºÒÇÊ¿äÇÏ°Ô µÇ¾úÀ» ¶§, ±×°ÍµéÀº ÀçÀÌ¿ë(Â÷·Ê·Î ´ÙÀ½ ¼¼±×¸àÆ®°¡ µÇµµ·Ï À̸§À» º¯°æ)µË´Ï´Ù. ´Ü½Ã°£ÀÇ ·Î±× Ãâ·ÂÀÇ ÃÖ°íÄ¡ ¶§¹®¿¡, ¼¼±×¸àÆ® ÆÄÀϼö°¡ 3¡¿checkpoint_segments + 1À» ³Ñ¾úÀ» °æ¿ì, ½Ã½ºÅÛÀº, ÀÌ Á¦ÇÑ ÃÖ°íÄ¡ ÀÌÇϰ¡ µÉ ¶§±îÁö, ºÒÇÊ¿äÇÏ°Ô µÈ ¼¼±×¸àÆ® ÆÄÀÏÀ» ÀçÀÌ¿ëÇÏÁö ¾Ê°í, »èÁ¦ÇÕ´Ï´Ù.
ÀÚÁÖ »ç¿ëµÇ´Â 2°³ÀÇ ³»ºÎWALÇÔ¼ö°¡ ÀÖ½À´Ï´Ù.
LogInsert¿Í LogFlushÀÔ´Ï´Ù.
LogInsert´Â °øÀ¯ ¸Þ¸ð¸®»óÀÇ WAL¹öÆÛ¿¡ »õ·Î¿î ·¹Äڵ带 »ðÀÔÇÕ´Ï´Ù.
»õ·Î¿î ·¹Äڵ带 »ðÀÔÇÒ ¿©Áö°¡ ¾øÀ» ¶§, LogInsert´Â ¸¸¹è°¡ µÈ WAL¹öÆÛ¸¦ ±âÀÔ(Ä¿³Ú ij½¬¿¡ À̵¿) ÇØ¾ß ÇÕ´Ï´Ù.
À̰ÍÀº ¹Ù¶÷Á÷ÇÑ ÀÏÀÌ ¾Æ´Õ´Ï´Ù.
¿Ö³ÄÇϸé, µ¥ÀÌÅͺ£À̽º¿¡ Àú·¹º§ÀÇ º¯°æ(¿¹¸¦ µé¸é ÇàÀÇ »ðÀÔ)¿¡ LogInsert°¡ ºÒ·¯ÁöÁö¸¸,
±×·¯ÇÑ °æ¿ì¿¡´Â º¯°æÀ» ¹ÞÀº ÆäÀÌÁö¿¡ ´ëÇØ¼ ´Üµ¶ ¶ôÀÌ °É·ÁÀÖÀ¸¹Ç·Î, ÀÌ Á¶ÀÛÀº °¡´ÉÇÑ ÇÑ ºü¸£°Ô ½ÇÇàµÇ¾î¾ß ÇÕ´Ï´Ù.
´õ ¾ÈÁÁÀº °ÍÀº, WAL¹öÆÛ¿¡ ±âÀÔ ½Ã¿¡, ÇÑÃþ ´õ ½Ã°£ÀÌ °É¸®´Â, °Á¦ÀûÀÎ »õ·Î¿î ·Î±× ¼¼±×¸àÆ®ÀÇ »ý¼ºÀÌ ÇÊ¿äÇÒÁöµµ ¸ð¸¨´Ï´Ù.
ÀϹÝÀûÀ¸·Î, WALÀÇ ±âÀÔ°ú È£ÃâÀº LogFlush¿ä±¸·Î ½Ç½ÃµË´Ï´Ù.
À̰ÍÀº ´ëºÎºÐÀÇ °æ¿ì, Æ®·£Àè¼Ç Ä¿¹Ô ½Ã¿¡ ¿µ±¸ÀûÀÎ ±â¾ï ¿µ¿ª¿¡ Æ®·£Àè¼Ç ·¹Äڵ尡 ³»º¸³»Áö´Â °ÍÀ» º¸ÁõÇϱâ À§Çؼ ÇàÇØÁý´Ï´Ù.
·Î±× Ãâ·ÂÀÌ ´ë·®À¸·Î ÇàÇØÁö´Â ½Ã½ºÅÛ¿¡¼´Â, LogInsert¿¡ ÀÇÇØ ÇÊ¿äÇÑ ±âÀÔÀ» ¸·À» Á¤µµ·Î´Â
LogFlush¿ä±¸°¡ ºó¹øÇÏ°Ô ÀϾÁö ¾ÊÀ»Áöµµ ¸ð¸¨´Ï´Ù.
±×·¯ÇÑ ½Ã½ºÅÛ¿¡¼´Â, wal_buffers¼³Á¤ ¸Å°³º¯¼ö¸¦ º¯°æÇØ WAL¹öÆÛÀÇ ¼ö¸¦ ´Ã·Á ÁÖ¼¼¿ä.
±âº»°ªÀÇ WAL¹öÆÛÀÇ ¼ö´Â 8ÀÔ´Ï´Ù.
ÀÌ ¼ö¸¦ ´Ã¸®¸é °øÀ¯ ¸Þ¸ð¸®ÀÇ »ç¿ë·®¿¡ ¿µÇâÀÌ ÀÖ½À´Ï´Ù.
full_page_writesÀÌ ¼³Á¤µÇ¾î, ½Ã½ºÅÛÀÌ °íºÎÇÏ »óÅÂÀÎ °æ¿ì, ÀÌ °ªÀ» ³ô°Ô ÇØ, °¢ üũ Æ÷ÀÎÆ®ÀÇ Á÷ÈÄ ÀÀ´ä ½Ã°£À» ¸Å²ô·´°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
commit_delay¸Å°³º¯¼ö´Â, LogInsert°¡ Ä¿¹Ô ·¹Äڵ带 ·Î±×¿¡ ±âÀÔÇϰí,
±×·¯³ª, LogFlush¸¦ Çϱâ Àü¿¡, ¼¹ö ÇÁ·Î¼¼½º°¡ ¸î ¸¶ÀÌÅ©·ÎÃÊ ÈÞÁöÇÏ´ÂÁö¸¦ Á¤ÀÇÇÕ´Ï´Ù.
ÀÌ Áö¿¬¿¡ ÀÇÇØ, ´Ù¸¥ ¼¹ö ÇÁ·Î¼¼½º°¡ Ä¿¹Ô ·¹Äڵ带 ·Î±×¿¡ ±âÀÔÇÑ ÈÄ, ±× ¸ðµç ·Î±× ·¹Äڵ带 1ȸÀÇ ·Î±× µ¿½Ã¿¡ ³»º¸³¾ ¼ö ÀÖ½À´Ï´Ù.
fsync ¹«È¿ÀÎ °æ¿ì³ª, commit_siblingsº¸´Ù ÀûÀº ¼öÀÇ ¼¼¼ÇÀÌ ÇöÀç Ȱµ¿ ÁßÀÎ Æ®·£Àè¼ÇÀ» ÇÏÁö ¾Ê´Â °æ¿ì´Â,
ÈÞÁöÇÏÁö ¾Ê½À´Ï´Ù.
ÀÌ¿¡ ÀÇÇØ, °ð¹Ù·Î Ä¿¹ÔÇÒ ¼¼¼ÇÀÌ ¾øÀ» °Í °°Àº ¶§¿¡µµ, ÈÞÁöÇÏ´Â °ÍÀ» ¸·À» ¼ö°¡ ÀÖ½À´Ï´Ù.
´ëºÎºÐÀÇ Ç÷§Æû¿¡¼´Â, ÈÞÁöÀÇ ÃÖ¼Ò´ÜÀ§´Â 10 ¸¶ÀÌÅ©·ÎÃÊÀÎ °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.
±×·¡¼, 1¸¶ÀÌÅ©·ÎÃÊ¿¡¼ 10,000¸¶ÀÌÅ©·ÎÃÊ »çÀÌ¿¡¼ÀÇ, 0ÀÌ ¾Æ´Ñ commit_delayÀÇ ¼³Á¤Àº, °°Àº È¿°ú¸¦ °¡Áö°Ô µÉ °ÍÀÔ´Ï´Ù.
ÀÌ·¯ÇÑ ¸Å°³º¯¼öÀÇ ÀûÀýÇÑ °ªÀº ¾ÆÁ÷ ¸íÈ®ÇÏÁö´Â ¾Ê½À´Ï´Ù. ½ÇÇèÀÌ ÇÊ¿äÇÕ´Ï´Ù.
wal_sync_method¸Å°³º¯¼ö´Â PostgreSQL°¡ Ä¿³Ú¿¡ ´ëÇØ¼ WALÀ» µð½ºÅ©¿¡ °»½ÅÇÏ´Â °ÍÀ» ¿ä±¸ÇÏ´Â ¹æ¹ýÀ» °áÁ¤ÇÕ´Ï´Ù. ¾î¶² ¼³Á¤¿¡¼µµ ½Å·Ú¼ºÀº °°Áö¸¸, °¡Àå ºü¸¥ °ÍÀº Ç÷§Æû ¼³Á¤¿¡µû¶ó ´Ù¸¨´Ï´Ù. µ¡ºÙ¿©¼, ÀÌ ¸Å°³º¯¼ö´Â fsync°¡ ¹«È¿°¡ µÈ °æ¿ì¿¡´Â µµ¿òÀÌ µÇÁö ¾Ê½À´Ï´Ù.
wal_debug¼³Á¤ ¸Å°³º¯¼ö¸¦ À¯È¿ÇÏ°Ô ÇÏ´Â °ÍÀ¸·Î,
LogInsert¿ÍLogFlush¶ó°í ÇÏ´Â WALÈ£ÃâÀº ¸Åȸ ¼¹ö ·Î±×¿¡ ·Î±×°¡ ³²½À´Ï´Ù
(ÀÌ ¸Å°³º¯¼ö¸¦ Áö¿øÇϵµ·Ï PostgreSQL¸¦ ÄÄÆÄÀÏ ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù).
ÈÄ¿¡, ÀÌ ¿É¼ÇÀº º¸´Ù ÀϹÝÀûÀÎ ±â°è¿¡ ¿Å°ÜÁú °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù.