´ë¸Þ´º ¹Ù·Î°¡±â º»¹® ¹Ù·Î°¡±â

µ¥ÀÌÅÍ ±â¼ú ÀÚ·á

µ¥ÀÌÅÍ ±â¼ú ÀÚ·á »ó¼¼º¸±â
Á¦¸ñ ±Ç¼ø¿ëÀÇ DB À̾߱â - B*TREE À妽ºÀÇ ÀÌÇØ
µî·ÏÀÏ Á¶È¸¼ö 4588
÷ºÎÆÄÀÏ  

±Ç¼ø¿ëÀÇ DB À̾߱â

B*TREE À妽ºÀÇ ÀÌÇØ



¿À¶óŬ µ¥ÀÌÅͺ£À̽º(DB)´Â ³× °¡Áö À妽º¸¦ Á¦°øÇϳª °¡Àå ±¤¹üÀ§ÇÏ°Ô ¾²ÀÌ´Â À妽º´Â Çϳª´Ù. ¹Ù·Î B*TREE°¡ ±×°ÍÀÌ´Ù. ÀÌ ±Û¿¡¼­´Â ´ëºÎºÐÀÇ ¾÷¹«¿¡ ÃÖÀûÀÇ ¼º´ÉÀ» Á¦°øÇÏ´Â B*TREE À妽º¸¦ Á» ´õ ±íÀÌ µé¿©´Ùº»´Ù.



Å×À̺íÀÇ µ¥ÀÌÅͰ¡ ¼öÁ¤µÇ¸é ÇØ´ç Å×À̺íÀÇ B*TREE À妽º¿¡¼­µµ Ãß°¡(Insert), °»½Å(Update), »èÁ¦(Delete) µîÀÌ ¼öÇàµÈ´Ù. ÀÌ·¯ÇÑ ÀÛ¾÷Àº ½Ã½ºÅÛ ¼º´É ÀúÇÏÀÇ ¿øÀÎÀÌ µÉ ¼ö ÀÖ´Ù.



¡Ü Insert Operation
Å×ÀÌºí¿¡ µ¥ÀÌÅͰ¡ Ãß°¡µÇ¸é ÇØ´ç Å×ÀÌºí¿¡ Á¸ÀçÇÏ´Â À妽º¿¡µµ Ãß°¡µÈ µ¥ÀÌÅÍÀÇ À妽º ¿£Æ®¸®°¡ Ãß°¡µÈ´Ù. Å×ÀÌºí¿¡ Ãß°¡µÇ´Â µ¥ÀÌÅÍÀÇ À妽º Ű(Key) °ªÀÇ ÀúÀå À§Ä¡¸¦ ã±â À§ÇØ À妽º ¸®ÇÁ ºí·ÏÀ» È®ÀÎÇØ ã´Â´Ù. ±×¸®°í´Â À妽º ºí·ÏÀÇ ¿©À¯ °ø°£¿¡ ÇØ´ç À妽º ¿£Æ®¸®¸¦ Ãß°¡ÇÑ´Ù. ÇØ´ç À妽º ºí·Ï¿¡ ¿©À¯ °ø°£ÀÌ ¾øÀ» °æ¿ì ÇØ´ç ºí·ÏÀº 2°³ÀÇ À妽º ¸®ÇÁ ºí·ÏÀ¸·Î ºÐ±âµÅ À妽º ۵éÀº ´Ù½Ã Á¤·ÄµÇ°í ºÐ±âµÈ 2°³ÀÇ À妽º ¸®ÇÁ ºí·ÏÀ» ÅëÇØ Ãß°¡µÈ´Ù. ÀÌ ¶§ ¸®ÇÁ ºí·ÏÀ» ¿¬°áÇϰí ÀÖ´Â ºê·£Ä¡ ºí·Ï°ú ·çÆ® ºí·ÏÀÇ Á¤º¸°¡ °»½ÅµÉ ¼ö ÀÖ´Ù.

¡Ü Delete Operation
¾Õ¼­ ¼³¸íÇÑ Insert Operation°ú Á¤¹Ý´ëÀÇ ÀÛ¾÷À» ¼öÇàÇÑ´Ù. µ¥ÀÌÅͰ¡ »èÁ¦µÇ¸é ÇØ´ç À妽º ¿£Æ®¸®ÀÇ ¿¬°áÀÌ ²÷¾îÁø´Ù. ±×·¸°Ô ÇÔÀ¸·Î½á ·çÆ® ºí·ÏÀ¸·ÎºÎÅÍ ÇØ´ç À妽º ¿£Æ®¸®¸¦ ÀνÄÇÏÁö ¸øÇÏ°Ô ÇÑ´Ù. »èÁ¦µÈ À妽º ¿£Æ®¸®ÀÇ °ø°£Àº Ãß°¡¸¦ À§ÇØ °ø°£ ÇØÁ¦¸¦ ¼öÇàÇÏ°Ô µÇ¸ç, ¸®ÇÁ ºí·Ï¿¡ ÇϳªÀÇ À妽º ¿£Æ®¸®¶óµµ ³²°Ô µÇ¸é À妽º ¸®ÇÁ ºí·ÏÀº À¯ÁöµÇ°Ô µÈ´Ù. ¸¹Àº À妽º ¿£Æ®¸®°¡ »èÁ¦µÇ¸é »èÁ¦µÈ °ø°£Àº ¹Ý³³µÈ´Ù. ±×·¯³ª ÇØ´ç ¸®ÇÁ ºí·ÏÀÇ Àüü µ¥ÀÌÅͰ¡ »èÁ¦µÇÁö ¾Ê´Â ÇÑ ÇØ´ç ¸®ÇÁ ºí·ÏÀº ¹Ý³³µÇÁö ¾Ê´Â´Ù. ±×·¯¹Ç·Î ÇØ´ç ¸®ÇÁ ºí·Ï¿¡ »õ·Î¿î À妽º ¿£Æ®¸®°¡ Ãß°¡·Î ÀúÀåµÇÁö ¾Ê´Â´Ù¸é °ø°£ÀÌ ³¶ºñµÇ°Ô µÈ´Ù.

¡Ü Update Operation
»èÁ¦¿Í Ãß°¡ ÀÛ¾÷ÀÌ µ¿½Ã¿¡ ¼öÇàµÇ´Â ÀÛ¾÷ÀÌ´Ù. Å×ÀÌºí¿¡ µ¥ÀÌÅͰ¡ ¼øÂ÷ÀûÀ¸·Î Áõ°¡ÇØ Ãß°¡µÇ´Â °æ¿ì À妽ºÀÇ ¿ìÃøÀ¸·Î À妽º ¿£Æ®¸®°¡ ÁýÁߵŠB*TREEÀÇ °¡Àå Áß¿äÇÑ Æ¯Â¡ÀÎ ±ÕÇü(Balance)ÀÌ ¹«³ÊÁö°Ô µÈ´Ù. ¶ÇÇÑ ÁËÃø ¸®ÇÁ ºí·ÏÀ¸·Î À妽º ¿£Æ®¸®°¡ Ãß°¡µÇÁö ¾Ê±â ¶§¹®¿¡ ÁÂÃø ¸®ÇÁ ºí·ÏÀº ºí·Ï »ç¿ë·üÀÌ ³·¾ÆÁö°Ô µÈ´Ù. »èÁ¦°¡ ¸¹°Å³ª ¶Ç´Â À妽º ۰¡ ¼øÂ÷ÀûÀ¸·Î Áõ°¡Çϸç Ãß°¡µÇ´Â Å×À̺íÀº ÁÖ±âÀûÀÎ À妽º À籸¼º(Rebuild)À» ÅëÇØ À妽º ±ÕÇü(Balance)À» À¯Áö½ÃÄÑÁà¾ß ÇÑ´Ù.

±×·¸´Ù¸é ÀÌ¿Í °°Àº À妽º´Â ¾î¶»°Ô »ý¼ºÇØ¾ß Çϴ°¡? À妽º »ý¼º¿¡ ´ëÇØ È®ÀÎÇØ º¸ÀÚ.



<¸®½ºÆ® 1> B*TREE À妽º »ý¼º SQL> CREATE (UNIQUE) INDEX DEPT_IDX ON DEPT(DNAME)



<¸®½ºÆ® 1>ÀÇ SQLÀ» ¼öÇàÇϸé B*TREE À妽º°¡ »ý¼ºµÈ´Ù. B*TREE À妽º¸¦ »ý¼ºÇϱâ À§Çؼ­´Â À妽º Ű Ä÷³À» Á¤·ÄÇØ¾ß Çϴµ¥, ¸¸¾à ¸¹Àº ¾çÀ» Á¤·ÄÇÒ °æ¿ì Àӽà Å×ÀÌºí½ºÆäÀ̽º¿¡¼­ Á¤·ÄÀ» ¼öÇàÇÏ°Ô µÇ¹Ç·Î Àӽà Å×ÀÌºí½ºÆäÀ̽º¿¡ ´ëÇÑ I/O¸¦ È®ÀÎÇØ¾ß ÇÑ´Ù. À妽º »ý¼º Áß ´ë¿ë·®ÀÇ Å×ÀÌºí¿¡ ´ëÇØ º´·Ä ÇÁ·Î¼¼½Ì(Parallel Processing)À» Àû¿ëÇØ À妽º¸¦ »ý¼ºÇÒ °æ¿ì ¼Óµµ Çâ»óÀ» ²ÒÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ À妽º »ý¼º ½Ã ¹ß»ýÇÏ´Â ·Î±×(Log)´Â Àüü ½Ã½ºÅÛ ºÎÇϸ¦ ¹ß»ý½ÃŰ¹Ç·Î Nologging ¿É¼ÇÀ» ¼³Á¤Çϸé À妽º »ý¼º ¼Óµµ¸¦ Á» ´õ ³ôÀÏ ¼ö ÀÖ´Ù.



<¸®½ºÆ® 2> À妽º »ý¼º ¿¹ SQL> CREATE (Unique) INDEX DEPT_IDX ON DEPT(DNAME) NOLOGGING PARALLEL 8



<¸®½ºÆ® 2>ó·³ À妽º¸¦ »ý¼ºÇÒ ¶§¿¡´Â ÁÖÀÇÇØ¾ß ÇÑ´Ù. PARALLEL 8 ¿É¼ÇÀ» ¼³Á¤Çϰí À妽º¸¦ »ý¼ºÇϸé ÇØ´ç À妽ºÀÇ ¼Ó¼º Áß DEGREE °ªÀÌ 8ÀÌ µÇ¹Ç·Î ÇØ´ç À妽º¸¦ ÀÌ¿ëÇÏ´Â SQLÀº ¿øÇÏÁö ¾Ê¾Æµµ PARALLELÀÌ ¼öÇàµÉ ¼ö ÀÖ´Ù. ±×·¯¹Ç·Î PARALLEL ¿É¼ÇÀ» ¼³Á¤ÇØ »ý¼ºÇÑ À妽º´Â DEGREE °ªÀ» NOPARALLEL·Î º¯°æÇØ¾ß ÇÑ´Ù.

Áö±ÝºÎÅÍ´Â B*TREE À妽ºÀÇ Àå´ÜÁ¡À» »ìÆìº¸ÀÚ. B*TREE À妽ºÀÇ Àå´ÜÀ» ¸íÈ®È÷ ÀÌÇØÇØ¾ß¸¸ À妽º¸¦ º¸´Ù È¿°úÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

¡Ü B*TREE À妽ºÀÇ ÀåÁ¡
B*TREE À妽º´Â °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â À妽º·Î, ´ÙÀ½°ú °°Àº ÀåÁ¡À» °¡Áö°í ÀÖ´Ù.

¡¤ À妽º¸¦ ÀÌ¿ëÇØ µ¥ÀÌÅÍ¿¡ ¿¢¼¼½ºÇÒ ¶§ ¸ðµç À妽º ¿£Æ®¸®¿¡ ´ëÇØ ±ÕÇü(Balance)À» ¸ÂÃã
¡¤ À妽º¸¦ ÀÌ¿ëÇÑ ¹üÀ§(Range) ½ºÄµ ½Ã Double Linked List¸¦ »ç¿ëÇϱ⠶§¹®¿¡ ´Ù¸¥ À妽ºº¸´Ù ´õ À¯¸®Çϸç ACESENDING°ú DESCENDINGµµ °¡´ÉÇÔ
¡¤ OLTP·Î ÀûÀº µ¥ÀÌÅÍ¿¡ ¿¢¼¼½ºÇÏ´Â µ¥ À¯¸®ÇÔ



¡Ü B*TREE À妽ºÀÇ ´ÜÁ¡
B*TREE À妽ºÀÇ ´ÜÁ¡Àº ´ÙÀ½°ú °°´Ù. ÀÌµé ´ÜÁ¡µéÀº B*TREE À妽ºÀÇ ¾ÆÅ°ÅØÃ³¿¡ ±âÀÎÇϰí ÀÖ´Ù.

¡¤ ºÐÆ÷µµ(Cardinality)°¡ ³·Àº Ä÷³ÀÇ °æ¿ì B*TREE À妽º°¡ ºÒ¸®ÇÔ
¡¤ OR ¿¬»êÀÚ¿¡ ´ëÇØ Å×À̺í Àüü¸¦ ½ºÄµ(Full Scan)ÇÏ´Â °ÍÀº À§ÇèÇÔ
¡¤ À妽º ¿¬»ê ºÒ°¡
¡¤ À妽º È®Àå ½Ã ºÎÇÏ ¹ß»ý



Ãâó : ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î 8¿ùÈ£

Á¦°ø : µ¥ÀÌÅÍ Àü¹®°¡ Áö½ÄÆ÷ÅÐ DBguide.net