| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 52. µ¥ÀÌÅͺ£À̽ºÀÇ ¹°¸®ÀûÀÎ ÀúÀåÀåÄ¡ | Fast Forward | Next |
º»Àý¿¡¼´ÂTOAST(´ëÇü ¼Ó¼º ÀúÀå ±â¼ú£ºThe Oversized-Attribute Storage Technique)ÀÇ °³¿ä¿¡ ´ëÇØ ¼³¸íÇÕ´Ï´Ù.
PostgreSQL´Â °íÁ¤µÈ ÆäÀÌÁö »çÀÌÁî(Åë»ó 8ų·Î¹ÙÀÌÆ®)¸¦ »ç¿ëÇØ, ´Ù¼ö ÆäÀÌÁö¿¡ °ÉÄ¡´Â Æ©ÇÃÀ» Çã¶ôÇÏÁö ¾Ê½À´Ï´Ù. ±× ¶§¹®¿¡, ´ë±Ô¸ð Çʵ尪À» Á÷Á¢ ÀúÀåÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ ÇѰ踦 ±Øº¹Çϱâ À§ÇØ, ´ë±Ô¸ð Çʵ尪¸¦ ¾ÐÃàÇϰųª ´Ù¼öÀÇ ¹°¸®ÀûÀÎ ÇàÀ¸·Î ºÐÇÒÇϰųª ÇÕ´Ï´Ù. À̰ÍÀº »ç¿ëÀڷκÎÅÍ´Â ¹ß»ýÇØ, ¶Ç, ¿¬±¸ ÃÖÁ¾ ´Ü°èÀÇ ÄÚµå Àüü¿¡´Â ÀÛÀº ¿µÇâ ¹Û¿¡ ÁÖÁö ¾Ê¾Ò½À´Ï´Ù. ÀÌ ±â¹ýÀºTOAST(¶Ç´Â"Á¶°¢³ »§ ÀÌ·¡·Î ÃÖ¼±ÀÇ °Í")¶ó°í ÇÏ´Â ¾ÖĪÀ¸·Î ºÒ¸³´Ï´Ù.
ÀϺÎÀÇ µ¥ÀÌÅÍ Å¸ÀÔ¸¸ÀÌTOAST¸¦ Áö¿øÇÕ´Ï´Ù.
´ë±Ô¸ð Çʵ尪À» »ý¼ºÇÒ¼ö ¾ø´Â µ¥ÀÌÅÍŸÀÔ¿¡ ¿À¹öÇìµå¸¦ Áö°Ô ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
TOAST¸¦ Áö¿øÇϱâ À§Çؼ´Â, µ¥ÀÌÅÍŸÀÔÀº º¯¼ö±æÀÌ(varlena) Ç¥ÇöÀ» °¡ÁöÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù.
ÀúÀåÇÏ´Â °ªÀÇ ÃÖÃÊÀÇ 32 ºñÆ® ¿öµå¿¡´Â ¹ÙÀÌÆ® ´ÜÀ§ÀÇ °ªÀÇ(ÀÌ ¿öµå ÀÚü¸¦ Æ÷ÇÔÇÑ´Ù) ±æÀ̰¡ Æ÷ÇԵ˴ϴÙ.
TOAST´Â ³ª¸ÓÁöÀÇ Ç¥Çö¿¡ ´ëÇØ Á¦ÇÑÇÏÁö ¾Ê½À´Ï´Ù.
TOAST°¡´ÉÇÑ µ¥ÀÌÅÍŸÀÔÀ» ÁöÁöÇÏ´Â C¾ð¾î ÇÔ¼ö´Â ¸ðµÎ,TOASTÈ µÈ ÀÔ·ÂÄ¡¸¦ ÁÖÀÇÇØ Ãë±ÞÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù
(Åë»ó À̰ÍÀº, ÀԷ¿¡ ´ëÇØ¼ ¹«¾ùÀΰ¡ ÀÛ¾÷À» Çϱâ Àü¿¡PG_DETOAST_DATUM¸¦ È£ÃâÇÏ´Â °ÍÀ¸·Î ÇàÇØÁý´Ï´Ù¸¸,
Á» ´õ È¿À²ÀûÀÎ ¹æ¹ýÀÌ °¡´ÉÇÑ °æ¿ìµµ ÀÖ½À´Ï´Ù).
TOAST»óÀ§ 2 ºñÆ®ÀÇ varlena ±æÀÌ ¿öµå¸¦ »ç¿ëÇϱâ À§Çؼ °¡´ÉÇÑ µ¥ÀÌÅÍŸÀÔÀÇ °ªÀÇ ³í¸® »çÀÌÁî´Â 1±â°¡¹ÙÀÌÆ®(230 - 1¹ÙÀÌÆ®)±îÁö µË´Ï´Ù. ¾çºñÆ®°¡ 0ÀÇ °æ¿ì, °ªÀº º¸ÅëTOASTȵǾî ÀÖÁö ¾ÊÀº µ¥ÀÌÅÍ Çü½ÄÀÌ µË´Ï´Ù. ÀÌ·¯ÇÑ ºñÆ®µé Áß ÇϳªÀÇ ºñÆ®°¡ ¼³Á¤µÇ¾úÀ» °æ¿ì, °ªÀº ¾ÐÃàµÈ °ÍÀÌ°í »ç¿ëÇϱâ Àü¿¡ ¹Ýµå½Ã ¾ÐÃàÀ» ÇØÁ¦ÇÏ¿©¾ß ÇÑ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. ³ª¸ÓÁö ´Ù¸¥ ºñÆ®°¡ ¼³Á¤µÇ¾úÀ» °æ¿ì, °ªÀº Çà ¹Û¿¡ ÀúÀåµÇ¾î ÀÖ´Ù´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. ³ª¸ÓÁö °ªÀÌ ½ÇÁ¦·Î ´ÜÁö Æ÷ÀÎÅÍÀÏ °æ¿ì Á¤È®ÇÑ µ¥ÀÌÅÍ´Â ´Ù¸¥ °÷¿¡¼ ãÀ»¼ö ÀÖ½À´Ï´Ù. µÎ °³ÀÇ ºñÆ®°¡ ¼³Á¤ µÇ¾î ÀÖÀ» ¶§´Â, Çà ¹ÛÀÇ µ¥ÀÌÅÍ ¿ª½Ã ¾ÐÃàµÇ¾î ÀÖ½À´Ï´Ù. °¢°¢ÀÇ °æ¿ì ÇÏÀ§ ºñÆ® ¾ÈÀÇ varlena ¿öµå´Â ¾ÐÃàÇØÁ¦¿¡ ÀÇÇØ ÃßÃâµÇ°Å³ª Çà ¹ÛÀÇ µ¥ÀÌÅ͸¦ °¡Á®¿À´Â ³í¸®Àû °ªÀÇ Å©±â¸¦ ³ªÅ¸³»´Â °ÍÀÌ ¾Æ´Ï¶ó µ¥ÀÌÅÍÀÇ ½ÇÁ¦ Å©±â¸¦ ³ªÅ¸³À´Ï´Ù.
Å×À̺íÀÇ ÀÓÀÇÀÇ Ä÷³ÀÌTOAST°¡´ÉÇÑ °æ¿ì, ±× Å×À̺íÀº ¿¬°üµÇ´ÂTOASTÅ×À̺íÀ» °¡Áý´Ï´Ù. TOASTÅ×À̺íÀÇ OID´Â Å×À̺íÀÇpg_class. reltoastrelidÇ׸ñ¿¡ ÀúÀåµË´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº ´ÙÀ½¿¡ ¼³¸íÇÕ´Ï´Ù¸¸, Çà ¹ÛÀÇTOASTÈ µÈ °ªÀºTOASTÅ×ÀÌºí³»¿¡ º¸°ü À¯ÁöµË´Ï´Ù.
»ç¿ëµÇ´Â ¾ÐÃà ±â¼úÀº, LZ°èÀÇ ¾ÐÃà ±â¼úÀÇ Çϳª·Î °£´ÜÇÏ°í »ó´çÈ÷ ºü¸¨´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀºsrc/backend/utils/adt/pg_lzcompress.c¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
Çà ¹ÛÀÇ °ªÀº(¾ÐÃàµÇ´Â °æ¿ì´Â ¾ÐÃà ÈÄ¿¡) ÃÖ´ëTOAST_MAX_CHUNK_SIZE¹ÙÀÌÆ®ÀÇ Ã»Å©¿¡ ºÐÇҵ˴ϴ٠(ÀÌ °ªÀº BLCKSZ/4º¸´Ù ¾à°£ ÀÛÀº °ªÀ̰ųª, ±âº»°ª¿¡ ÀÇÇØ 2000¹ÙÀÌÆ® Á¤µµ ÀÔ´Ï´Ù.) °¢ ûũ´Â, µ¥ÀÌÅ͸¦ °¡Áö´Â Å×À̺í°ú Á¦ÈÞÇÏ´ÂTOASTÅ×ÀÌºí³»¿¡ °³º°ÀÇ ÇàÀ¸·Î¼ ÀúÀåµË´Ï´Ù. ¸ðµçTOASTÅ×À̺íÀºchunk_idÄ÷³chunk_id(ƯÁ¤ÀÇTOASTÈ µÈ °ªÀ» ½Äº°ÇÏ´Â OID), chunk_seq (±× °ª ¾ÈÀÇ Ã»Å©¿¡ ´ëÇÑ ½ÃÄö½º ¹øÈ£),chunk_data(ûũÀÇ ½ÇÁ¦ÀÇ µ¥ÀÌÅÍ) ¿À» °¡Áý´Ï´Ù. chunk_id¿Íchunk_seq¿¡ ´ëÇÑ ÀÏÀǼº À妽º´Â °ªÀÇ ÃßÃâÀ» °í¼ÓÈÇÕ´Ï´Ù. µû¶ó¼, Çà ¹ÛÀÇTOASTÈ µÈ °ªÀ» ³ªÅ¸³»´Â Æ÷ÀÎÅÍ datum¿¡´Â, °Ë»öó°¡ µÇ´ÂTOASTÅ×À̺íÀÇ OID¿Í ÁöÁ¤ÇÑ °ªÀÇ OID¸¦ ÀúÀåÇÏÁö ¾ÊÀ¸¸é ¾ÈµË´Ï´Ù. °£Æí¼ºÀ» À§Çؼ, Æ÷ÀÎÅÍ datum¿¡´Â ³í¸® datum »çÀÌÁî(±âÁ¸ÀÇ ºñ¾ÐÃàÀÇ µ¥ÀÌÅÍ ±æÀÌ)¿Í ½ÇÁ¦ÀÇ ÀúÀå »çÀÌÁî(¾ÐÃà½Ã¿¡´Â ´Ù¸¨´Ï´Ù)µµ ÀúÀåµË´Ï´Ù. varlena Çì´õ ¹ÙÀÌÆ®¿¡ ÇÒ´çÇϱâ À§ÇؼTOASTÆ÷ÀÎÅÍ datumÀÇ ÃÑ»çÀÌÁî´Â, Ç¥ÇöµÇ´Â °ªÀÇ ½ÇÁ¦ »çÀÌÁî¿¡ °ü°è¾øÀÌ, 20¹ÙÀÌÆ®°¡ µË´Ï´Ù.
TOASTÀÇ ÄÚµå´Â, Å×ÀÌºí³»¿¡ ÀúÀåµÇ´Â °ªÀÌTOAST_TUPLE_THRESHOLD(Åë»ó 2ų·Î¹ÙÀÌÆ®)¸¦ ³ÑÀ» ¶§¿¡°Ô¸¸ ½ÇÇàµË´Ï´Ù. TOASTÄÚµå´Â, ÇàÀÇ °ªÀÌ ´õ ÀÌ»ó ¾ò¾îÁöÁö ¾Ê°Å³ª, ±× ÀÌ»óÀÇ Ãà¼Ò¸¦ ÇÒ ¼ö ¾ø°Ô µÉ ¶§±îÁö, Çʵ尪ÀÇ ¾ÐÃàÀ̳ª Çà¹ÛÀ¸·ÎÀÇ À̵¿À» ½Ç½ÃÇÕ´Ï´Ù. ¾÷µ¥ÀÌÆ® Á¶ÀÛÁß¿¡´Â, Åë»ó º¯°æµÇÁö ¾Ê´Â °ªÀº ±×´ë·Î ³²½À´Ï´Ù. Çà ¹ÛÀÇ °ªÀ» °¡Áö´Â ÇàÀÇ ¾÷µ¥ÀÌÆ®¿¡¼´Â, Çà ¹ÛÀÇ °ªÀÇ º¯°æÀÌ ¾øÀ¸¸éTOASTÇÏ´Â °ÍÀ» ¿äÇÏÁö ¾Ê½À´Ï´Ù.
TOASTÄڵ忡¼´Â, ÀÌÇÏÀÇTOAST°¡´ÉÇÑ ¿À» ÀúÀåÇϱâ À§ÇÑ 4°³ÀÇ ´Ù¸¥ Àü·«À» ÀνÄÇÕ´Ï´Ù.
PLAIN´Â ¾ÐÃàÀ̳ª Çà ¹ÛÀÇ ÀúÀåÀ» ¹æÁöÇÕ´Ï´Ù. °Ô´Ù°¡ varlenaŸÀÔ¿¡¼ÀÇ ´ÜÀÏ ¹ÙÀÌÆ® Çì´õÀÇ »ç¿ëÀ» ¹«È¿·Î ÇÕ´Ï´Ù. À̰ÍÀºTOASTȰ¡ ºÒ°¡´ÉÇÑ µ¥ÀÌÅÍŸÀÔÀÇ Ä÷³¿¡ ´ëÇØ¼¸¸ ÃëÇÒ ¼ö ÀÖ´Â Àü·«ÀÔ´Ï´Ù.
EXTENDED¿¡¼´Â, ¾ÐÃà°ú Çà ¹ÛÀÇ ÀúÀåÀ» Çã¶ôÇÕ´Ï´Ù. À̰ÍÀº ´ëºÎºÐÀÇTOAST°¡´ÉÀÇ µ¥ÀÌÅÍŸÀÔÀÇ ±âº»°ªÀÔ´Ï´Ù. ¾ÐÃàÀÌ ¸ÕÀú ½ÃµµµÇ°í, ±×·±µ¥µµ ÇàÀÌ ³Ê¹« Å©´Ù¸é Çà ¹Û¿¡ ÀúÀåÇÕ´Ï´Ù.
EXTERNAL´Â ºñ¾ÐÃàµÈ Çà ¹ÛÀÇ ÀúÀåÀ» Çã¶ôÇÕ´Ï´Ù. EXTERNAL¸¦ »ç¿ëÇϸé,text¿Íbytea Ä÷³ Àüü¿¡ ´ëÇÑ ¼ºê½ºÆ®¸µ Á¶ÀÛÀÌ »¡¶óÁý´Ï´Ù. ÀÌ·¯ÇÑ Á¶ÀÛÀº ºñ¾ÐÃàÀÇ Çà¿ÜÀÇ °ªÀ¸·ÎºÎÅÍ ÇÊ¿äÇÑ ºÎºÐÀ» ²¨³¾ ¶§¿¡ ÃÖÀûȵDZ⠶§¹®¿¡ÀÔ´Ï´Ù (ÀúÀå ½ºÆäÀ̽º°¡ Áõ°¡ÇÏ´Â ´ÜÁ¡ÀÌ ÀÖ½À´Ï´Ù).
MAIN´Â ¾ÐÃàÀ» Çã¶ôÇÕ´Ï´Ù¸¸, Çà¹ÛÀÇ ÀúÀåÀº ÇÒ ¼ö ¾ø½À´Ï´Ù (½ÇÁ¦·Î´Â ÀÌ·¯ÇÑ ¿¿¡ ´ëÇØ¼µµ Çà ¹ÛÀÇ ÀúÀåÀº ÇàÇØÁý´Ï´Ù. ±×·¯³ª, ±× ¹Û¿¡ ÇàÀ» Ãà¼ÒÇÒ ¹æ¹ýÀÌ ¾ø´Â °æ¿ìÀÇ ¸¶Áö¸· ¼ö´ÜÀÔ´Ï´Ù).
TOAST°¡´ÉÇÑ µ¥ÀÌÅÍŸÀÔÀº °¢°¢, ±× µ¥ÀÌÅÍŸÀÔÀÇ Ä÷³¿ëÀÇ ±âº» Àü·«À» ÁöÁ¤ÇÕ´Ï´Ù. ±×·¯³ªALTER TABLE SET STORAGE¸¦ »ç¿ëÇØ, ¾î´À Å×À̺í Ä÷³ÀÇ Àü·«À» º¯°æÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
ÀÌ ½ºÅ°¸¶¿¡´Â, ÆäÀÌÁö¸¦ °ÉÄ¡´Â ÇàÀÇ °ªÀ» Çã°¡ÇÏ´Â °Í°ú °°ÀÌ Á÷Á¢Àû ¹æ¹ý¿¡ ºñÇØ ¸¹Àº ÀÌÁ¡ÀÌ ÀÖ½À´Ï´Ù. Åë»ó Äõ¸®´Â ºñ±³Àû ÀÛÀº Ű °ª¿¡ ´ëÇÑ ºñ±³·Î °ËÁõµÇ¾ú´Ù´Â°ÍÀ» °¡Á¤Çϸé, ÁýÇàÀÚÀÇ ÀÏÀÇ ´ëºÎºÐÀº ÁÖ¿äÇÑ ÇàÀÇ Ç׸ñÀ» »ç¿ëÇϴµ¥ ÇàÇØÁö°Ô µË´Ï´Ù. TOASTÈ ¼Ó¼ºÀÇ ´ë±Ô¸ð °ªÀº, (±×°ÍÀÌ ¿ÏÀüÈ÷ ¼±ÅõǾúÀ»¶§) °á°ú ÁýÇÕÀ» Ŭ¶óÀÌ¾ðÆ®¿¡ µÇµ¹¸± ¶§¿¡ ³ªÅ¸³¯ »ÓÀÔ´Ï´Ù. ÀÌ ¶§¹®¿¡, ÁÖÅ×À̺íÀº Çà ¹ÛÀÇ ÀúÀåÀ» »ç¿ëÇÏÁö ¾Ê´Â °æ¿ì¿¡ ºñÇØ Á¡Á¡ ÀÛ¾ÆÁ® ±× ÇàÀº °øÀ¯ ¹öÆÛ ij½¬¿¡ ÀûÇÕÇÏ°Ô µË´Ï´Ù. Á¤·Ä ÁýÇÕµµ ¶ÇÇÑ ÀÛ¾ÆÁ®, Á¤·ÄÀÌ ¿ÏÀüÇÏ°Ô ¸Þ¸ð¸®³»¿¡¼ ÇàÇØÁö´Â ºóµµ°¡ ³ô¾ÆÁý´Ï´Ù. ¼Ò±Ô¸ðÀÇ ½ÃÇè °á°úÀÔ´Ï´Ù¸¸, ÀüÇüÀûÀÎ HTML ÆäÀÌÁö¿Í ±× URL¸¦ °¡Áö´Â Å×ÀÌºí¿¡¼´Â,TOASTÅ×À̺íÀ» Æ÷ÇÔÇØ ¿ø·¡ÀÇ µ¥ÀÌÅÍ »çÀÌÁîÀÇ ´ë·« ¹ÝÀ¸·Î ÀúÀåÇÒ ¼ö ÀÖ¾î »Ó¸¸ ¾Æ´Ï¶ó ÁÖÅ×ÀÌºí¿¡´Â ÀüüÀÇ µ¥ÀÌÅÍÀÇ ´ë·« 10%¸¶¼Å(URL¿Í ÀϺÎÀÇ ÀÛÀº HTML ÆäÀÌÁö)°¡ ÀúÀåµÇ¾ú½À´Ï´Ù. ºñ±³¸¦ À§Çؼ ½ÇÇàÇÑ ¸ðµç HTML ÆäÀÌÁö¸¦ 7ų·Î¹ÙÀÌÆ® Á¤µµ·Î ÁÙÀÎTOASTÈÇÏÁö ¾Ê´Â Å×À̺í°ú ºñ±³ÇØ ½ÇÇàÇßÀ»½Ã¿¡´Â Â÷À̰¡ ¾ø¾ú½À´Ï´Ù.