¼Û¼ö° duck921@hanafos.com£üÇöÀç LIG½Ã½ºÅÛ TAÆÀ ¼Ò¼ÓÀ¸·Î LIG¼ÕÇØº¸Çè DBA ¾÷¹«¸¦ ´ã´çÇϰí ÀÖÀ¸¸ç, ÀÌÀü¿¡´Â ¿©·¯ ÇØ µ¿¾È DB2 ±â¼úÁö¿ø°ú ´Ù¾çÇÑ DB2 ÇÁ·ÎÁ§Æ®ÀÇ DBA ¾÷¹«¸¦ ´ã´çÇÏ¿´´Ù. ¾ÆÁ÷µµ DB2ÀÇ ¿©·¯ ºÎºÐÀ» ÆÄ°íµé¾î¾ß ÇØ¼ Ç×»ó °í¹ÎÇϰí ÀÖ´Ù.
DB2 ¼Ò°³
DB2´Â ´Ù¾çÇÑ ±Ô¸ð¿Í ´Ù¾çÇÑ OS¸¦ Áö¿øÇÑ´Ù. °³ÀÎ »ç¿ëÀÚ¸¦ À§ÇÑ ÀͽºÇÁ·¹½º ¹öÀüºÎÅÍ ´ë±Ô¸ð ±â¾÷À» À§ÇÑ ¿£ÅÍÇÁ¶óÀÌÁî ¹öÀü ±×¸®°í µ¥ÀÌÅÍ¿þ¾îÇϿ콺(DW) ¹öÀüÀÌ ÀÖÀ¸¸ç, ¶ÇÇÑ ´Ù¾çÇÑ OS ¸®´ª½º, À©µµ¿ì, À¯´Ð½º(AIX, Solaris, HP-UX)¸¦ Áö¿øÇÑ´Ù. µû¶ó¼ ¿î¿µµÇ´Â OS Â÷ÀÌ ¶§¹®¿¡ ¹ß»ýÇÏ´Â ºÎºÐÀ» Á¦¿ÜÇϰí´Â ´ëºÎºÐ µ¿ÀÏÇÑ »ç¿ëȯ°æÀ» Á¦°øÇÑ´Ù.
°ú°Å¿Í ºñ±³ÇÏ¸é °ø°ø, Åë½Å, Á¦Á¶, ±ÝÀ¶ µî ´Ù¾çÇÑ ºÐ¾ß¿¡¼ »ç¿ëµÇ°í ÀÖÀ¸¸ç ¿î¿µµÇ´Â µ¥ÀÌÅÍÀÇ ¾çµµ ±× ¶§¿Í´Â ºñ±³ÇÒ ¼ö ¾øÀ» ¸¸Å Ä¿Á³Áö¸¸, ¾ÆÁ÷µµ ÀÏ¹Ý »ç¿ëÀÚµéÀÌ Âü°íÇÒ ¸¸ÇÑ ¼ÀûÀ̳ª ÀÚ·áµéÀÌ ¸¹Áö ¾ÊÀº °Íµµ »ç½ÇÀÌ´Ù.
DB2¿Í °ü·ÃµÈ ¿©·¯ ºÐ¾ß Áß ÇÊÀÚ´Â À̹ø ¿¬À縦 ÅëÇØ DB2 ¿ÉƼ¸¶ÀÌÀú(Optimizer)ÀÇ Æ¯¼º°ú »ç¿ëÀÚ°¡ ¼öÇàÇÏ´Â SQL¹®¿¡ ´ëÇÑ ½ÇÇà°èȹÀ» ¼ö¸³, ¿ÉƼ¸¶ÀÌÀú°¡ »ç¿ëÇÏ´Â Åë°èÁ¤º¸¿¡ ´ëÇÑ ÀÌÇØ¿Í À̸¦ ¹ÙÅÁÀ¸·Î ÇÑ SQL Æ©´×¹æ¹ýÀ» ¼Ò°³ÇϰíÀÚ ÇÑ´Ù.
DB2 ¿ÉƼ¸¶ÀÌÀú
DB2¿¡¼ Æ©´×À» Çϱâ À§Çؼ´Â ¸ÕÀú DB2 ¿ÉƼ¸¶ÀÌÀú¿¡ ´ëÇÑ ÀÌÇØ°¡ ÇÊ¿äÇÏ´Ù. ¿ÉƼ¸¶ÀÌÀú´Â »ç¿ëÀÚ°¡ ½ÇÇàÇÏ´Â SQL¹®ÀÌ ÃÖÀûÀÇ ÀÀ´ä¼Óµµ¸¦ ³¾ ¼ö ÀÖµµ·Ï ¾×¼¼½ºµÇ´Â Å×ÀÌºí ¼ø¼, »ç¿ëÇÒ À妽º, Á¶ÀÎ ¹æ½ÄÀ» ¼±ÅÃÇØ ÃÖÀûÈµÈ ½ÇÇà°èȹÀ» ¸¸µç´Ù.
DBMS ¿ÉƼ¸¶ÀÌÀú´Â ºñ¿ë±â¹Ý(Cost-base)°ú ±ÔÄ¢±â¹Ý(Rule-base)À¸·Î ³ª´²Áø´Ù. ºñ¿ë±â¹Ý ¿ÉƼ¸¶ÀÌÀú´Â °¢°¢ÀÇ ºñ¿ë(ºñ¿ë »êÁ¤¿ä¼Ò´Â CPU, I/O, ¸Þ¸ð¸®, ³×Æ®¿öÅ© µî)À» °è»êÇØ °¡Àå ³·Àº ºñ¿ëÀÇ ½ÇÇà°èȹÀ» ¼¼¿ì´Â °ÍÀ̸ç, ±ÔÄ¢±â¹Ý ¿ÉƼ¸¶ÀÌÀú´Â Á¤ÇØÁø ±ÔÄ¢(°Ë»ö ¹æ½Ä, Á¶ÀÎ ¹æ½Ä, »ç¿ëµÉ À妽ºÀÇ Æ¯¼º, °Ë»ö Á¶°Ç µî)À» ±âÁØÀ¸·Î ½ÇÇà°èȹÀ» ¼¼¿ì´Â °ÍÀÌ´Ù. ´ëºÎºÐÀÇ DBMS´Â ºñ¿ë±â¹Ý ¿ÉƼ¸¶ÀÌÀú¸¦ »ç¿ëÇϰí ÀÖ´Ù.
ÇÊÀÚ°¡ »ý°¢ÇÏ´Â DB2ÀÇ °¡Àå Å« Ư¡Àº ¿À·£ ±â°£ µ¿¾È(DB2´Â óÀ½ºÎÅÍ ºñ¿ë±â¹Ý ¿ÉƼ¸¶ÀÌÀú¸¦ »ç¿ë)¹ßÀüÇØ¿Â ºñ¿ë±â¹Ý ¿ÉƼ¸¶ÀÌÀúÀÇ ½Å·Ú¼º(Åë°è Á¤º¸°¡ À߸øµÈ °æ¿ì °¡²û ÀǵµÇÏÁö ¾ÊÀº ¾×¼¼½º Ç÷£(Access Plan)À» ¸¸µé±âµµ Çϴµ¥, ÀÌ ³»¿ëÀº ÈÄ¿¡ »ç·Ê¸¦ ÅëÇØ¼ ¼³¸íÇϵµ·Ï ÇϰڴÙ)°ú Äõ¸® ¸®¶óÀÌÆ®(Query Rewrite)´Ù. Åë°èÁ¤º¸¿¡ ´ëÇÑ ¼³¸í¿¡ ¾Õ¼ Äõ¸® ¸®¶óÀÌÆ® ±â´ÉÀ» ¼³¸íÇϸé, »ç¿ëÀÚ°¡ ¼öÇàÇÑ SQL¹®¿¡ ´ëÇØ ¿ÉƼ¸¶ÀÌÀú°¡ ÃÖÀûÈµÈ ½ÇÇà°èȹÀ» ¸¸µé±â À§ÇÑ ÀÇ¹Ì»ó µ¿ÀÏÇÑ SQL¹®À¸·Î º¯°æ½ÃŰ´Â °ÍÀ» ¸»ÇÑ´Ù. ¸î °¡Áö ¿¹¸¦ µé¸é
CASE 1. »ç¿ëÀÚ°¡ »ç¿ëÇÒ EMP Å×À̺íÀÇ EMPNO Ä÷³¿¡ uniqueÀ妽º ¶Ç´Â primary key°¡ Á¤ÀÇµÈ °æ¿ì, »ç¿ëÀÚ°¡ À̸¦ ¸ð¸£°í ¾Æ·¡¿Í °°Àº SQL¹®À» ¼öÇàÇÏ¸é ¿ÉÆ¼¸¶ÀÌÀú´Â DISTINCT ¹®À» Á¦°ÅÇØ ºÒÇÊ¿äÇÑ Á¤·ÄÀÛ¾÷À» ¼öÇàÇÏÁö ¾Êµµ·Ï ÇÑ´Ù. ÀÌ´Â ÇÊ¿ä ¾ø´Â ±¸¹®À» Á¦°ÅÇÑ´Ù´Â ¶æ°ú °°´Ù.
- ¿øº» SQL¹®
SELECT DISTINCT EMPNO, FIRSTNME
FROM EMP;
- RewriteµÈ SQL¹®
SELECT EMPNO, FIRSTNME
FROM EMP;
CASE 2. Á¤ÀǵǾî ÀÖ´Â ºä¿¡ Ãß°¡ÀûÀÎ °Ë»öÁ¶°Ç(predicate)À» »ç¿ëÇÒ °æ¿ì, ÇØ´ç ºä¿¡ ÀÇÇØ »ý¼ºµÈ °á°ú¿¡ Ãß°¡ÀûÀ¸·Î °Ë»öÁ¶°ÇÀ» ¹Ý¿µÇÏ´Â °ÍÀÌ ¾Æ´Ñ ºä¸¦ »ý¼ºÇϴµ¥ Á¤ÀÇµÈ SELECT¹®¿¡ ÇØ´ç °Ë»öÁ¶°ÇÀ» ÇÔ²² »ç¿ëÇØ °á°ú¸¦ ¹ÝȯÇÏ°Ô µÈ´Ù.
- ¿øº»SQL¹®
CREATE VIEW V_D21_EMP AS
SELECT *
FROM EMPLOYEE
WHERE WORKDEPT = ‘D21’;
SELECT *
FROM V_D21_EMP
WHERE EMPNO = ‘000250’;
- RewriteµÈ SQL¹®
SELECT *
FROM EMPLOYEE
WHERE EMPNO = ‘000250’
AND WEORKDEPT = ‘D21’;
CASE 3. »ç¿ëÀÚ°¡ »ç¿ëÇÑ °Ë»ö Á¶°Ç¿¡ ¼û°ÜÁø Á¶°ÇÀ» Ãß°¡ÇÑ´Ù.
- ¿øº» SQL¹®
SELECT EMP.EMPNO, EMP.FIRSTNME, DEPT.DEPTNAME
FROM EMP, DEPT
WHERE EMP.WORKDEPT = DEPT.DEPTNO
AND EMP.WORKDEPT = ‘A01’;
- RewriteµÈ SQL¹®
SELECT EMP.EMPNO, EMP.FIRSTNME, DEPT.DEPTNAME
FROM EMP, DEPT
WHERE EMP.WORKDEPT = DEPT.DEPTNO
AND EMP.WORKDEPT = ‘A01’
AND DEPT.DEPTNO = ‘A01’;
CASE 4. ¼ºêÄõ¸®(Subquery)¹®À» Á¶Àι®À¸·Î º¯°æÇÑ´Ù.
- ¿øº» SQL¹®
SELECT EMPNO, FIRSTNAME
FROM EMP
WHERE WORKDEPT IN
(SELECT DEPTNO
FROM DEPT
WHERE DEPTNAME = ‘SALES’);
- RewriteµÈ SQL¹®
SELECT EMP.EMPNO, EMP.FIRSTNAME
FROM EMP, DEPT
WHERE EMP.WORKDEPT = DEPT.DEPTNO
AND DEPT.DEPTNAME = ‘SALES’;
<±×¸² 1> ¿ÉƼ¸¶ÀÌÀúÀÇ ½ÇÇà°èȹ ¼ö¸³´Ü°è
<±×¸² 1>Àº DB2 ¿ÉƼ¸¶ÀÌÀúÀÇ ½ÇÇà°èȹ ¼ö¸³´Ü°è¸¦ ³ªÅ¸³½ ±×¸²À¸·Î ½ÇÇà°èȹÀ» ¼ö¸³ÇÏ´Â ´Ü°è Áß Äõ¸®¸¦ ´Ù½Ã ¾²´Â ´Ü°è¸¦ °ÅÄ¡¸é¼ ¿ÉƼ¸¶ÀÌÀú°¡ ÃÖÀûÈµÈ ½ÇÇà°èȹÀ» ¼ö¸³Çϱâ À§ÇØ ³»ºÎÀûÀ¸·Î »ç¿ëÀÚ°¡ ¼öÇàÇÑ SQL¹®À» ¼öÁ¤ÇØ ½ÇÇàÇÏ´Â °ÍÀ» ¾Ë ¼ö ÀÖ´Ù.
Åë°èÁ¤º¸
¿ÉƼ¸¶ÀÌÀú¸¦ ¼³¸íÇϸç Åë°èÁ¤º¸¸¦ »ç¿ëÇÑ´Ù°í ¾ð±ÞÇߴµ¥ °ú¿¬ ¾î¶² Åë°èÁ¤º¸¸¦ ¾î¶»°Ô »ç¿ëµÇ´ÂÁö ÀÚ¼¼È÷ »ìÆìº¸µµ·Ï ÇÑ´Ù.
DB2¿¡¼ ¼öÁýµÇ´Â Åë°èÁ¤º¸´Â ½Ã½ºÅÛ Ä«´Þ·Î±× Å×À̺í(DB2ÀÇ ¸ðµç ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ Á¤º¸¸¦ ÀúÀåÇÏ´Â ¸ÞŸµ¥ÀÌÅͷμ SYSIBM ½ºÅ°¸¶·Î »ý¼ºµÊ)¿¡ ÀúÀåµÈ´Ù. Åë°èÁ¤º¸´Â Á÷Á¢ Ä«´Þ·Î±× Å×ÀÌºí¿¡¼ Á¶È¸°¡ °¡´ÉÇÏÁö¸¸, Ä«´Þ·Î±× Å×ÀÌºí¿¡¼ »ç¿ëÀÚ°¡ ÀÚÁÖ »ç¿ëÇϰí Åë°èÁ¤º¸¿Í °ü·ÃµÈ Ä÷³µé·Î ÀÌ·ïÁø Ä«´Þ·Î±× ºä(SYSCAT ½ºÅ°¸¶·Î »ý¼ºµÊ)¿¡¼µµ Á¶È¸°¡ °¡´ÉÇÏ´Ù. ±× ³»¿ëÀÌ ¹æ´ëÇÏ¿© ´Ù ´Ù¸¦ ¼ö´Â ¾øÁö¸¸ ÇÊÀÚ°¡ Æ©´×À» ÁøÇàÇÏ´Â µ¿¾È ÀÚÁÖ ÂüÁ¶ÇÏ´Â Ä«´Þ·Î±× ºä¿Í ±×¿¡ ÇØ´çÇÏ´Â Ä÷³ À§ÁÖ·Î ¼³¸íÇÑ´Ù.
|
SYSCAT.TABLES (SYSSTAT.TABLES) ? Å×À̺í°ú °ü·ÃµÈ Á¤º¸ |
<¸®½ºÆ® 1> ¸¹ÀÌ »ç¿ëÇÏ´Â Ä«´Þ·Î±× ºä¿Í ÇØ´ç Ä÷³
ºÐÆ÷µµ Á¤º¸¸¦ ÀÌÇØÇϱâ À§ÇØ °£´ÜÇÑ ¿¹¸¦ ÅëÇØ È®ÀÎÇØ º¸ÀÚ. EMP Å×À̺íÀÇ µ¥ÀÌÅÍ´Â Àüü 100°ÇÀ̸ç, Ä÷³ µ¥ÀÌÅÍ·Î ±¸¼ºµÇ¾î ÀÖ´Ù.
»ç¹ø : 1 ~ 100 (°íÀ¯ÇÑ ¿¬¹ø)
À̸§ : ´ëºÎºÐ °íÀ¯ Çϳª ÀϺΠµ¿¸íÀÌÀÎ Á¸Àç (¹ÚÂùÈ£-3, ÇÑ¿¹½½-5)
Áö¿ª : ¼¿ï, ÀÎõ, ´ëÀü, ´ë±¸, ¿ï»ê, ºÎ»ê, ±¤ÁÖ, °æ±â, °¿ø, Àü³², ÀüºÏ, °æºÏ, °æ³², ÃæºÏ, Ãæ³², Á¦ÁÖ
¼ºº° : ³², ³à
ÈÞ´ëÆù¹øÈ£ : °íÀ¯°ª ¶Ç´Â NULL
ÀÔ»çÀÏ - 2009.01.01 ~ 2009.01.31
<¸®½ºÆ® 2> ºÐÆ÷µµ Á¤º¸ ÀÌÇØ¸¦ À§ÇÑ ¿¹Á¦
À妽º¸¦ »ý¼ºÇß´Ù.
CREATE INDEX IDX1 ON EMP (»ç¹ø);
CREATE INDEX IDX2 ON EMP (À̸§);
CREATE INDEX IDX3 ON EMP (Áö¿ª, À̸§);
CREATE INDEX IDX4 ON EMP (¼ºº°, ÀÔ»çÀÏ, Áö¿ª);
<¸®½ºÆ® 3> ¿¹Á¦¿¡¼ µµÃâµÈ À妽º
ÀÌÁ¦ Åë°èÁ¤º¸¸¦ ¼öÁýÇØ º¸ÀÚ. DB2¿¡¼ Åë°èÁ¤º¸¸¦ ¼öÁýÇÏ´Â ¸í·ÉÀº RUNSTATSÀ̸ç, ´Ù¾çÇÑ ¿É¼ÇÀÌ Àִµ¥ °¡Àå ÈçÈ÷ »ç¿ëÇÏ´Â ¿É¼ÇÀº ´ÙÀ½°ú °°´Ù.
- ºÐÆ÷µµ Á¤º¸ ¾øÀÌ µ¥ÀÌÅÍ¿Í À妽ºÀÇ Åë°èÁ¤º¸ ¼öÁý
RUNSTATS ON TABLE DB2V95.EMP AND INDEXES ALL;
(Âü°í·Î DB2´Â ±âº»ÀûÀ¸·Î ÇØ´ç µ¥ÀÌÅͺ£À̽º¿¡ Á¢¼ÓÇÑ »ç¿ëÀÚ °èÁ¤ÀÌ ½ºÅ°¸¶¸íÀ¸·Î »ç¿ëµÇ³ª »ç¿ëÀÚ °èÁ¤°ú ´Ù¸¥ º°µµÀÇ ½ºÅ°¸¶¸íÀ» »ý¼ºÇÒ ¼öµµ ÀÖ´Ù. ¾ÕÀ¸·Î »ç¿ëµÇ´Â ¿¹Á¦ ¿ÀºêÁ§Æ®µéÀÇ ½ºÅ°¸¶¸íÀº DB2V95 À̸ç, Åë°èÁ¤º¸ ¼öÁý ½Ã¿¡´Â ¹Ýµå½Ã ½ºÅ°¸¶¸í. Å×À̺í¸íÀ¸·Î ±â¼úÇØ¾ß ÇÑ´Ù.)
- À妽º·Î Á¤ÀÇµÈ Ä÷³ÀÇ ºÐÆ÷µµ Á¤º¸¸¦ Æ÷ÇÔÇØ µ¥ÀÌÅÍ¿Í À妽ºÀÇ Åë°èÁ¤º¸ ¼öÁý
RUNSTATS ON TABLE DB2V95.EMP AND WITH DISTIRIBUTION ON KEY COLUMNS AND INDEXES ALL;
Åë°èÁ¤º¸ ¼öÁý ÈÄ À§¿¡¼ ¼³¸íÇÑ °¢°¢ÀÇ Ä«´Þ·Î±× ºäÀÇ ½ÇÁ¦ µ¥ÀÌÅ͸¦ Á¶È¸ÇØ º¸¸é <¸®½ºÆ® 4>¿Í °°Àº °á°ú¸¦ ¾ò´Â´Ù.
SELECT TABNAME, CARD, NPAGES, FPAGES, STATS_TIME
FROM SYSCAT.TABLES
WHERE TABNAME = 'EMP';
TABNAME CARD NPAGES FPAGES STATS_TIME
---------- --------- --------- --------- ---------
EMP 100 2 2 2010-05-21-20.42.32.995201
<¸®½ºÆ® 4> Ä«´Þ·Î±× ºäÀÇ ½ÇÁ¦ µ¥ÀÌÅÍ Á¶È¸°á°ú
<¸®½ºÆ® 4>¸¦ ÅëÇØ Àüü°Ç¼ö´Â 100°ÇÀÌ°í ¹°¸®ÀûÀ¸·Î 2 ÆäÀÌÁö¸¦ »ç¿ëÇϸç 2010 -05-15¿¡ Åë°èÁ¤º¸ °»½ÅÇßÀ½À» ¾Ë ¼ö ÀÖ´Ù.
SELECT SUBSTR(COLNAME, 1, 10) COLNAME, COLCARD
FROM SYSCAT.COLUMNS
WHERE TABNAME = 'EMP'
ORDER BY COLNO;
COLNAME COLCARD
--------------------- -------------
»ç¹ø 100
À̸§ 94
Áö¿ª 16
¼ºº° 2
ÈÞ´ëÆù¹øÈ£ 100
ÀÔ»çÀÏ 29
<¸®½ºÆ® 5> ¿¹Á¦¿¡¼ µµÃâµÈ COLCARD
COLCARD´Â ÇØ´ç Ä÷³ µ¥ÀÌÅÍ Áß °íÀ¯ÇÑ °ªÀÇ °³¼ö¸¦ ÀǹÌÇÑ´Ù. Àüü µ¥ÀÌÅÍ 100°Ç Áß »ç¹ø°ú ÈÞ´ëÆù ¹øÈ£´Â °¢ »ç¿øº°·Î °íÀ¯ÇϹǷΠ100ÀÌ µÇ°í, ¼ºº°Àº ³²¿© 2°¡ÁöÀ̹ǷΠ°íÀ¯°ªÀÇ °³¼ö°¡ 2°¡ µÈ´Ù. À̸§Àº µ¿¸íÀÌÀÎ(¹ÚÂùÈ£-3, ÇÑ¿¹½½-5)¸¦ Æ÷ÇÔÇØ °íÀ¯°ª °³¼ö°¡ 92´Ù. Áß¿äÇÑ °ÍÀº ÀÌ µ¥ÀÌÅ͸¦ Àß ÀÌÇØÇϸé ÃßÈÄ À妽º¸¦ Ãß°¡ÇÒ ¶§ ¾î¶² Ä÷³ÀÇ Á¾·ù¿Í ¼ø¼·Î À妽º¸¦ »ý¼ºÇÒÁö ÆÇ´ÜÇϴµ¥ µµ¿òÀÌ µÈ´Ù(<¸®½ºÆ® 5> ÂüÁ¶).
IDX1 À妽º´Â »ç¹ø Ä÷³À¸·Î µÈ À妽º·Î, ù¹øÂ° Ä÷³¿¡ ÇØ´çÇÏ´Â °íÀ¯°ª °³¼öÀÎ FIRSTKEYCARD°ªÀÌ 100ÀÌ´Ù. µû¶ó¼ ÀÌ Ä÷³À» °Ë»öÁ¶°ÇÀ¸·Î »ç¿ëÇÏ¸é ´ëºÎºÐÀÇ µ¥ÀÌÅͰ¡ ÇÊÅ͸µ µÅ ¾×¼¼½º µ¥ÀÌÅ;çÀÌ ÁÙ¾îµç´Ù. ±×·¯³ª IDX4 À妽º´Â ¼ºº°, ÀÔ»çÀÏ, Áö¿ª Ä÷³ ¼øÀ¸·Î µÈ À妽º·Î, ù ¹øÂ° Ä÷³¿¡ ÇØ´çÇÏ´Â ¼ºº°ÀÇ °íÀ¯°ª °³¼öÀÎ FIRSTKEYCARD°ªÀÌ 2´Ù. µû¶ó¼ ÀÌ Ä÷³À» °Ë»ö Á¶°ÇÀ¸·Î »ç¿ëÇϸé ÇÊÅ͸µ ºñÀ²ÀÌ ³·¾Æ ¾×¼¼½º µ¥ÀÌÅ;çÀÌ ´Ã¾î³´Ù. ÇÑÆí À妽ºÀÇ Ã¹ ¹øÂ°¿Í µÎ ¹øÂ° Ä÷³Àº °íÀ¯°ª °³¼öÀÎ FIRST2KEYCARD°ªÀÌ 49·Î, °Ë»ö Á¶°ÇÀ¸·Î ¼ºº°°ú ÀÔ»çÀÏÀ» ÇÔ²² »ç¿ëÇÒ °æ¿ì ÇÊÅ͸µ ºñÀ²ÀÌ »ó½ÂÇØ ¾×¼¼½º µÇ´Â ¾çÀÌ ÁÙ¾îµç´Ù(<¸®½ºÆ® 6> ÂüÁ¶).
|
SELECT SUBSTR(INDNAME, 1, 10) INDNAME, CLUSTERRATIO, NLEVELS, NLEAF, |
<¸®½ºÆ® 6> ¿¹Á¦ÀÇ ÃÖÁ¾ SQL¹®
ClusterRatio´Â ÇØ´ç À妽º ¼ø¼´ë·Î ½ÇÁ¦ ¹°¸®Àû µ¥ÀÌÅÍ ÆäÀÌÁö°¡ Á¤·ÄµÈ ºñÀ²·Î, <±×¸² 2>¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ 100% °¡±î¿ï¼ö·Ï µ¥ÀÌÅÍ Á¤·ÄºñÀ²Àº ³ô´Ù. ±×·¯³ª ¾Õ¼± ¿¹½Ã´Â µ¥ÀÌÅ;çÀÌ ¸¹Áö ¾Ê¾Æ ¸ðµÎ 100%·Î ³ªÅ¸³µÀ» »Ó ½ÇÁ¦ ¿î¿µ µ¥ÀÌÅÍ¿¡¼ ÀÌ·± °æ¿ì´Â ¾Æ½±°Ôµµ °ÅÀÇ ¾ø´Ù. Ŭ·¯½ºÅÍ ºñÀ²ÀÌ ³ô°Å³ª ¹üÀ§°Ë»ö ¶Ç´Â ÇØ´ç À妽º¸¦ »ç¿ëÇØÀÐÀ» µ¥ÀÌÅ;çÀÌ ¸¹À» °æ¿ì ¶Ç´Â µ¥ÀÌÅͰ¡ ¹°¸®ÀûÀ¸·Î Á¤·ÄµÅ ¸ð¿© ÀÖÀ» ¶§ ¾×¼¼½ºµÇ´Â µ¥ÀÌÅ;çÀÌ ÁÙ¾îµé¾î ¼º´ÉÀÌ Çâ»óµÈ´Ù.
<±×¸² 2>Ŭ·¯½ºÅÍ ·¹ÀÌÅä À妽º¿Í Å×ÀÌºí µ¥ÀÌÅÍÀÇ »ó°ü°ü°è
Åë°èÁ¤º¸ ¼öÁý ½Ã ºÐÆ÷µµ ¼öÁý¿É¼Ç(RUNSTATS ¸í·ÉÀÇ WITH DISTRIBUTION ±¸¹®)À» »ç¿ëÇÏ´Â °æ¿ì¿¡¸¸ ºÐÆ÷µµ Á¤º¸°¡ ¼öÁýµÅ ¾Æ·¡ SQL¹®À¸·Î Á¶È¸°¡ °¡´ÉÇÏ´Ù.
| SELECT SUBSTR(COLNAME, 1, 10) COLNAME, TYPE, SEQNO, SUBSTR(COLVALUE, 1, 15) COLVALUE, VALCOUNT, DISTCOUNT FROM SYSCAT.COLDIST WHERE TABNAME = 'EMP' ORDER BY COLNAME, TYPE, SEQNO; |
<¸®½ºÆ® 7> Åë°èÁ¤º¸ ¼öÁýÁ¶È¸¸¦ À§ÇÑ SQL¹®
DB2´Â µ¥ÀÌÅͺ£À̽º ¼³Á¤°ú °ü·ÃµÈ µ¥ÀÌÅͺ£À̽º ÆÄ¶ó¹ÌÅÍ(DB CFG)°¡ ÀÖÀ¸¸ç, Åë°èÁ¤º¸¼öÁý°ú °ü·ÃµÈ ÆÄ¶ó¹ÌÅÍ Áß NUM_FREQVALUES(Frequency Value)´Â 10, NUM_QUANTILES(Quantile Value)´Â 20À¸·Î °¢°¢ ¼³Á¤µÅÀÖ´Ù. À̰ÍÀº ÇØ´ç Ä÷³ÀÇ µ¥ÀÌÅÍ Áß ÃÖ»óºóµµ µ¥ÀÌÅÍ 10°³¿Í ÃÖ¼Ò°ª°ú ÃÖ´ë°ªÀ» ÀÓÀÇÀÇ 20°³ ±¸°£À¸·Î ³ª´©°í °¢ ±¸°£ º°·Î ´©Àû°Ç¼ö¸¦ ¼öÁýÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù.
RUNSTATS ¼öÇà ½Ã ºÐÆ÷µµ Á¤º¸¸¦ ¼öÁýÇÏ¸é¼ ¿É¼ÇÀ» ÁöÁ¤Çϸé ÇØ´ç ¿É¼ÇÀÌ »ç¿ëµÇÁö¸¸, º°µµ¿É¼ÇÀ» »ç¿ëÇÏÁö ¾ÊÀ¸¸é ºÐÆ÷µµ ¼öÁý°ú °ü·ÃµÈ DB CFG¿¡ ¼³Á¤µÈ °ªÀÌ »ç¿ëµÈ´Ù. <¸®½ºÆ® 8>ÀÇ °á°ú¸¦ »ìÆìº¸¸é(°á°ú °Ç¼ö°¡ ¸¹¾Æ ÀϺΠµ¥ÀÌÅÍ´Â Á¦¿ÜÇÏ¿´À¸¸ç, Ä«´Þ·Î±× µ¥ÀÌÅÍ¿¡¼ -1Àº Á¤º¸¸¦ ¼öÁýÇÏÁö ¾Ê¾ÒÀ½À» ÀǹÌÇÑ´Ù), °¢ Ä÷³ º°·Î TYPE F´Â 10°³(SEQNO 1~10), TYPE Q´Â 20°³(SEQNO 1~20)¸¦ ¼öÁýÇß´Ù. ¸ðµç µ¥ÀÌÅÍ´Â °íÀ¯ÇÑ »ç¹ø°ú À̸§ Áß Áߺ¹ µ¥ÀÌÅͰ¡ ÀÖ´Â ¹ÚÂùÈ£(3)¿Í ÇÑ¿¹½½(2)À» Á¦¿ÜÇÏ°í µ¥ÀÌÅ͸¦ ¼öÁýÇÏÁö ¾Ê¾Æ COLVALUE´Â NULL, VAL COUNT´Â -1ÀÌ µÆ´Ù. À̸§ Ä÷³ÀÇ TYPE Q µ¥ÀÌÅ͸¦ º¸¸é, À̸§ÀÌ ‘ÇÑ¿¹½½’ º¸´Ù °°°Å³ª ÀÛÀº µ¥ÀÌÅÍÀÇ ¼ö´Â 99(VAL COUNT)À̸ç ÀÌÁß À¯ÀÏÇÑ µ¥ÀÌÅÍÀÇ ¼ö´Â 93(COLCOUNT)ÀÌ´Ù. ÀÔ»çÀÏ Ä÷³ÀÇ TYPE F µ¥ÀÌÅ͸¦ º¸¸é ¹Ýº¹ºóµµ°¡ ³ôÀº »óÀ§ 10°³ µ¥ÀÌÅÍ Áß Ã¹ ¹øÂ°´Â ‘2010-01-21’·Î 9À̸ç, ¿¹øÂ°´Â ‘2010-01-11’·Î 3ÀÌ´Ù.
¸¸¾à RUNSTATS ¸í·É ¼öÇà ½Ã NUM_FREQVALUES ¿É¼ÇÀ» 10º¸´Ù Å« °ªÀ¸·Î ÁöÁ¤ÇÏ¸é ´ÙÀ½ ºóµµÀÇ µ¥ÀÌÅ͵éÀÌ Ãß°¡¼öÁý µÈ´Ù. TYPE Q µ¥ÀÌÅ͸¦ º¸¸é ÀÔ»çÀÏÀÌ ‘2010-01-02’º¸´Ù °°°Å³ª ÀÛÀº µ¥ÀÌÅÍ´Â 2¸ç, ÀÔ»çÀÏÀÌ ‘2010-01-04’ º¸´Ù °°°Å³ª ÀÛÀº µ¥ÀÌÅÍ´Â ÀÌÀü ±¸°£ µ¥ÀÌÅÍ 2°ÇÀ» Æ÷ÇÔÇÑ ÃÑ 7°ÇÀÌ´Ù.
| COLNAME TYPE SEQNO COLVALUE VALCOUNT DISTCOUNT
-------------------------------------------------------- |
<¸®½ºÆ® 8> RUNSTATS ¼öÇàÀ» ÅëÇØ ¼öÁýµÈ ºÐÆ÷µµ Á¤º¸
¼³¸íÇÑ Åë°èÁ¤º¸°¡ ÀÌÇØµÆ´Ù¸é DB2 ¿ÉƼ¸¶ÀÌÀú°¡ Åë°èÁ¤º¸¸¦ ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö ¿¹¸¦ ÅëÇØ ¾Ë¾Æº¸ÀÚ.
SELECT *
FROM EMP
WHERE »ç¹ø = 10;
°Ë»öÁ¶°Ç¿¡ = °¡ »ç¿ëµÆ´Ù. ºÐÆ÷µµ Á¤º¸ Áß TYPEÀÌ FÀÎ °ªµéÀÌ ÀÌ¿ëµÇ¸ç, ÇØ´ç Ä÷³¿¡ Áߺ¹µÈ µ¥ÀÌÅͰ¡ ¾ø¾î VAL COUNT¸¦ ¼öÁýÇÏÁö ¾Ê¾ÒÀ¸¹Ç·Î ¿ÉƼ¸¶ÀÌÀú´Â ÀÌ SQL¹®ÀÇ ¼öÇà°á°ú·Î 1°ÇÀÌ ¹ÝȯµÈ´Ù°í ¿¹»óÇÑ´Ù(½ÇÁ¦´Â 9°ÇÀ̸ç, DB2´Â 8°ÇÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯµÈ´Ù°í ¿¹»óÇÑ´Ù).
SELECT *
FROM EMP
WHERE À̸§ = ¹ÚÂùÈ£;
°Ë»öÁ¶°Ç¿¡ = °¡ »ç¿ëµÆ´Ù. ºÐÆ÷µµ Á¤º¸ Áß TYPEÀÌ FÀÎ °ªµéÀÌ ÀÌ¿ëµÇ¸ç, ºÐÆ÷µµ Á¤º¸¿¡¼ À̸§ÀÌ ‘¹ÚÂùÈ£’ÀÎ VALCOUNT°¡ 3ÀÎ Á¤º¸°¡ ÀÖ¾î ¿ÉÆ¼¸¶ÀÌÀú´Â ÀÌ SQL¹®ÀÇ ¼öÇà°á°ú·Î 3°ÇÀÌ ¹ÝȯµÈ´Ù°í ¿¹»óÇÑ´Ù(½ÇÁ¦´Â 3°ÇÀ̸ç, DB2´Â 3°ÇÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯµÈ´Ù°í ¿¹»óÇÑ´Ù).
SELECT *
FROM EMP
WHERE À̸§ <= ‘°¿ë¼®’;
°Ë»öÁ¶°Ç¿¡ ¹üÀ§°¡ »ç¿ëµÆÀ¸¹Ç·Î ºÐÆ÷µµ Á¤º¸ Áß TYPEÀÌ QÀÎ °ªµéÀ» ÀÌ¿ëÇÑ´Ù. ºÐÆ÷µµ Á¤º¸¿¡¼ À̸§ÀÌ ‘°¿ë¼®’º¸´Ù À۰ųª °°Àº VALCOUNT°¡ 5ÀÎ Á¤º¸°¡ ÀÖ°í, ÇØ´ç ±¸°£¿¡¼ °íÀ¯°Ç¼ö¸¦ ÀǹÌÇÏ´Â DISCOUNT°¡ 5À̹ǷΠ¿ÉƼ¸¶ÀÌÀú´Â ÀÌ SQL¹®ÀÇ ¼öÇà°á°ú·Î 5°ÇÀÌ ¹ÝȯµÈ´Ù°í ¿¹»óÇÑ´Ù(½ÇÁ¦´Â 5°ÇÀ̸ç, DB2´Â 5°ÇÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯµÈ´Ù°í ¿¹»óÇÑ´Ù).
SELECT *
FROM EMP
WHERE ÀÔ»çÀÏ <= ‘2010-01-04’
°Ë»öÁ¶°Ç¿¡ ¹üÀ§°¡ »ç¿ëµÇ¾úÀ¸¹Ç·Î ºÐÆ÷µµ Á¤º¸ Áß TYPEÀÌ QÀÎ °ªµéÀ» ÀÌ¿ëÇÑ´Ù. ºÐÆ÷µµ Á¤º¸¿¡¼ ÀÔ»çÀÏÀÌ ‘2010-01-04’º¸´Ù À۰ųª °°Àº VALCOUNT°¡ 7ÀÎ Á¤º¸°¡ ÀÖ°í DISCOUNT´Â ¼öÁýÀÌ µÇÁö ¾Ê¾Ò´Ù. ÇØ´ç ±¸°£¿¡ Áߺ¹ µ¥ÀÌÅͰ¡ Á¸ÀçÇÑ´Ù´Â ÀǹÌÀ̹ǷΠ¿ÉƼ¸¶ÀÌÀú´Â ÀÌ SQL¹®ÀÇ ¼öÇà°á°ú·Î ¾à 7°Ç ÀÌ»óÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯµÈ´Ù°í ¿¹»óÇÑ´Ù(½ÇÁ¦´Â 9°ÇÀ̸ç, DB2´Â 8°ÇÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯÇÑ´Ù°í ¿¹»óÇÑ´Ù).
SELECT *
FROM EMP
WHERE ÀÔ»çÀÏ BETWEEN ‘2010-01-04’ AND ‘2010-01-30’;
°Ë»öÁ¶°Ç¿¡ ¹üÀ§°¡ »ç¿ëµÇ¾úÀ¸¹Ç·Î ºÐÆ÷µµ Á¤º¸ Áß TYPEÀÌ QÀÎ °ªµéÀ» ÀÌ¿ëÇÑ´Ù. ºÐÆ÷µµ Á¤º¸¿¡¼ ÀÔ»çÀÏÀÌ ‘2010-01-29’º¸´Ù À۰ųª °°Àº VALCOUNT°¡ 95ÀÎ Á¤º¸°¡ ÀÖ°í ‘2010-01-04’º¸´Ù À۰ųª °°Àº VALCOUNT°¡ 7À̸ç, DISCOUNT´Â ¼öÁýÀÌ µÇÁö ¾Ê¾Ò´Ù. ÇØ´ç±¸°£¿¡ Áߺ¹ µ¥ÀÌÅͰ¡ Á¸ÀçÇÑ´Ù´Â ÀǹÌÀ̹ǷΠ¿ÉƼ¸¶ÀÌÀú´Â ÀÌ SQL¹®ÀÇ ¼öÇà°á°ú·Î ¾à 87°Ç ÀÌ»óÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯµÈ´Ù°í ¿¹»óÇÑ´Ù(½ÇÁ¦´Â 93°ÇÀ̸ç, DB2´Â ¾à 94°ÇÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯµÈ´Ù°í ¿¹»óÇÑ´Ù).
SELECT *
FROM EMP
WHERE ¼ºº° = ‘³²ÀÚ’;
À§¿Í °°Àº SQL¹®ÀÌ ¼öÇàµÉ ¶§ ºÐÆ÷µµ Á¤º¸°¡ ÀÖ´Ù¸é ¿ÉÆ¼¸¶ÀÌÀú´Â 85°ÇÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯÇÑ´Ù°í ¿¹»óÇÒ °ÍÀÌ´Ù. ±×·¯³ª ºÐÆ÷µµ Á¤º¸°¡ ¾ø´Ù¸é À̸¦ ÆÇ´ÜÇÒ ¼ö ¾øÀ¸¹Ç·Î Å×À̺íÀÇ CARD¼ö´Â 100À̰í, ¼ºº° Ä÷³ÀÇ COLCARD´Â 2À̹ǷΠ¹ÝȯµÇ´Â Çà¼ö´Â 100/2ÀÎ 50À̶ó°í ÆÇ´ÜÇÑ´Ù. ÀÌ °æ¿ì Á¶°ÇÀÌ ³²ÀÚÀÌ¸é ½ÇÁ¦ µ¥ÀÌÅͺ¸´Ù ´õ ÀûÀº ¼öÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯµÈ´Ù°í ÆÇ´ÜÇϸç, Á¶°ÇÀÌ ¿©ÀÚÀÏ °æ¿ì ½ÇÁ¦ µ¥ÀÌÅͺ¸´Ù ´õ ¸¹Àº ¼öÀÇ µ¥ÀÌÅͰ¡ ¹ÝȯµÈ´Ù°í ÆÇ´ÜÇÑ´Ù.
´ÙÀ½ È£¿¡¼´Â DB2´Â »ç¿ëÀÚÀÇ SQL¹®À» ¾î¶»°Ô ¼öÇàÇÏ´ÂÁö¿¡ °üÇÑ ¾×¼¼½º Ç÷£À» º¸´Â ¹ý°ú Æ©´×¿¡ ´ëÇÑ ¸î¸î »ç·Ê¸¦ ¼³¸íÇϰڴÙ.