Ȩ > ÀÚ·á½Ç > News Letter
 
Download
News Letter
Site Link
XpertMon ´º½º·¹ÅÍ 61È£ - Data Compression
2010/02/24 17:47 16244

DB2 – Data Compression

 

1. Overview of Compression

Å×ÀÌºí ´ÜÀ§ÀÇ µ¥ÀÌÅÍ ¾ÐÃàÀ» À§Çؼ­´Â ´ÙÀ½ µÎ °¡Áö »çÇ×ÀÌ ÇÊ¿äÇÕ´Ï´Ù.

ù°, Å×ÀÌºí »ý¼º(Create) ¶Ç´Â ¼öÁ¤(Alter)À» ÅëÇØ COMPRESS YES ÀýÀ» ¸í½ÃÇÏ¿© ¾ÐÃàÀÌ °¡´ÉÇϴٴ ǥ½Ã¸¦ ÇØÁÖ¾î¾ß ÇÕ´Ï´Ù.

µÑ°, Å×ÀÌºí¿¡ µé¾îÀÖ´Â µ¥ÀÌÅÍ¿¡ ´ëÇÑ ¾ÐÃà »çÀüÀÌ Á¤ÀÇ µÇ¾î¾ß ÇÕ´Ï´Ù.

 

À§ µÎ °¡Áö Á¶°ÇÀÌ ¸¸Á·µÇ¾úÀ» °æ¿ì Å×ÀÌºí¿¡ µ¥ÀÌÅÍ°¡ Ãß°¡(Insert) ¹× °»½Å(Update) µÉ ¶§ µ¥ÀÌÅÍ ¾ÐÃàÀÌ ÀÌ·ç¾îÁö°Ô µË´Ï´Ù.

 

°¢°¢ÀÇ Å×ÀÌºí¿¡ ´ëÇؼ­ ¾ÐÃà »çÀüÀÌ ¸¸µé¾î Áö°Ô µÇ´Âµ¥, ÀÌ ¾ÐÃà »çÀüÀº ¹üÀ§ÁöÁ¤(Range) Å×À̺íÀÇ ÆÄƼ¼ÇÀ̳ª DPF »óÀÇ ÆÄƼ¼Ç¿¡µµ µû·Î Á¸ÀçÇÏ°Ô µË´Ï´Ù.

 

°¡. Building the compression dictionary

DB2 Á¦Ç°ÀÇ ¸±¸®Áî ·¹º§À̳ª ¹öÀü ·¹º§¿¡ µû¶ó ¾ÐÃà »çÀüÀ» ¸¸µå´Â ¹æ¹ýÀÌ ´Ù¸¨´Ï´Ù.

 

l        DB2 Version 9.1 : ù ¹ø° ¹æ¹ýÀº Å×ÀÌºí¿¡ ´ëÇØ Reorg ¸í·ÉÀ» ¹ßÇàÇÏ´Â °ÍÀÔ´Ï´Ù. ¾ÐÃà »çÀüÀº REORG TABLE ¹®ÀÇ RESETDICTIONARY ³ª KEEPDICTIONARY ¿É¼ÇÀ» ÅëÇØ ¸¸µé¾î Áö°Å³ª °ü¸®µË´Ï´Ù. µÎ ¹ø° ¹æ¹ýÀº INSPECT À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.

l        DB2 Version 9.5 : Å×À̺í Reorg ¿Í INSPECT ¸í·É »Ó ¾Æ´Ï¶ó Å×À̺íÀÇ Áõ°¡ Á¤µµ¿¡ µû¶ó¼­ ÀÚµ¿À¸·Î µ¥ÀÌÅÍ ¾ÐÃà »çÀüÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù(ADC(Automatic Dictionary Creation) Æ®¸®°Å¿¡ ÀÇÇØ µ¿ÀÛµÊ). ¾ÐÃà »çÀüÀº LOAD REPLACE ½Ã RESETDICTIONARY ¿Í KEEPDICTIONARY ¿É¼ÇÀ» ÅëÇØ °ü¸®µË´Ï´Ù.

 

2. Choosing candidate tables for compression

Å×ÀÌºí ¾ÐÃàÀº µ¥ÀÌÅÍ Áõ°¡·Î ÀÎÇÑ ½ºÅ丮Áö »ç¿ë·®À» ÁÙ¿© ÁÖ´Â ½ºÅ丮Áö ÃÖÀûÈ­ ±â¼úÀÔ´Ï´Ù.

ÀϹÝÀûÀ¸·Î´Â ¿ë·®ÀÌ Å« Å×ÀÌºí¿¡ ´ëÇØ ¾ÐÃàÀ» Àû¿ëÇÏ´Â °ÍÀÌ ¸î ¹é, ¸î õ °ÇÀÇ µ¥ÀÌÅ͸¦ °¡Áö´Â Å×À̺íÀ» ¾ÐÃàÇÒ ¶§ º¸´Ù ¾òÀ» ¼ö ÀÖ´Â ±â´ë È¿°ú°¡ ³ô½À´Ï´Ù.

 

´ÙÀ½ÀÇ ¿¹¿Í °°ÀÌ ADMIN_GET_TAB_INFO ¶ó´Â SQL °ü¸® ÇÔ¼ö¸¦ ÀÌ¿ëÇÏ°Ô µÇ¸é ƯÁ¤ ½ºÅ°¸¶¿¡ ¼ÓÇÑ ¸ðµç Å×ÀÌºí¿¡ ´ëÇÑ Å×ÀÌºí ¿ÀºêÁ§Æ® Å©±â¸¦ ±¸ÇÒ ¼ö ÀÖ½À´Ï´Ù.

SELECT TABNAME, DATA_OBJECT_P_SIZE FROM

TABLE(SYSPROC.ADMIN_GET_TAB_INFO(‘schema_name’,’’) AS T

ORDER BY DATA_OBJECT_P_SIZE

 

À§ ÇÔ¼ö¸¦ ÀÌ¿ëÇÑ´Ù¸é ¾ÐÃàÀ» ¼öÇàÇÑ Å×ÀÌºí¿¡ ´ëÇÑ ¾ÐÃà »çÀüÀÇ Å©±â¸¦ ¾ò¾î ¿Ã ¼ö ÀÖ¾î ½ÇÁ¦·Î Å×À̺íÀÇ µð½ºÅ© »ç¿ë·®ÀÌ ÁÙ¾î µé°Ô µÇ´Â ¾çÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸ÀÏ DICTIONARY_SIZE °ªÀÌ NULL ÀÎ °æ¿ì´Â, ƯÁ¤ µ¥ÀÌÅÍ ÆÄƼ¼Ç¿¡ ´ëÇؼ­ ¾ÐÃà »çÀüÀ» °¡Áö°í ÀÖÁö ¾Ê°Å³ª, Å×ÀÌºí¿¡ µ¥ÀÌÅÍ°¡ µé¾î ÀÖÁö ¾Ê¾Æ¼­ ¾ÐÃàÀ» ¼öÇàÇÒ ¼ö ¾ø´Â »óÅ ÀÔ´Ï´Ù.

 

µ¥ÀÌÅÍ °Ç¼ö°¡ ¸¹Áö ¾ÊÀº Å×ÀÌºí¿¡(½ÇÁ¦ Å©±â°¡ ¸î ¹é KB) ´ëÇؼ­ ¾ÐÃàÀ» ¼öÇàÇÒ °æ¿ì¿¡´Â ¿ÀÈ÷·Á ¾ÐÃà »çÀüÀ» ¸¸µé ¶§ ÇÊ¿ä·Î ÇÏ´Â µð½ºÅ© °ø°£ ¶§¹®¿¡ ½ÇÁ¦ »ç¿ë·®ÀÌ ´Ã¾î ³¯ ¼öµµ ÀÖ½À´Ï´Ù.

µ¥ÀÌÅÍ ¾ÐÃàÀ» Àû¿ëÇÏ°íÀÚ ÇÑ´Ù¸é Å×À̺íÀÇ Å©±â°¡ 1MB º¸´Ù Å« Å×À̺íÀ» ´ë»óÀ¸·Î ¼±Á¤ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù.

 

SQL Á¶ÀÛ Æ¯¼ºÀ» ÅëÇؼ­ µ¥ÀÌÅÍ ¾ÐÃàÀ» Àû¿ëÇÒ Å×À̺íÀ» ¼±Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. Read-only Å×À̺íÀÎ °æ¿ì¿Í, Update °¡ ºó¹øÈ÷ ¹ß»ýÇÏ´Â Å×À̺í, Àϱâ/¾²±â ºñÀ²ÀÌ 70/30 Á¤µµ·Î Àбâ È£ÃâÀÌ ºó¹øÇÑ Å×ÀÌºí¿¡ ´ëÇؼ­´Â ¾ÐÃàÀ» Àû¿ëÇÏ´Â °ÍÀÌ º¥Ä¡¸¶Å·ÀÇ °á°ú°¡ ÁÁ°Ô ³ª¿Ô½À´Ï´Ù.

 

OLTP ȯ°æ¿¡¼­´Â Å×ÀÌºí¿¡ ´ëÇÑ µ¥ÀÌÅÍ ¾ÐÃàÀ» ¼öÇàÇÒ °æ¿ì µ¿ÀÏÇÑ µ¥ÀÌÅÍ¿¡ ´ëÇؼ­ ºñ ¾ÐÃà ½Ã º¸´Ù Àоî¾ß ÇÏ´Â ÆäÀÌÁöÀÇ ¾çÀÌ ÁÙ¾î µé »Ó ¾Æ´Ï¶ó ¹öÆÛ Ç® ÀûÁß·üµµ ³ô¾ÆÁ® ¼º´ÉÀÇ Çâ»óÀ» °¡Á®¿É´Ï´Ù.

 

Çà ¾ÐÃàÀ» »ç¿ëÇÒ ½Ã I/O ¹Ù¿îµå´Â ÁÙ¾î µé°Ô µÇÁö¸¸, ¿ÀÈ÷·Á ¾ÐÃà ¹× ¾ÐÃà ÇØÁ¦ ½Ã CPUÀÇ »ç¿ëÀº Áõ°¡ÇÏ°Ô µË´Ï´Ù. ÀÌ ºÎºÐÀº DW °°Àº º¹ÀâÇÑ SQLÀÌ ¼öÇàµÇ´Â °æ¿ì ¿ÀÈ÷·Á I/O ¼º´É °³¼±À» ÅëÇØ ¿öÅ©·Îµå°¡ ÁÙ¾îµå´Â °Í¿¡¼­ ÀÌÁ¡À» ãÀ» ¼ö ÀÖ½À´Ï´Ù.

 

¾ÐÃàÀ» ÅëÇؼ­ Çâ»óµÇ´Â °ÍÀ¸·Î´Â INSERT, UPDATE, DELETE ½Ã »ç¿ëµÇ´Â Log »ç¿ë·®ÀÌ ÁÙ¾îµç´Ù´Â °Íµµ ÀÖ½À´Ï´Ù. Log »ç¿ë·®À» ÁÙ¾î µé¸é¼­ Ä÷³ update 󸮰¡ È¿À²ÀÌ ³ô¾Æ Áö°Ô µË´Ï´Ù.

 

3. Estimating compression ratios

DB2 V9ºÎÅÍ´Â INSPECT ROWCOMPESTIMATE À¯Æ¿¸®Æ¼¸¦ ÅëÇØ Å×À̺íÀÇ µ¥ÀÌÅ͸¦ ¾ÐÃàÇϱâ Àü¿¡ ½ºÅ丮Áö »ç¿ë·®ÀÌ ¾î´À Á¤µµ Àý°¨µÇ´ÂÁö È®ÀÎÀ» ÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

INSPRECT ¸í·É¿¡ ROWCOMPESTIMATE ÀýÀ» »ç¿ëÇÏ¿© ¸í·ÉÀ» ½ÇÇà ÇÒ °æ¿ì ÇØ´ç Å×ÀÌºí¿¡ ´ëÇÑ ¾ÐÃà »çÀüÀÌ ¸¸µé¾î Áö¸é¼­ ½ºÅ丮Áö Àý°¨¿¡ ´ëÇÑ ³»¿ëÀÌ º¸°í¼­ ÇüÅÂÀÇ ÆÄÀÏ·Î ÀúÀåµË´Ï´Ù.

¸¸ÀÏ, Å×ÀÌºí¿¡ COMPRESS YES ¿É¼ÇÀÌ ÁöÁ¤µÇÁö ¾Ê¾ÒÀ» °æ¿ì¿¡µµ ½ÇÁ¦ ¾ÐÃàÀº ¼öÇàµÇÁö ¾ÊÁö¸¸ ½ºÅ丮Áö Àý°¨¿¡ ´ëÇÑ °á°ú ÆÄÀÏÀº È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù. Å×ÀÌºí¿¡ COMPRESS YES ¿É¼ÇÀÌ ÁöÁ¤µÇ¾î ÀÖÁö¸¸ µ¥ÀÌÅÍ ¾ÐÃàÀÌ ¼öÇàµÇÁö ¾Ê¾ÒÀ» °æ¿ì¿¡´Â INSPRECT ¸í·ÉÀÌ ¼öÇàµÇ¸é¼­ ¾ÐÃà »çÀüÀÌ ¸¸µé¾î Áö°Ô µË´Ï´Ù.

 

Å×À̺íÀÇ ¾ÐÃà·üÀ» ¾Ë¾Æ º¸±â À§ÇÑ ¸í·É ½ÇÇà ¼ø¼­ ÀÔ´Ï´Ù.

1. INSPECT ¸í·É ¼öÇà

db2 INSPECT ROWCOMPESTIMATE TABLE NAME table_name SCHEMA schema_name RESULTS

  KEEP file_name

INSPECT ¸í·ÉÀ» ÅëÇØ ³ª¿À´Â °á°ú ÆÄÀÏÀº DBM CFGÀÇ DIGPATH¿¡ ¼³Á¤µÈ °æ·Î¿¡ »ý¼ºµË´Ï´Ù.

 

2. °á°ú ÆÄÀÏ º¯È¯

db2inspf file_name output_file_name

db2inspf ¸í·ÉÀ» ÅëÇؼ­ INSPECT ¸í·ÉÀ» ÅëÇØ »ý¼ºµÈ ¹ÙÀ̳ʸ® ÆÄÀÏÀ» ÅؽºÆ® ÇüÅÂÀÇ ÆÄÀÏ·Î ÄÁ¹öÀüÀ» ÇØ ÁÝ´Ï´Ù.

 

´ÙÀ½Àº ÄÁ¹öÀüÀ» ÅëÇØ º» °á°ú ÆÄÀÏÀÇ ¿¹½ÃÀÔ´Ï´Ù.



 

DB2 V9.5 ¿¡¼­´Â SQL °ü¸® ÇÔ¼öÀÎ ADMIN_GET_TAB_COMPRESS_INFO¸¦ ÅëÇؼ­ µ¥ÀÌÅÍ ¾ÐÃà·üÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

SELECT * FROM TABLE(SYSPROC.AMDIN_GET_TAB_COMPRESS_INFO (‘schema’,

‘table_name’, ‘mode’)) AS T

À§¿Í °°Àº SQL ¹®À» ¼öÇàÇÏ¸é µÇ¸ç, mode °ªÀº ‘REPORT’ ¶Ç´Â ‘ESTIMATE’ ÀÔ´Ï´Ù.

 

‘ESTIMATE’ ¸ðµå¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â ROWCOMPESTIMATE ¿É¼ÇÀ» »ç¿ëÇÑ INSPECT À¯Æ¿¸®Æ¼ÀÇ °á°ú¿Í ºñ½ÁÇÏ°Ô Ãâ·ÂÀÌ µË´Ï´Ù. SQL °ü¸® ÇÔ¼ö¸¦ »ç¿ëÇÒ °æ¿ì´Â ¹Ýµå½Ã RUNSTATS ¸í·ÉÀ» ¼öÇàÇØ¾ß Á¤È®ÇÑ °á°ú °ªÀ» È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

‘REPORT’ ¸ðµå¸¦ »ç¿ëÇÏ´Â °æ¿ì´Â ¾ÐÃà »çÀüÀÇ »ý¼º Á¤º¸¸¦ È®ÀÎ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¾ÐÃà »çÀüÀÌ ºôµåµÈ ½Ã°£, ¾ÐÃàÀ» ÅëÇØ Àý¾àµÈ ÆäÀÌÁö ¼ö µîÀÇ Á¤º¸¸¦ È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

 



Å×ÀÌºí½ºÆäÀ̽º µðÀÚÀÎ ½Ã Å×ÀÌºí½ºÆäÀ̽º ÇüŸ¦ REGULAR·Î ÇÒ °æ¿ì ÆäÀÌÁö´ç ÃÖ´ë row ¼ö°¡ 255°³·Î Á¦ÇÑÀÌ µË´Ï´Ù. µ¥ÀÌÅÍ ¾ÐÃàÀ» Àû¿ëÇÒ ½Ã ÇÑ ÆäÀÌÁö¿¡ 255º¸´Ù ¸¹Àº ¼öÀÇ row°¡ µé¾î°¡µµ·Ï Çϱâ À§Çؼ­´Â LARGE ŸÀÔÀÇ Å×ÀÌºí½ºÆäÀ̽º¸¦ ±ÇÀåÇÕ´Ï´Ù.(DB2 V9ºÎÅÍ´Â DMS Å×ÀÌºí½ºÆäÀ̽ºÀÇ µðÆúÆ® ŸÀÔÀº LARGE ÀÔ´Ï´Ù. SMSÀÇ °æ¿ì´Â REGULAR)

¸ñ·Ï ±Û¾²±â ¼öÁ¤