¿À¶óŬ Á¤º¸°øÀ¯ Ä¿¹Â´ÏƼ oracleclub.com
 
ÅëÇÕ°Ë»ö : Searched by NAVER
DB°Ë»ö :
¸ðµÎÆîÄ¡±â | ¸ðµÎ´Ý±â

¿À¶óŬ ÄûÁî ¹× Æ©´× ¹®Á¦ oracleclub.com
I. 'View Merging' À̶õ?
°­Á¤½Ä : 2008-07-18 13:24  
http://www.oracleclub.com/article/20404

¾È³çÇϼ¼¿ä. °­Á¤½ÄÀÔ´Ï´Ù.
Áö³­ÁÖ¿¡ Á¦°¡ ±ÛÀ» ¿Ã¸° ’View¸¦ ¸¸µé¶§´Â »óµµ´ö(?)ÀÌ ÇÊ¿äÇÏ´Ù?’¿¡ ´ëÇÑ ÁÖÁ¦·Î ±ÛÀ» ½áº¸°Ú½À´Ï´Ù.

ÀϹÝÀûÀ¸·Î ºä¸¦ »ç¿ëÇÏ´Â ¸ñÀûÀº º¸¾È Ãø¸é, ÆíÀÇ Ãø¸é, °ü¸® Ãø¸é¿¡¼­ È¿À²ÀûÀ̱⠶§¹®ÀÔ´Ï´Ù.

ù¹ø쨰ÀÎ º¸¾È Ãø¸éÀº SQL¿¡¼­ ¾î¶² ÁýÇÕÀ» ¸¸µç View¸¦ »ç¿ëÇϱâ 떄¹®¿¡ ±× View ¾ÈÀÇ ³»¿ëÀÌ °ø°³µÇÁö
¾ÊÀ¸¹Ç·Î º¸¾ÈÀ» À¯ÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.

µÎ¹øÂ°ÀÎ ÆíÀÇ Ãø¸éÀº ¿©·¯ ¾÷¹« ¿µ¿ª¿¡¼­ ´Ù¾çÇÑ µ¥ÀÌÅ͸¦ »Ì¾Æ Á¤º¸¸¦ º¸¿©ÁÙ °æ¿ì °¢°¢ÀÇ ¾÷¹«¿µ¿ª¿¡
´ëÇØ ÀÚ¼¼È÷ ¾Ë¾Æ¾ß Çϳª, ½ÇÁúÀûÀ¸·Î ´Ù¾çÇÑ ¾÷¹«¸¦ ¸ðµÎ ¾Ë±â¶õ ½±Áö°¡ ¾Ê½À´Ï´Ù. ÇÏÁö¸¸ °¢°¢ÀÇ
¾÷¹«¿¡ ´ëÇØ View·Î Á¦°øÇÒ °æ¿ì, ÀÌ View¸¦ ÀÌ¿ëÇÏ¿© ´Ù¾çÇÑ ¾÷¹«¿µ¿ªÀ» ÀÌ¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡
ÆíÀǼºÀÌ Áõ°¡ÇÏ°Ô µË´Ï´Ù.

¸¶Áö¸·À¸·Î ¼¼¹øÂ°ÀÎ °ü¸® Ãø¸éÀº µÎ¹øÂ° »ìÆìº» °Í ó·³ ´Ù¾çÇÑ ¾÷¹«µéÀ» View·Î °ü¸®ÇÒ °æ¿ì
À¯Áöº¸¼ö ¹× ÀçȰ¿ëÀ» ÇÒ ¼ö Àֱ⠶§¹®¿¡ °ü¸®Çϴµ¥ »ó´çÈ÷ À¯¿ëÇÕ´Ï´Ù.

ÀÌ·± À¯¿ëÇÑ ÀåÁ¡À» °¡Áö°í ÀÖ´Â ViewÀε¥µµ ºÒ±¸Çϰí À̸¦ Àß ¸ø »ç¿ëÇÒ °æ¿ì ¼º´ÉÃø¸é¿¡¼­
¾ÆÁÖ ¾ÈÁÁÀº °á°ú¸¦ µµÃâÇÏ°Ô µÇ¾î ½ÉÇÒ °æ¿ì ¼­¹öÀÇ CPU »ç¿ë·üÀ» 100%·Î ³ôÈú ¼öµµ ÀÖ½À´Ï´Ù.

½ÇÁ¦ Á¦°¡ Áö¿øÇϰí ÀÖ´Â »çÀÌÆ®¿¡¼­µµ Æ©´×ÀÌ ÇÊ¿äÇÑ ÇÁ·Î±×·¥ÀÇ 3~40% Á¤µµ´Â ÀÌ·± View¸¦ À߸ø
»ý¼º ¹× °ü¸®ÇÏ¿© ¿ÀÇ ÀÌÈÄ ¿î¿µ¿¡¼­ ¼º´ÉÀúÇÏÀÇ ¿øÀÎÀÌ µÇ°í ÀÖ½À´Ï´Ù.

±×·¯¹Ç·Î View¸¦ »ý¼º ¹× °ü¸®½Ã ÀÌ·± ÁÖÀÇ »çÇ×µéÀ» ÃæºÐÈ÷ ¼÷ÁöÇÏ¿© ÇâÈÄ À¯Áöº¸¼ö¿¡ Å« ºñ¿ëÀ»
ÁöºÒÇÏÁö ¾Êµµ·Ï ³ë·ÂÇÏ´Â °ÍÀÌ Áß¿äÇÒ °ÍÀ¸·Î »ý°¢ÇÕ´Ï´Ù.

Áö±ÀºÎÅÍ Á¦°¡ »çÀÌÆ®¿¡¼­ Á÷Á¢ °æÇèÇÑ ³»¿ëµéÀ» ¹ÙÅÁÀ¸·Î View¸¦ ¸¸µé 떄 ¿Ö »óµµ´öÀÌ ÇÊ¿äÇÑÁö »ìÆìº¸µµ·Ï
ÇϰڽÀ´Ï´Ù.

¸ñÂ÷´Â ¾Æ·¡¿Í °°ÀÌ ÁøÇàÇϰڽÀ´Ï´Ù.

I. ’View Merging’ À̶õ?
II. Àü¿ë ºä vs °ø¿ë ºä
III. view ¾È¿¡ °¡°øµÈ Ä÷³
IV. Alias¸¦ Àü·«ÀûÀ¸·Î »ç¿ëÇØ¾ß...
V. ’View Merging’À» ¹æÇØÇÏ´Â ³ª¸ÓÁö ¿ä¼Òµé


I. ’View Merging’ À̶õ?

1. Cost Based Query Transformation(CBQT)
    1) CBQT¶õ ¿ÉƼ¸¶ÀÌÀú°¡ ÁÖ¾îÁø SQLÀ» °¡Áö°í ½ÇÇà°èȹÀ» ¸¸µé 떄 ±âÁ¸ SQLÀ» º¸´Ù ÃÖÀûÈ­Çϱâ À§ÇØ
      SQLÀ» Àç°¡°øÇÏ´Â °ÍÀ» ¸»ÇÕ´Ï´Ù. ÀÌ·± ´ëÇ¥ÀûÀÎ °ÍµéÀÌ 10g¿¡ ¿Í¼­ °­È­°¡ µÇ¾ú´Âµ¥,
      ’View Merging, Subquery Unnesting, Push Predicate’ µîÀÌ ÀÖ½À´Ï´Ù.
       ÀÌÁß ¿ì¸®°¡ »ìÆìº¼ ³»¿ëÀÌ ¹Ù·Î ’View Merging’ Àä. ¾Æ·¡¿¡¼­ ±× ³»¿ëÀ» »ìÆìº¸°Ú½À´Ï´Ù.

    2) View Merging Sample
        ¨ç EMP Å×ÀÌºí¿¡¼­ DEPTº° SAL ÇÕ°è ±¸ÇÏ´Â View
        CREATE OR REPLACE VIEW EMP_DEPT_SUM_V AS
        SELECT DEPTNO, 
               SUM(SAL) SUM_SAL
        FROM   EMP
        GROUP BY DEPTNO;

       
        ¨è View¸¦ ÀÌ¿ëÇÑ SQL
        SELECT D.DNAME,
               D.LOC,
               EDSV.SUM_SAL
        FROM   DEPT           D,
               EMP_DEPT_SUM_V EDSV
        WHERE  D.DEPTNO = EDSV.DEPTNO      
        AND    D.DNAME  = ’SALES’

        ;
       
        ¨é ¿ÉƼ¸¶ÀÌÀú°¡ CBQTÀÇ View MergingÀ» ÅëÇØ À籸¼ºÇÑ SQL
        SELECT D.DNAME,
               D.LOC,
               EDSV.SUM_SAL
        FROM   (SELECT DEPTNO, 
                       SUM(SAL) SUM_SAL
                FROM   EMP
                GROUP BY DEPTNO) D,
               EMP_DEPT_SUM_V  EDSV
        WHERE  D.DEPTNO = EDSV.DEPTNO      
        AND    D.DNAME  = ’SALES’

        ;
       
        ¨ê View Merging ½ÇÇà°èȹ
 ---------------------------------------------------------------------------------------
 | Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
 ---------------------------------------------------------------------------------------
 |   0 | SELECT STATEMENT             |        |     2 |    54 |     7  (15)| 00:00:01 |
 |   1 |  HASH GROUP BY               |        |     2 |    54 |     7  (15)| 00:00:01 |
 |   2 |   TABLE ACCESS BY INDEX ROWID| EMP    |     5 |    35 |     1   (0)| 00:00:01 |
 |   3 |    NESTED LOOPS              |        |     5 |   135 |     6   (0)| 00:00:01 |
 |*  4 |     TABLE ACCESS FULL        | DEPT   |     1 |    20 |     5   (0)| 00:00:01 |
 |*  5 |     INDEX RANGE SCAN         | EMP_N1 |     5 |       |     0   (0)| 00:00:01 |
 ---------------------------------------------------------------------------------------

                 
 Predicate Information (identified by operation id):                                   
 ---------------------------------------------------                                   
                 
    4 - filter("D"."DNAME"=’SALES’)                                                    
    5 - access("D"."DEPTNO"="DEPTNO")
     
   
        º¸½Ã´Â °Íó·³ EMP_DEPT_SUM_V ºä ¾È¿¡ GROUP BY°¡ Àִµ¥ ÀÌ GROUP BY¸¦ µû·Î ½ÇÇàÇѰÍÀÌ ¾Æ´Ï¶ó
        DEPT Å×ÀÌºí¿¡¼­ DNAME = ’SALES’¿¡ ´ëÇÑ ÇÑ ·Î¿ì¸¦ °¡Áö°í EMP_DEPT_SUM_V ºä ¾ÈÀ¸·Î µé¾î°¡
        ÇØ´çµÇ´Â DEPTNO¿¡ ´ëÇØ¼­ SALÀ» SUM()ÇÑ °á°úÀÔ´Ï´Ù.
        ÀÌó·³ ¿ÉƼ¸¶ÀÌÀú´Â »ç¿ëÀÚ°¡ View¸¦ »ç¿ëÇÏ´Â SQLÀ» ´øÁú ¶§ À̸¦ Àç°¡°øÇÏ¿© ÃÖÀûÈ­µÈ SQLÀ»
        ´Ù½Ã ¸¸µé°í ÀÖ½À´Ï´Ù.

        ±×·³ View MergingÀÌ ¾ÈµÈ´Ù¸é ¾î¶»°Ô µÉ±î¿ä? ¾Æ·¡¿¡¼­ »ìÆìº¸°Ú½À´Ï´Ù.

        ¨ë No Merging ½ÇÇà°èȹ
        SELECT /*+ NO_MERGE(EDSV) */ -- EDSV ºä¸¦ MergingÇÏÁö ¾Êµµ·Ï ÇÏ´Â ÈùÆ®
               D.DNAME,
               D.LOC,
               EDSV.SUM_SAL
        FROM   DEPT           D,
               EMP_DEPT_SUM_V EDSV
        WHERE  D.DEPTNO = EDSV.DEPTNO      
        AND    D.DNAME  = ’SALES’;

 

 ---------------------------------------------------------------------------------------
 | Id  | Operation            | Name           | Rows  | Bytes | Cost (%CPU)| Time     |
 ---------------------------------------------------------------------------------------
 |   0 | SELECT STATEMENT     |                |     1 |    46 |    12  (17)| 00:00:01 |
 |*  1 |  HASH JOIN           |                |     1 |    46 |    12  (17)| 00:00:01 |
 |*  2 |   TABLE ACCESS FULL  | DEPT           |     1 |    20 |     5   (0)| 00:00:01 |
 |   3 |   VIEW               | EMP_DEPT_SUM_V |     3 |    78 |     6  (17)| 00:00:01 |
 |   4 |    HASH GROUP BY     |                |     3 |    21 |     6  (17)| 00:00:01 |
 |   5 |     TABLE ACCESS FULL| EMP            |    14 |    98 |     5   (0)| 00:00:01 |
 ---------------------------------------------------------------------------------------

                 
 Predicate Information (identified by operation id):                                   
 ---------------------------------------------------                                   
                 
    1 - access("D"."DEPTNO"="EDSV"."DEPTNO")                                           
    2 - filter("D"."DNAME"=’SALES’)
                                                    

        º¸½Ã´Â °Íó·³ DEPT¿Í EMP_DEPT_SUM_V ºä°¡ Á¶À뵃 떄 ’NESTED LOOP’·Î Á¶ÀÎµÈ °ÍÀÌ ¾Æ´Ï¶ó
        ’HASH JOIN’À¸·Î µÇ¾ú°í ÀÌ ºÎºÐ¿¡¼­ access("D"."DEPTNO"="EDSV"."DEPTNO") ó·³ Á¶ÀÎÀÌ
        µÈ°ÍÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù.
        ±×¸®°í ºä ¾ÈÀ¸·Î DEPT °ªÀÌ Ä§Åõ¸¦ ¸øÇ߱⠶§¹®¿¡ GROUP BY°¡ VIEW ¾È¿¡¼­ ¸ÕÀú Ç®¸®°í ÀÖ½À´Ï´Ù.
        ´ëºÎºÐ View MergingÀÌ ¾ÈµÉ¶§´Â ÀÌó·³ ½ÇÇà°èȹ¿¡ VIEW°¡ º¸Àδٰųª HASH JOINÀ¸·Î Ç®¸®°í
        ÀÖ½À´Ï´Ù.

2. View MergingÀÌ µÉ °æ¿ì¿Í ¾ÈµÉ °æ¿ìÀÇ ÀÏ·® Â÷ÀÌ
    1) View Merging vs No Merging
       

        ±×¸²¿¡¼­ º¸½Ã´Ù½ÃÇÇ View MergingÀÌ µÉ °æ¿ì DEPT Å×ÀÌºí¿¡¼­ DNAME = ’SALES’ ÇѰǿ¡ ´ëÇØ
        EMP Å×À̺í°ú ¸ÅĪµÇ´Â 1¸¸ °ÇÀÇ µ¥ÀÌÅ͸¸ SUM() ÀÛ¾÷À» ÇÏ¸é µÇ³ª No MergingÀÌ µÉ °æ¿ì
        DEPT Å×ÀÌºí¿¡¼­ ÇѰÇÀ» °¡Á®¿Â µÚ EMP Å×ÀÌºí¿¡¼­ 11¸¸°ÇÀ» µ¶¸³ÀûÀ¸·Î ¼öÇàÇÏ¿© ¾òÀº
        EMP Å×ÀÌºí¿¡¼­ 11¸¸°ÇÀ» ¼öÇàÇÏ¿© ¾òÀº °á°ú¸¦ DEPT Å×À̺íÀÇ ÇѰǰú ¸ÅĪµÇ´Â µ¥ÀÌÅ͸¦
        ÇÊÅÍ·Î »©³»±â ¶§¹®¿¡ ÀÏ·® Â÷ÀÌ´Â ’1¸¸°Ç vs 11¸¸°Ç’ À̶ó´Â ¾öû³­ Â÷À̸¦ º¸ÀÌ°Ô µË´Ï´Ù.

    2) View´Â °¡±ÞÀû MergingÀÌ µÇ¾ß ÇÔ
        - ÀÌó·³ VIew´Â ±× Â÷üÀûÀ¸·Î µ¥ÀÌÅ͸¦ ÁÙ¿©ÁÖ´Â Á¶°ÇÀÌ ´ëºÎºÐ µé¾î°¡ ÀÖÁö ¾Ê±â ¶§¹®¿¡
         ÀÌ View¸¦ »ç¿ëÇÏ´Â SQL¿¡¼­ ±× View¸¦ ÁÙ¿©ÁÖ´Â Á¶°ÇÀ» Á¶ÀÎÀ¸·Î ¿¬°á½ÃŰ¹Ç·Î °¡±ÞÀû
         Á¶ÀÎÀÌ µÉ 떄 View MergingÀÌ µÇ¾î¾ß ¼º´ÉÀ» º¸Àå¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù.

    3) Àü·«ÀûÀ¸·Î View MergingÀ» ¾È½Ã۱⵵ ÇÔ
        - ÇÏÁö¸¸ Ç×»ó View MergingÀÌ ÁÁÀº°Í¸¸Àº ¾Æ´Õ´Ï´Ù. ¶§¿¡ µû¶ó MeringÀ» ¾È½ÃŰ°í ¿¬°á½ÃÄѾß
         Á¶ÀÎ ·¹Äڵ尡 Áõ°¡ÇÏÁö ¾Ê±â ¶§¹®¿¡ ÀÏ·®À» ÁÙÀÌ´Â ÄÉÀ̽ºµµ ÀÖÁö¸¸, ÀÌ´Â ±ØÈ÷ ¼Ò¼ö¿¡
         ºÒ°úÇϹǷΠÀü·«ÀûÀ¸·Î »ç¿ëÇÒ ¶§ À¯¿ëÇÑ ¹æ¹ýÀÔ´Ï´Ù.

    4) CBQTÀÇ RBO, CBO
        - ¿À¶óŬ DBMS´Â ¹öÀü¾÷ÀÌ µÉ¼ö·Ï ¿ÉƼ¸¶ÀÌÀú ¼öÇàÀ» RBOº¸´Ù CBO·Î º¯È¯À» ½ÃÄ×°í 10g¿¡ ¿Í¼­´Â
         100% CBO ±â¹ÝÀ¸·Î ¿ÉƼ¸¶ÀÌÀú°¡ ¼öÇàÀÌ µË´Ï´Ù. ±×¸®°í ÀÌ CBQT ¶ÇÇÑ 9i±îÁö´Â Rule Base·Î
         µ¿ÀÛÀ» ÇÏ¿´´Âµ¥ 10g¿¡ ¿Í¼­ ÀÌ ºÎºÐ±îÁöµµ Cost Base·Î °­È­°¡ µÇ¾ú½À´Ï´Ù.
        - ±×·¯´Ùº¸´Ï 9i±îÁö View¸¦ »ç¿ëÇϰí ÀÖ´Â SQLÀÌ Àß ¼öÇàµÇ¾ú´Ù°¡ 10g·Î ¾÷±×·¹À̵åÇϸ鼭
         Cost Base·Î º¯°æµÇ´Â °úÁ¤¿¡¼­ View MergingÀÌ Àß ¾ÈµÇ¾î ¼öÇà¼Óµµ°¡ ¿À·¡ °É¸®´Â ÇÁ·Î±×·¥ÀÌ
         ´Ù¼ö ¹ß»ýµÇ°Ô µÇ¾ú½À´Ï´Ù.
        - ±×·¯¹Ç·Î 10g¿¡¼­´Â ´õ¿í ÀÌ CBQT(View Merging Æ÷ÇÔ)¿¡ ´ëÇØ ½Å°æÀ» ¸¹ÀÌ ½á¾ß ÇÒ °ÍÀ¸·Î
         »ý°¢µË´Ï´Ù.

À̹ø¿¡´Â Chapter I ±îÁö¸¸ ±â¼úÀ» Çϰí Â÷ÁÖ¿¡ ´ÙÀ½ ³»¿ëÀ» Á¤¸®Çϵµ·Ï ÇϰڽÀ´Ï´Ù.
ÀÐÀ¸½Ã°í ÀÌ»óÇÑÁ¡À̳ª ±Ã±ÝÇϽг»¿ëÀÌ ÀÖÀ¸½Ã¸é ¸®Çà ´Þ¾ÆÁֽñ⠹ٶø´Ï´Ù.

°¨»çÇÕ´Ï´Ù.

ÅÂ±× : View Merging, CBQT
Á¶È¸¼ö 303,  Ãßõ¼ö 3
±Û¾²±â ±Û´äº¯ ±Û¼öÁ¤ ±Û»èÁ¦ ¸ñ·Ïº¸±â
À̸§ ¾²±â
ºñ¹Ð¹øÈ£
View¸¦ ¸¸µé¶§´Â »óµµ´ö(?)ÀÌ ÇÊ¿äÇÏ´Ù? °­Á¤½Ä 2008-07-11 18:06 653
IV. VIew¾È¿¡¼­ Alias Àü·«ÀûÀ¸·Î »ç¿ëÇÏ´Â ¹æ¹ý °­Á¤½Ä 2008-08-13 11:00 76
III. View ¾È¿¡ °¡°øµÈ Ä÷³ °­Á¤½Ä 2008-08-08 19:54 119
II. Àü¿ë View vs °ø¿ë View °­Á¤½Ä 2008-07-25 17:27 195
I. 'View Merging' À̶õ? °­Á¤½Ä 2008-07-18 13:24 303
µµ¿ò Áֽô °÷