26.1. µð½ºÅ© »ç¿ë·®ÀÇ °áÁ¤

°¢ Å×ÀÌºí¿¡´Â, µ¥ÀÌÅÍÀÇ ´ëºÎºÐÀÌ ÀúÀåµÇ´Â Ãʱâ heap µð½ºÅ© ÆÄÀÏÀ» °¡Áö°í ÀÖ½À´Ï´Ù. ¸¸¾à Å×À̺íÀÌ °¡´ÉÇÑ °ªÀÇ ¿­À» °¡Áú °æ¿ì Å×À̺í°ú ¿¬°üµÈ TOASTÆÄÀÏÀ» °¡Áý´Ï´Ù. ÀÌ ÆÄÀÏÀº °ªÀÌ ³Ê¹« ¹æ´ëÇÏ¿© ¸ÞÀÎ Å×ÀÌºí¿¡ ÀúÀåÇϱ⠾î·Á¿î °æ¿ì¿¡ »ç¿ëµË´Ï´Ù(Section 52.2¸¦ ÂüÁ¶ÇϽʽÿä). TOASTÅ×À̺íÀÌ Á¸ÀçÇÑ´Ù¸é ÇÑ °³ÀÇ À妽º°¡ ÀÖ½À´Ï´Ù. ±âº» Å×À̺í°ú ¿¬°üµÈ À妽º°¡ Á¸ÀçÇÏ´Â Àϵµ ÀÖ½À´Ï´Ù. °¢°¢ÀÇ Å×À̺í°ú À妽º´Â º°µµÀÇ µð½ºÅ© ÆÄÀÏ¿¡ ÀúÀåµÇ¸ç, ÆÄÀÏÀÌ 1±â°¡¹ÙÀÌÆ®¸¦ ÃʰúÇÒ ½Ã¿¡´Â º¹¼öÀÇ ÆÄÀϵµ °¡´ÉÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ÆÄÀÏÀÇ ¸í¸í ±Ô¾à°ú °ü·ÃÇØ¼­ Section 52.1¿¡¼­ ¼³¸íÇϰí ÀÖ½À´Ï´Ù.

¼¼ °¡ÁöÀÇ ¹æ¹ýÀ» ÅëÇØ µð½ºÅ© °ø°£ÀÇ °¨½Ã¸¦ ÇÒ ¼ö ÀÖ½À´Ï´Ù. Table 9-48ÀÇ SQL ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ¹æ¹ý°ú VACUUMÁ¤º¸¸¦ »ç¿ëÇÏ´Â ¹æ¹ý ±×¸®°í contrib/oid2nameÀÇ ÅøÀ» »ç¿ëÇØ ¸í·É¹®À» ÀÌ¿ëÇÏ´Â ¹æ¹ýÀÔ´Ï´Ù. SQL ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀº À妽º, long value storage(TOAST), µ¥ÀÌÅͺ£À̽º ±×¸®°í Å×ÀÌºí °ø°£À» °¡Áø Å×ÀÌºí¿¡ °üÇÑ Á¤º¸¸¦ »ç¿ëÇÏ°í º¸°íÇϴµ¥ °¡Àå °£ÆíÇÑ ¹æ¹ýÀÔ´Ï´Ù.

ÃÖ±Ù¿¡ VACUUMµÇ°í ANALYZEµÇ¾îÁø µ¥ÀÌÅͺ£À̽º¿¡¼­ÀÇ psql»ç¿ëÀº ¾î¶² Å×À̺íÀÇ µð½ºÅ© »ç¿ë·®ÀÌ¶óµµ »ìÆìº¼ ¼ö ÀÖ´Â Äõ¸®ÀÇ »ç¿ëÀ» °¡´ÉÇÏ°Ô ÇÕ´Ï´Ù.

SELECT relfilenode, relpages FROM pg_class WHERE relname = 'customer';

 relfilenode | relpages 
-------------+----------
       16806 |       60
(1 row)

°¢ ÆäÀÌÁö´Â ÀϹÝÀûÀ¸·Î 8ų·Î¹ÙÀÌÆ®ÀÔ´Ï´Ù. (relpages´Â VACUUM¿Í ANALYZE, CREATE INDEX¿Í °°Àº ¼Ò¼öÀÇ DDL¿¡ ÀÇÇØ¼­¸¸ °»½ÅµÈ´Ù´Â °ÍÀ» ÁÖÀÇÇϽʽÿä.) relfilenode °ªÀº Å×À̺íÀÇ µð½ºÅ© ÆÄÀÏÀ» Á÷Á¢ Á¶»çÇÒ °æ¿ì µµ¿òÀ» ÁÝ´Ï´Ù.

TOASTÅ×À̺í·Î »ç¿ëµÇ°í ÀÖ´Â ¿ë·®À» º¸±âÀ§Çؼ­´Â. ´ÙÀ½°ú °°Àº Äõ¸®¸¦ »ç¿ëÇØ Áֽʽÿä.

SELECT relname, relpages
    FROM pg_class,
         (SELECT reltoastrelid FROM pg_class
          WHERE relname = 'customer') ss
    WHERE oid = ss.reltoastrelid
       OR oid = (SELECT reltoastidxid FROM pg_class
                 WHERE oid = ss.reltoastrelid)
    ORDER BY relname;

       relname        | relpages 
----------------------+----------
 pg_toast_16806       |        0
 pg_toast_16806_index |        1

À妽º »çÀÌÁî¿¡ ´ëÇØ¼­µµ °£´ÜÇÏ°Ô Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù.

SELECT c2.relname, c2.relpages
    FROM pg_class c, pg_class c2, pg_index i
    WHERE c.relname = 'customer'
        AND c.oid = i.indrelid
        AND c2.oid = i.indexrelid
    ORDER BY c2.relname;

       relname        | relpages 
----------------------+----------
 customer_id_indexdex |       26

ÀÌ Á¤º¸¸¦ »ç¿ëÇÏ¿© °¡Àå Å« Å×À̺í°ú À妽º¸¦ ½±°Ô ãÀ» ¼ö ÀÖ½À´Ï´Ù.

SELECT relname, relpages FROM pg_class ORDER BY relpages DESC;

       relname        | relpages 
----------------------+----------
 bigtable             |     3290
 customer             |     3144

¶ÇÇÑ oid2name¸¦ »ç¿ëÇÏ¿© µð½ºÅ© »ç¿ë·®À» Ç¥½ÃÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹Á¦¸¦ À§ÇÑ µð·ºÅ丮ÀÇ README.oid2name¸¦ ÂüÁ¶ÇØ Áֽʽÿä. °¢°¢ÀÇ µ¥ÀÌÅͺ£À̽ºÀÇ µð½ºÅ© »ç¿ë·®À» Ç¥½ÃÇÏ´Â ½ºÅ©¸³Æ®¸¦ Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.