25.2. Åë°è ¼öÁý±â

PostgreSQLÀÇ Åë°è ¼öÁý±â´Â ¼­¹öÀÇ È°µ¿ »óȲ¿¡ °üÇÑ Á¤º¸¸¦ ¼öÁýÇÏ°í º¸°íÇÏ´Â ÇÏÀ§½Ã½ºÅÛÀÔ´Ï´Ù. ÇöÀç, ¼öÁý±â´Â Å×À̺í°ú À妽ºÀÇ ¾×¼¼½º¸¦ µð½ºÅ© ºí·Ï ¹× °³°³ÀÇ Çà ´ÜÀ§·Î ¼¿ ¼ö°¡ ÀÖ½À´Ï´Ù. ¶ÇÇÑ °¢ Å×ÀÌºí³»ÀÇ ÃÑ ÇàÀÇ ¼ö¿Í °¢ Å×À̺íÀÇ ÃÖ±Ù vacuum°ú ºÐ¼® ½Ã°¢À» ÃßÀûÇÕ´Ï´Ù.

PostgreSQL´Â ¶ÇÇÑ, ´Ù¸¥ ¼­¹ö ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ½ÇÇàµÇ°í ÀÖ´Â Äõ¸®¸¦ Á¤È®ÇÏ°Ô °áÁ¤ÇÏ´Â ±â´ÉÀ» Áö¿øÇÕ´Ï´Ù. ÀÌ´Â µ¶¸³ÀûÀÎ ±â´ÉÀ̸ç, ¼öÁý±â ÇÁ·Î¼¼½º¿¡ ÀÇÁ¸ÇÏÁö ¾Ê½À´Ï´Ù.

25.2.1. Åë°è ¼öÁý ¼³Á¤

Åë°è ¼öÁýÀ¸·Î Äõ¸® ½ÇÇà¿¡ ¾à°£ÀÇ overhead°¡ ¹ß»ýÇϱ⠶§¹®¿¡, ½Ã½ºÅÛÀº Á¤º¸ÀÇ ¼öÁý ¿©ºÎ¸¦ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀº º¸Åë postgresql.conf ³»¿¡¼­ ¼³Á¤µÇ´Â ¼³Á¤ ÆÄ¶ó¹ÌÅÍ¿¡ ÀÇÇØ Á¦¾îµË´Ï´Ù. (¼³Á¤ ÆÄ¶ó¹ÌÅÍÀÇ ¼³Á¤¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ »çÇ×Àº Chapter 17À» ÂüÁ¶ÇϽʽÿä)

stats_start_collector ÆÄ¶ó¹ÌÅÍ´Â µ¿ÀÛÇÒ Åë°è ¼öÁý±â¸¦ À§ÇØ ¸ðµÎ true·Î ¼³Á¤µÇÀÖ¾î¾ß ÇÕ´Ï´Ù. ÆÄ¶ó¹ÌÅÍ´Â µðÆúÆ®³ª ÃßõµÈ ¼³Á¤À¸·Î µÇÀÖ½À´Ï´Ù. ±×·¯³ª ÆÄ¶ó¹ÌÅÍ´Â ´õÀÌ»ó Åë°èÁ¤º¸¿¡ °ü½ÉÀÌ ¾ø°Å³ª ¸ðµç overhead°¡ ¾ÐÃàµÇ±æ ¿øÇÏ´Â °æ¿ì Áß´ÜµÉ ¼ö ÀÖ½À´Ï´Ù. (±×·¯³ª, ÀÌ·Î ÀÎÇÑ Àý¾àÀº »ý°¢º¸´Ù Àû½À´Ï´Ù.) ÀÌ ¿É¼ÇÀº ¼­¹ö°¡ ½ÇÇàµÇ´Â µ¿¾È º¯°æµÉ ¼ö ÀÖ´Ù´Â °ÍÀ» ÁÖÀÇÇϽʽÿä.

stats_block_level¿Í stats_row_level ÆÄ¶ó¹ÌÅÍ´Â ¾ó¸¶³ª ¸¹Àº Á¤º¸µéÀÌ ½ÇÁ¦ÀûÀ¸·Î ¼öÁý±â¿¡ º¸³»Áö´Â °¡¸¦ °ü¸®ÇÕ´Ï´Ù. ±×¿¡ µû¸¥ run-time overhead°¡ ¾ó¸¶³ª ¹ß»ýÇÏ´Â Áö¸¦ °áÁ¤ÇÕ´Ï´Ù. ÀÌ °áÁ¤µéÀº ¼­¹ö ÇÁ·Î¼¼½º°¡ disk-block-level¿Í row-level ¾×¼¼½º Åë°èÁ¤º¸¸¦ ÃßÀûÇϰí, À̵éÀ» ¼öÁý±â·Î º¸³»µµ·Ï ÇÕ´Ï´Ù. °Ô´Ù°¡, ÀÌ ÆÄ¶ó¹ÌÅ͵éÀÌ ¸ðµÎ ¼³Á¤µÆÀ» °æ¿ì, °¢°¢ÀÇ µ¥ÀÌÅͺ£À̽º Æ®·£Á§¼ÇÀº 󸮵ǰí, ¼öÁýµÈ Åë°èÁ¤º¸´Â Áߴܵ˴ϴÙ.

ÆÄ¶ó¹ÌÅÍ stats_command_string´Â ¾î¶² ¼­¹ö ÇÁ·Î¼¼½º¿¡ ÀÇÇØ ½ÇÇàµÇ´Â ÇöÀç Ä¿¸Çµå¶óµµ ¸ð´ÏÅ͸µÀÌ °¡´ÉÇÕ´Ï´Ù. Åë°è ¼öÁý±â ÇÏÀ§ÇÁ·Î¼¼½º´Â ÀÌ·¯ÇÑ ±â´ÉÀ» À§ÇØ ½ÇÇà ÁßÀÏ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.

º¸Åë ÀÌ·¯ÇÑ ÆÄ¶ó¹ÌÅÍ´Â ¸ðµç ¼­¹ö ÇÁ·Î¼¼½º¿¡ Àû¿ëµÉ ¼ö ÀÖµµ·Ï postgresql.conf¿¡ ¼³Á¤µÇ¾îÁý´Ï´Ù. ±×·¯³ª SET Ä¿¸àµå¸¦ »ç¿ëÇØ¼­, °³º°ÀûÀÎ ¼¼¼ÇÀ» ½ÃÀÛ½ÃŰ°Å³ª ÁߴܽÃų ¼ö ÀÖ½À´Ï´Ù. (ÀÏ¹Ý À¯Àú°¡ ±× Ȱµ¿À» °ü¸®ÀÚ¿¡°Ô ¼û±â´Â °ÍÀ» ¹æÁöÇϱâ À§Çؼ­, ½´ÆÛ À¯Àú¸¸ÀÌ SET¸¦ »ç¿ëÇØ ÀÌ·¯ÇÑ ÆÄ¶ó¹ÌÅ͸¦ º¯°æÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù).

Note: µðÆúÆ® ¼³Á¤À¸·Î stats_block_level ÆÄ¶ó¹ÌÅÍ¿Í stats_row_level µðÆúÆ®·Î ÀÎÇØ false, ÀÛÀº Åë°è°¡ ¼öÁýµË´Ï´Ù. ÀÌ·¯ÇÑ ¼³Á¤ º¯¼ö´Â Åë°è ±â´É¿¡ ÀÇÇØ Ãß°¡ÀûÀÎ run-time overheadÀÇ ÁöÃâ¿¡ ºñÇØ¼­ À¯¿ëÇÑ µ¥ÀÌÅÍÀÇ ¾çÀÌ »ó´çÈ÷ Áõ°¡µÉ ¼ö ÀÖ½À´Ï´Ù.

25.2.2. ¼öÁýÇÑ Åë°è Ç¥½Ã

Åë°èÀÇ ¼öÁý °á°ú¸¦ Ç¥½ÃÇϱâ À§ÇÑ, ¸î °³ÀÇ Á¤ÀÇµÈ ºä´Â Table 25-1¿¡¼­ º¸¿©Áö°í ÀÖ½À´Ï´Ù. ±× ¹Û¿¡µµ, ±âÃÊÀûÀÎ Åë°è ÇÔ¼ö¸¦ »ç¿ëÇÑ µ¶ÀÚÀûÀÎ ºä¸¦ ±¸ÃàÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ Åë°è Á¤º¸¸¦ »ç¿ëÇØ, ÇöÀçÀÇ È°µ¿ »óȲÀ» °¨½ÃÇÏ´Â °æ¿ì, ÀÌ Á¤º¸´Â Áï½Ã °»½ÅµÇÁö ¾Êµµ·Ï ÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. µ¶¸³ÀûÀÎ ¼­¹ö ÇÁ·Î¼¼½º´Â ´ë±â »óŰ¡ µÇ±â Àü¿¡, »õ·Î¿î Åë°è¿¡ °üÇÑ ¼ö¸¦ ¼öÁý±â¿¡ Àü¼ÛÇÕ´Ï´Ù. ±×·¯¹Ç·Î ½ÇÇà ÁßÀÇ Äõ¸®³ª Æ®·£Àè¼Ç(transaction)´Â Ç¥½ÃµÇ´Â ÃѰ迡´Â ¿µÇâÀ» ÁÖÁö ¾Ê½À´Ï´Ù. ¶Ç, ¼öÁý±â ÀÚüµµ ´ë·« PGSTAT_STAT_INTERVAL(¼­¹ö ±¸Ãà½Ã º¯°æµÇÁö ¾Ê´Â ÇÑ 500) milliseconds¿¡ ÇÑ ¹ø »õ·Î¿î º¸°í¸¦ ÇÕ´Ï´Ù. ±×·¯¹Ç·Î, Ç¥½ÃµÇ´Â Á¤º¸´Â ½ÇÁ¦ Ȱµ¿À¸·ÎºÎÅÍ ´Ê°Ô Ç¥½ÃµË´Ï´Ù. ±×·¯³ª track_activities·Î ¼öÁýµÇ´Â ÇöÀç Äõ¸® Á¤º¸´Â Ç×»ó ÃÖ½ÅÀÔ´Ï´Ù.

ÀÌ ´Ù¸¥ Áß¿äÇÑ Æ÷ÀÎÆ®´Â ¾ðÁ¦ ¼­¹ö ÇÁ·Î¼¼½º°¡ Åë°è Á¤º¸¸¦ Ç¥½ÃÇϵµ·Ï Çϴ°¡ ÀÔ´Ï´Ù. ¼­¹ö ÇÁ·Î¼¼½º´Â ¿ì¼± ¼öÁý±â¿¡ ÀÇÇØ ¹ßÇàµÈ °¡Àå ÃÖ±ÙÀÇ º¸°í¸¦ ²¨³À´Ï´Ù. ±×¸®°í ÇöÀç Æ®·£Àè¼Ç(transaction)ÀÌ ³¡³¯ ¶§±îÁö ¸ðµç Åë°è ºä¿Í ÇÔ¼ö¿¡ ´ëÇØ snapshot¸¦ °è¼Ó »ç¿ëÇÕ´Ï´Ù. Áï, ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)¸¦ °è¼ÓµÇ´Â µ¿¾È, Åë°è Á¤º¸´Â º¯°æµÇÁö ¾Ê½À´Ï´Ù. ºñ½ÁÇϰԵµ ¸ðµç ÇÁ·Î¼¼½ºÀÇ ÇöÀç Äõ¸®¿¡ °üÇÑ Á¤º¸µµ Á¤º¸°¡ Æ®·£Àè¼Ç(transaction)¿¡ óÀ½ ¿ä±¸µÇ¾úÀ» ¶§ ¼öÁýµÇ¾îÁý´Ï´Ù. ±×¸®°í Æ®·£Àè¼Ç(transaction) µ¿¾È °°Àº Á¤º¸°¡ Ç¥½ÃµË´Ï´Ù. ÀÌ´Â ¹ö±×°¡ ¾Æ´Ñ ±â´ÉÀÔ´Ï´Ù. ¿Ö³ÄÇϸé Åë°è¿¡ ´ëÇÑ º¹¼öÀÇ Äõ¸®¸¦ ½ÇÇàÇϰí, ¸ð¸£´Â »çÀÌ °ªÀÌ º¯°æµÇ´Â °ÍÀ» °ÆÁ¤ÇÏÁö ¾ÊÀº °á°ú¸¦ ¼­·Î ¿¬°ü½Ãų ¼ö Àֱ⠶§¹®ÀÔ´Ï´Ù. ±×·¯³ª °¢ Äõ¸®¿¡ ´ëÇØ »õ·Î¿î °á°ú¸¦ ¿øÇÒ °æ¿ì, Æ®·£Á§¼Ç ºí·ÏÀÇ ¿ÜºÎ¿¡¼­ Äõ¸®¸¦ ½ÇÇàÇØ¾ß¸¸ ÇÕ´Ï´Ù. ±× ¿Ü¿¡µµ, pg_stat_clear_snapshot()¸¦ È£ÃâÇÒ ¼öµµ ÀÖ½À´Ï´Ù. À̰ÍÀº ÇöÀçÀÇ Æ®·£Àè¼Ç(transaction)ÀÇ Åë°è Á¤º¸ snapshotÀ»(¸¸¾à ÀÖÀ¸¸é) ÆÄ±âÇÕ´Ï´Ù. ´ÙÀ½¿¡ Åë°è Á¤º¸¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡ »õ·Î¿î snapshot¸¦ ²¨³»µµ·Ï ÇÒ °ÍÀÔ´Ï´Ù.

Table 25-1. Ç¥ÁØ Åë°è ºä

ºä¸í ¼³¸í
pg_stat_activity ¼­¹ö ÇÁ·Î¼¼½º¸¶´Ù ÇÑ °³ÀÇ ÇàÀº µ¥ÀÌÅͺ£À̽ºÀÇ OID, µ¥ÀÌÅͺ£À̽º¸í, ÇÁ·Î¼¼½ºID, À¯Àú OID, À¯Àú¸í, ÃÖ±Ù Äõ¸®, Äõ¸®ÀÇ ´ë±â »óÅÂ, ÃÖ±ÙÀÇ Æ®·£Àè¼Ç(transaction)ÀÇ ½ÃÀ۽ð¢, ÃÖ±ÙÀÇ Äõ¸® ½ÇÇà ½ÃÀ۽ð¢, ÇÁ·Î¼¼½º ½ÃÀ۽ð¢, Ŭ¶óÀÌ¾ðÆ® ÁÖ¼Ò¿Í Æ÷Æ® ¹øÈ£¸¦ Ç¥½ÃÇÕ´Ï´Ù. track_activities ÆÄ¶ó¹ÌÅͰ¡ ÁߴܵÇÁö ¾Ê¾Ò´Ù¸é ÃÖ±Ù Äõ¸®¸¦ º¸°íÇÏ´Â µ¥ÀÌÅÍ ¿­Àº »ç¿ë °¡´ÉÇÕ´Ï´Ù. °Ô´Ù°¡ ÀÌ ¿­Àº ºä¸¦ È®ÀÎÇÏ´Â À¯Àú°¡ ½´ÆÛÀ¯ÀúÀ̰ųª º¸°íµÇ´Â ÇÁ·Î¼¼½º¸¦ ¼ÒÀ¯ÇÏ´Â À¯Àú¿¡°Ô¸¸ º¸¿©Áú ¼ö ÀÖ½À´Ï´Ù.
pg_stat_database µ¥ÀÌÅͺ£À̽º¸¶´Ù ÇϳªÀÇ Çà, µ¥ÀÌÅͺ£À̽º¿¡ º¸¿©Áö´Â OID, µ¥ÀÌÅͺ£À̽º¸í, Á¢¼ÓµÇ¾î Ȱµ¿ ÁßÀÎ ¼­¹ö ÇÁ·Î¼¼½º ¼ö, 󸮵ǰųª ·Ñ¹é(rollback)µÈ Æ®·£Àè¼Ç(transaction)ÀÇ ¼ö, ÀÐÇôÁø µð½ºÅ© ºí·ÏÀÇ ¼ö, ¹öÆÛ È÷Æ®ÀÇ ¼ö(Áï, ¹öÆÛ ij½¬¿¡ ÀÌ¹Ì Á¸ÀçÇÏ´Â ºí·ÏÀ» ãÀ½À¸·Î½á ¿¹¹æÇÏ´Â ºí·Ï Àб⠿äû)
pg_stat_all_tables ÇöÀç µ¥ÀÌÅͺ£À̽º ³»ÀÇ °¢ Å×À̺í(TOAST Å×ÀÌºí Æ÷ÇÔ)¿¡ °üÇÑ, Å×À̺íÀÇ OID, ½ºÅ°¸¶¿Í Å×À̺í¸í, ½ÃÀÛµÈ ¿¬¼ÓÀûÀÎ ½ºÄµÀÇ ¼ö, ¿¬¼ÓÀûÀÎ ½ºÄµÀ¸·Î ¾ò¾îÁø ½ÇÁ¦ ÇàÀÇ ¼ö, (Å×ÀÌºí¿¡ ¼ÓÇÏ´Â ¸ðµç À妽º¿¡ ´ëÇØ) ½ÃÀÛµÈ À妽º ½ºÄµ ¼ö, À妽º ½ºÄµÀ¸·Î ¾ò¾îÁø ½ÇÁ¦ ÇàÀÇ ¼ö, »ðÀÔ, °»½Å, »èÁ¦µÈ Çà¼ö, HOT(Áï, ºÐ¸®ÇÑ À妽º °»½ÅÀÌ ¾øÀ½)¿´´ø ¾÷µ¥ÀÌÆ®µÈ ÇàÀÇ ¼ö, À¯È¿ÇÑ ÇàÀÇ ¼ö, ¾µ¸ð¾ø´Â ÇàÀÇ ¼ö, ¼öÀÛ¾÷À¸·Î Å×À̺íÀÌ vacuumµÈ ¸¶Áö¸· ½Ã°¢, ÀÚµ¿vacuum demon¿¡ ÀÇÇØ vacuumµÈ ¸¶Áö¸· ½Ã°¢, ¼öÀÛ¾÷À¸·Î ºÐ¼®µÈ ¸¶Áö¸· ½Ã°¢, ÀÚµ¿ Áø°ø demon¿¡ ÀÇÇØ ºÐ¼®µÈ ¸¶Áö¸· ½Ã°¢.
pg_stat_sys_tables ½Ã½ºÅÛ Å×À̺íÀÌ º¸¿©Áö´Â °Í¸¸À» Á¦¿ÜÇϰí pg_stat_all_tables¿Í °°½À´Ï´Ù.
pg_stat_user_tables À¯Àú Å×À̺íÀÌ º¸¿©Áö´Â °Í¸¸À» Á¦¿ÜÇϰí pg_stat_all_tables¿Í °°½À´Ï´Ù.
pg_stat_all_indexes ÇöÀç µ¥ÀÌÅͺ£À̽º ³»ÀÇ °¢ À妽º¿¡ °üÇÑ, Å×À̺í°ú À妽ºÀÇ OID, ½ºÅ°¸¶, Å×À̺í°ú À妽º¸í, ½ÃÀÛµÈ À妽º ½ºÄµ ¼ö, À妽º ½ºÄµ¿¡ ÀÇÇØ ÀÐÇôÁø À妽º Ç׸ñ ¼ö¿Í À妽º¸¦ »ç¿ëÇÑ ´Ü¼øÇÑ À妽º ½ºÄµÀ¸·Î ¾ò¾îÁø ½ÇÁ¦ Å×À̺í ÇàÀÇ ¼ö.
pg_stat_sys_indexes ½Ã½ºÅÛ Å×À̺íÀÇ À妽º°¡ º¸¿©Áø´Ù´Â °Í¸¸À» Á¦¿ÜÇϰí pg_stat_all_indexes¿Í °°½À´Ï´Ù.
pg_stat_user_indexes ½Ã½ºÅÛ Å×À̺íÀÇ À妽º°¡ º¸¿©Áø´Ù´Â °Í¸¸À» Á¦¿ÜÇϰí pg_stat_all_indexes¿Í °°½À´Ï´Ù.
pg_statio_all_tables ÇöÀç µ¥ÀÌÅͺ£À̽º ³»ÀÇ °¢ Å×À̺í(TOAST Å×À̺íÀ» Æ÷ÇÔ)¿¡ °üÇÑ, Å×À̺íÀÇ OID, ½ºÅ°¸¶¿Í Å×À̺í¸í, Å×ÀÌºí¿¡¼­ ÀоîµéÀÎ µð½ºÅ© ºí·ÏÀÇ ÃÑ ¼ö, ¹öÆÛ È÷Æ® ¼ö, Å×À̺íÀÇ ¸ðµç À妽º·ÎºÎÅÍ ÀоîµéÀÎ µð½ºÅ© ºí·Ï ¼ö¿Í ¹öÆÛ È÷Æ® ¼ö, (Á¸ÀçÇÏ´Â °æ¿ì)Å×À̺íÀÇ º¸Á¶ÀûÀÎ TOAST Å×ÀÌºí¿¡¼­ ÀоîµéÀÎ µð½ºÅ© ºí·Ï¼ö¿Í ¹öÆÛ È÷Æ®¼ö, TOAST Å×À̺íÀÇ À妽º·ÎºÎÅÍ ÀоîµéÀÎ µð½ºÅ© ºí·Ï¼ö¿Í ¹öÆÛ È÷Æ®¼ö.
pg_statio_sys_tables ½Ã½ºÅÛ Å×À̺íÀÌ º¸¿©Áö´Â °Í¸¸À» Á¦¿ÜÇϰí pg_statio_all_tables¿Í °°½À´Ï´Ù.
pg_statio_user_tables À¯Àú Å×À̺íÀÌ º¸¿©Áö´Â °Í¸¸À» Á¦¿ÜÇϰí pg_statio_all_tables¿Í °°½À´Ï´Ù.
pg_statio_all_indexes ÃÖ±Ù µ¥ÀÌÅͺ£À̽ºÀÇ °¢°¢ÀÇ À妽º¸¦ À§ÇÑ, Å×À̺í°ú À妽º OID, ½ºÅ°¸¶, Å×À̺í°ú À妽º¸í, ÀоîµéÀÎ µð½ºÅ© ºí·ÏÀÇ ¼ö¿Í À妽ºÀÇ ¹öÆÛ È÷Æ® ¼ö
pg_statio_sys_indexes ½Ã½ºÅÛ Å×ÀÌºí »ó¿¡ À妽º°¡ º¸¿©Áö´Â °ÍÀ» Á¦¿ÜÇϸé pg_statio_all_indexes¿Í °°½À´Ï´Ù.
pg_statio_user_indexes À¯Àú Å×ÀÌºí¿¡ À妽º°¡ º¸¿©Áö´Â °ÍÀ» Á¦¿ÜÇϸé pg_statio_all_indexes¿Í °°½À´Ï´Ù.
pg_statio_all_sequences ÇöÀç µ¥ÀÌÅͺ£À̽ºÀÇ ¿¬¼ÓÀûÀÎ ¿ÀºêÁ§Æ®¸¦ À§ÇØ, ¼ø¼­ÀÇ OID, ½ºÅ°¸¶¿Í ¼ø¼­ÀÇ À̸§, ¿¬¼ÓÀûÀ¸·Î ÀоîµéÀÎ µð½ºÅ© ºí·ÏÀÇ ¼ö¿Í ¹öÆÛ È÷Æ® ¼ö.
pg_statio_sys_sequences ½Ã½ºÅÛ ¼ø¼­°¡ º¸¿©Áö´Â °ÍÀ» Á¦¿ÜÇϰí pg_statio_all_sequences¿Í °°½À´Ï´Ù. (Çö ½ÃÁ¡¿¡¼­´Â ½Ã½ºÅÛ ¼ø¼­°¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¹Ç·Î, ºä´Â Ç×»ó ºñ¾îÀÖ½À´Ï´Ù.)
pg_statio_user_sequences À¯ÀúÀÇ ¼ø¼­°¡ º¸¿©Áö´Â °ÍÀ» Á¦¿ÜÇϸé pg_statio_all_sequences¿Í °°½À´Ï´Ù.

À妽º ´ÜÀ§ÀÇ Åë°è Á¤º¸´Â, ¾î´À À妽º°¡ »ç¿ëµÇ¾î ¾î´À Á¤µµ È¿°ú°¡ ÀÖ´ÂÁö¸¦ Æò°¡ÇÒ ¶§ ƯÈ÷ À¯¿ëÇÕ´Ï´Ù.

PostgreSQL 8.1À» ½ÃÀÛÀ¸·Î À妽º´Â Á÷Á¢Àû, ¶Ç´Â "ºñÆ® ¸Ê ½ºÄµ"À» ÅëÇØ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ºñÆ® ¸Ê ½ºÄµ¿¡¼­´Â º¹¼öÀÇ À妽ºÀÇ Ãâ·ÂÀ» AND ¶Ç´Â OR±ÔÄ¢À» »ç¿ëÇØ Á¶ÇÕÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ¶§¹®¿¡ ºñÆ® ¸Ê ½ºÄµÀÌ »ç¿ëµÇ¸é, µ¶¸³ÀûÀÎ heap ÇàÀÇ Ãëµæ°ú ƯÁ¤ÀÇ À妽º¸¦ °ü·ÃÁþ´Â °ÍÀº °ï¶õÇÕ´Ï´Ù. µû¶ó¼­, ºñÆ® ¸Ê ½ºÄµÀº »ç¿ëÇÑ À妽º¿¡ °üÇÑ pg_stat_all_indexes. idx_tup_readÀÇ ¼ö¸¦ ´Ã¸³´Ï´Ù. ±×¸®°í Å×ÀÌºí¿¡ °üÇÑ pg_stat_all_tables. idx_tup_fetchÀÇ ¼öµµ ´Ã¸³´Ï´Ù. ±×·¯³ª pg_stat_all_indexes. idx_tup_fetch¿¡ ¿µÇâÀ» ÁÖÁö´Â ¾Ê½À´Ï´Ù.

Note: PostgreSQL 8.1º¸´Ù Àü¿¡¼­´Â idx_tup_readÀÇ °ª°ú idx_tup_fetchÀÇ °ªÀº ±âº»ÀûÀ¸·Î´Â Ç×»ó °°¾Ò½À´Ï´Ù. idx_tup_read´Â À妽º·ÎºÎÅÍ À妽º Ç׸ñ ¼ö¸¦ ¼¼Áö¸¸, idx_tup_fetch´Â Å×À̺í·ÎºÎÅÍ À¯È¿ÇÑ ÇàÀÇ ¼ö¸¦ ¼¼±â ¶§¹®¿¡, ºñÆ® ¸Ê ½ºÄµÀ» °í·ÁÇÏÁö ¾Ê¾Æµµ, µÎ °³ÀÇ °ªÀº ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù. À妽º¸¦ »ç¿ëÇØ ¾òÀº ÇàÀÌ Á×¾îÀְųª ¾ÆÁ÷ 󸮵ÇÁö ¾ÊÀº ÇàÀÌ ÀÖÀ» °æ¿ì, ÈÄÀÚ´Â Àû°Ô µË´Ï´Ù.

pg_statio_ºä´Â ÁÖ·Î ¹öÆÛ ij½¬ÀÇ È¿À²À» Æò°¡ÇÒ ¶§¿¡ À¯¿ëÇÕ´Ï´Ù. ½ÇÁ¦ µð½ºÅ© µ¶ÇØÀÇ ¼ö°¡ ¹öÆÛ È÷Æ®ÀÇ ¼öº¸´Ù ²Ï ÀûÀ» ¶§, ij½¬´Â Ä¿³Ú È£Ãâ ¾øÀÌ, ´ëºÎºÐÀÇ Àб⠿äûÀ» ¸¸Á·½Ã۰í ÀÖ½À´Ï´Ù. ±×·¯³ª ÀÌ·¯ÇÑ Åë°èÁ¤º¸´Â ÀüüÀûÀÎ ³í¸®¸¦ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. ¿Ö³ÄÇϸé PostgreSQL´Â µð½ºÅ© I/O¿Í µ¥ÀÌÅ͸¦ ´Ù·ì´Ï´Ù. À̵éÀº PostgreSQL ¹öÆÛ ij½¬¿¡ ÀÖÁö ¾Ê°í, Ä¿³Ú I/O ij½¬¿¡ ¾ÆÁ÷ ³²¾ÆÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î ¹°¸®ÀûÀÎ ÀоîµéÀÓÀÇ ¿ä±¸ ¾øÀÌ ¾ò¾îÁú ¼ö ÀÖ½À´Ï´Ù. PostgreSQLÀÇ I/Oµ¿ÀÛ¿¡ °üÇÑ º¸´Ù »ó¼¼ÇÑ Á¤º¸¸¦ ¿øÇÑ´Ù¸é PostgreSQLÅë°è ¼öÁý±â¿Í Ä¿³Ú I/O Ãë±ÞÀ» »ìÇÇ´Â operating system À¯Æ¿¸®Æ¼¸¦ °áÇÕ½Ãų °ÍÀ» ±ÇÇÕ´Ï´Ù.

Åë°è¸¦ º¸´Â ´Ù¸¥ ¹æ¹ýÀ¸·Î Ç¥ÁØ ºä¿Í °°ÀÌ ±âÃÊÀûÀÎ Åë°è ¾×¼¼½º ÇÔ¼ö¸¦ »ç¿ëÇÑ Äõ¸®¸¦ ÀÛ¼ºÇÏ¿© ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÔ¼ö´Â Table 25-2¿¡ ¸®½ºÆ® µÇ°í ÀÖ½À´Ï´Ù. °¢°¢ÀÇ µ¥ÀÌÅͺ£À̽º ¾×¼¼½º ÇÔ¼ö´Â ¾î´À µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇØ º¸°íÇÏ´ÂÁö¸¦ ½Äº°Çϱâ À§ÇØ µ¥ÀÌÅͺ£À̽ºÀÇ OID¸¦ ¹Þ¾ÆµéÀÔ´Ï´Ù. Å×ÀÌºí¸¶´Ù, À妽º¸¶´Ù ÇÔ¼ö´Â Å×À̺íÀ̳ª À妽ºÀÇ OID¸¦ ¹Þ¾ÆµéÀÔ´Ï´Ù (ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇØ ÂüÁ¶ÇÒ ¼ö ÀÖ´Â Å×À̺í°ú À妽º´Â ÇöÀç µ¥ÀÌÅͺ£À̽º ³»¿¡¼­¸¸ °¡´ÉÇÏ´Ü °ÍÀ» ÁÖÀÇÇϽʽÿä). °¢°¢ÀÇ ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ¾×¼¼½º ÇÔ¼ö´Â ¼­¹ö ÇÁ·Î¼¼½º ID¹øÈ£¸¦ ¹Þ¾ÆµéÀÔ´Ï´Ù. °¡´É ¹üÀ§´Â 1¿¡¼­ ÇöÀç Ȱµ¿ ÁßÀÎ ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ¼ö±îÁöÀÔ´Ï´Ù.

Table 25-2. Åë°è ¾×¼¼½º ÇÔ¼ö

ÇÔ¼ö ¸®ÅÏ Å¸ÀÔ ¼³¸í
pg_stat_get_db_numbackends(oid) integer µ¥ÀÌÅͺ£À̽ºÀÇ È°µ¿ ÁßÀÎ ¼­¹ö ¼ö.
pg_stat_get_db_xact_commit(oid) bigint µ¥ÀÌÅͺ£À̽º¿¡¼­ ó¸®µÈ Æ®·£Àè¼Ç(transaction).
pg_stat_get_db_xact_rollback(oid) bigint µ¥ÀÌÅͺ£À̽º¿¡¼­ ·Ñ¹é(rollback)µÈ Æ®·£Àè¼Ç(transaction).
pg_stat_get_db_blocks_fetched(oid) bigint µ¥ÀÌŸº£À̽ºÀÇ µð½ºÅ© ºí·Ï ÃßÃ⠿䱸 ¼ö.
pg_stat_get_db_blocks_hit(oid) bigint ij½¬¿¡¼­ ¹ß°ßµÈ µ¥ÀÌÅͺ£À̽ºÀÇ µð½ºÅ© ºí·Ï ¿ä±¸ ¼ö.
pg_stat_get_numscans(oid) bigint ÀÎÀÚ°¡ Å×À̺íÀÏ ¶§ ó¸®µÈ ¿¬¼ÓÇÏ´Â ½ºÄµÀÇ ¼ö, ¶Ç´Â ÀÎÀÚ°¡ À妽ºÀÏ ¶§ ó¸®µÈ À妽ºÀÇ ¼ö
pg_stat_get_tuples_returned(oid) bigint ÀÎÀÚ°¡ Å×À̺íÀÏ ¶§ ¿¬¼ÓÇÏ´Â ½ºÄµ¿¡ ÀÇÇØ ÀÐÈù ÇàÀÇ ¼ö, ¶Ç´Â ÀÎÀÚ°¡ À妽ºÀÏ ¶§ ¸®ÅÏµÈ À妽º Ç׸ñÀÇ ¼ö
pg_stat_get_tuples_fetched(oid) bigint ÀÎÀÚ°¡ Å×À̺íÀÏ ¶§ ºñÆ®¸Ê ½ºÄµ¿¡ ÀÇÇØ ¾ò¾îÁø Å×À̺í ÇàÀÇ ¼ö, ¶Ç´Â ÀÎÀÚ°¡ À妽ºÀÏ ¶§ À妽º¸¦ ÀÌ¿ëÇÑ °£´ÜÇÑ À妽º ½ºÄµ¿¡ ÀÇÇØ ¾ò¾îÁø Å×À̺íÀÇ ÇàÀÇ ¼ö
pg_stat_get_tuples_inserted(oid) bigint Å×ÀÌºí¿¡ Ãß°¡µÈ ÇàÀÇ ¼ö
pg_stat_get_tuples_updated(oid) bigint Å×À̺íÀÇ ¾÷µ¥ÀÌÆ®µÈ ÇàÀÇ ¼ö
pg_stat_get_tuples_deleted(oid) bigint Å×À̺í·ÎºÎÅÍ »èÁ¦µÈ ÇàÀÇ ¼ö
pg_stat_get_blocks_fetched(oid) bigint À妽º³ª Å×À̺íÀÇ µð½ºÅ© ºí·Ï ÃßÃâ ¿äû ¼ö
pg_stat_get_blocks_hit(oid) bigint Å×À̺íÀ̳ª À妽º¿¡ °üÇØ ij½¬¿¡¼­ ¹ß°ßµÈ µð½ºÅ© ºí·Ï ¿äûÀÇ ¼ö
pg_stat_get_last_vacuum_time(oid) timestamptz Å×ÀÌºí »ó¿¡¼­ À¯Àú¿¡ ÀÇÇØ ½ÃÀÛµÈ ¸¶Áö¸· vacuumming ½Ã°¢
pg_stat_get_last_autovacuum_time(oid) timestamptz Å×ÀÌºí »ó¿¡¼­ autovacuum daemon¿¡ ÀÇÇØ ½ÃÀÛµÈ ¸¶Áö¸· vacuumming ½Ã°¢
pg_stat_get_last_analyze_time(oid) timestamptz Å×ÀÌºí »ó¿¡¼­ À¯Àú¿¡ ÀÇÇØ ½ÃÀÛµÈ ¸¶Áö¸· ºÐ¼®ÀÇ ½Ã°¢
pg_stat_get_last_autoanalyze_time(oid) timestamptz Å×ÀÌºí »ó¿¡¼­ autovacuum daemon¿¡ ÀÇÇØ ½ÃÀÛµÈ ¸¶Áö¸· ºÐ¼®ÀÇ ½Ã°¢
pg_stat_get_backend_idset() setof integer ÇöÀç Ȱµ¿ ÁßÀÎ ¼­¹ö ÇÁ·Î¼¼½º ¼öÀÇ ÁýÇÕ(1¿¡¼­ Ȱµ¿ ÁßÀÎ ¼­¹ö ÇÁ·Î¼¼½º ¼ö±îÁö). ÀÌÇÏÀÇ »ç¿ë¿¹¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
pg_backend_pid() integer ÇöÀçÀÇ ¼¼¼Ç¿¡ Á¢¼ÓÇÏ´Â ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î¼¼½º ID.
pg_stat_get_backend_pid(integer) integer ÁöÁ¤µÈ ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ÇÁ·Î¼¼½º ID.
pg_stat_get_backend_dbid(integer) oid ÁöÁ¤µÈ ¼­¹ö ÇÁ·Î¼¼½ºÀÇ µ¥ÀÌÅͺ£À̽º ID.
pg_stat_get_backend_userid(integer) oid ÁöÁ¤µÈ ¼­¹ö ÇÁ·Î¼¼½ºÀÇ À¯Àú ID.
pg_stat_get_backend_activity(integer) text ÁöÁ¤µÈ ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ÇöÀç Ä¿¸Çµå. ±×·¯³ª ÇöÀç À¯Àú°¡ ½´ÆÛ À¯ÀúÀ̰ųª Äõ¸®¸¦ ½ÇÇàÇÑ ¼¼¼ÇÀÇ À¯Àú¿Í µ¿ÀÏÇÑ °æ¿ì(±×¸®°í track_activities°¡ À¯È¿ÀÇ °æ¿ì) »ÓÀÔ´Ï´Ù.
pg_stat_get_backend_waiting(integer) boolean ÁöÁ¤µÈ ¼­¹ö ÇÁ·Î¼¼½º°¡ ¶ô ´ë±â »óÅÂÀÇ °æ¿ì TrueÀÔ´Ï´Ù. ±×·¯³ª ÇöÀç À¯Àú°¡ ½´ÆÛ À¯ÀúÀ̰ųª Äõ¸®¸¦ ½ÇÇàÇÑ À¯Àú¿Í µ¿ÀÏÇÑ °æ¿ì(±×¸®°í track_activities°¡ À¯È¿ÀÇ °æ¿ì)¿¡ ÇÑÁ¤ÇÕ´Ï´Ù.
pg_stat_get_backend_activity_start(integer) timestamp with time zone ÁöÁ¤µÈ ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ½ÇÇà ÁßÀÎ Äõ¸®°¡ ½ÃÀ۵ǾúÀ» ¶§ÀÇ ½Ã°¢. ±×·¯³ª ÇöÀç À¯Àú°¡ ½´ÆÛ À¯ÀúÀ̰ųª Äõ¸®¸¦ ½ÇÇàÇÑ ¼¼¼ÇÀÇ À¯Àú¿Í µ¿ÀÏÇÑ °æ¿ì(±×¸®°í track_activities°¡ À¯È¿ÀÇ °æ¿ì) »ÓÀÔ´Ï´Ù.
pg_stat_get_backend_start(integer) timestamp with time zone ÁöÁ¤µÈ ¼­¹ö ÇÁ·Î¼¼½º°¡ ½ÃÀ۵ǾúÀ» ¶§ÀÇ ½Ã°¢À̳ª ÇöÀç À¯Àú°¡ ½´ÆÛ À¯Àú ¶Ç´Â Äõ¸®¸¦ ½ÇÇàÇÑ ¼¼¼Ç À¯Àú¿Í °°Áö ¾ÊÀº °æ¿ì´Â NULLÀÔ´Ï´Ù.
pg_stat_get_backend_client_addr(integer) inet Ŭ¶óÀ̾ðÆ®ÀÇ IPÁÖ¼Ò´Â ÁöÁ¤µÈ ¼­¹ö ÇÁ·Î¼¼½º·Î Á¢¼ÓÇÕ´Ï´Ù. Unix µµ¸ÞÀÎ ¼ÒÄÏÀ» °ÅÄ£ Á¢¼ÓÀÏ °æ¿ì´Â NULLÀÔ´Ï´Ù. ¶ÇÇÑ, ÇöÀç À¯Àú°¡ ½´ÆÛ À¯ÀúÀ̰ųª Äõ¸®¸¦ ½ÇÇàÇÑ ¼¼¼Ç À¯Àú¿Í °°Áö ¾ÊÀº °æ¿ìµµ NULLÀÔ´Ï´Ù.
pg_stat_get_backend_client_port(integer) integer Ŭ¶óÀ̾ðÆ®ÀÇ IP Æ÷Æ® ¹øÈ£´Â ÁöÁ¤µÈ ¼­¹ö ÇÁ·Î¼¼½º·Î Á¢¼ÓÇÕ´Ï´Ù. Unix µµ¸ÞÀÎ ¼ÒÄÏÀ» °ÅÄ£ Á¢¼ÓÀÏ °æ¿ì´Â -1ÀÔ´Ï´Ù. ÇöÀç À¯Àú°¡ ½´ÆÛ À¯ÀúÀ̰ųª Äõ¸®¸¦ ½ÇÇàÇÑ ¼¼¼Ç À¯Àú¿Í °°Áö ¾ÊÀº °æ¿ìµµ NULLÀÔ´Ï´Ù.
pg_stat_reset() boolean ¸ðµç block-level°ú row-level Åë°è¸¦ 0À¸·Î ÃʱâÈ­½Ãŵ´Ï´Ù.

Note: blocks_fetched·ÎºÎÅÍ blocks_hit¸¦ »©¸é, Å×À̺í, À妽º, µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇØ ÁÖ¾îÁø Ä¿³ÚÀÇ read() È£Ãâ ¼ö¸¦ ¾Ë ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª ½ÇÁúÀûÀÎ ¹°¸®Àû read ¼ö´Â Ä¿³Ú ·¹º§ÀÇ ¹öÆÛ 󸮷ΠÀÎÇØ, ÀϹÝÀûÀ¸·Î ÀÛ¾ÆÁý´Ï´Ù.

pg_stat_get_backend_idset ÇÔ¼ö´Â °¢°¢ÀÇ ¼­¹ö Ȱµ¿ ÁßÀÎ ¼­¹ö ÇÁ·Î¼¼½ºÀÇ ÇÑ ÇàÀ» »ý¼ºÇÏ´Â °£ÆíÇÑ ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù. ¿¹¸¦ µé¸é, ¸ðµç ¼­¹ö ÇÁ·Î¼¼½ºÀÇ PID¿Í ÇöÀç Äõ¸®¸¦ Ç¥½ÃÇÏ·Á¸é, ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù.

SELECT pg_stat_get_backend_pid(s.backendid) AS procpid,
       pg_stat_get_backend_activity(s.backendid) AS current_query
    FROM (SELECT pg_stat_get_backend_idset() AS backendid) AS s;