ưŪ¥µ¥ó¥×¥ê¥ó¥° ¡ÊDYNAMIC SAMPLING¡Ë
ưŪ¥µ¥ó¥×¥ê¥ó¥°¤È¤ÏÅý·×¾ðÊ󤬸Ų᤮¤ëɽ¡¢Ìµ¸ú²½¤µ¤ì¤¿É½¡¢¤Þ¤ÀÅý·×¾ðÊó¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤¤É½¤ËÂФ·¤Æ¥¢¥¯¥»¥¹¤¹¤ë¤È
¥³¥¹¥È¥Ù¡¼¥¹¡¦¥ª¥×¥Æ¥£¥Þ¥¤¥¶ (CBO) ¤ËɬÍפÊÅý·×¾ðÊ󤬯°Åª¤Ë¥µ¥ó¥×¥ê¥ó¥°¤µ¤ì¤Æ¶¦Í¥á¥â¥ê¾å¤Ë²¾¤ÎÅý·×¾ðÊó¤È¤·¤Æ¼«Æ°Åª¤ËÍøÍѤ¹¤ëÆâÉô¤Î¥Á¥å¡¼¥Ë¥ó¥°µ¡Ç½¤Ç¤¢¤ë¡£(Oracle 9i R2) (¢Î DBMS_STAT ¤äÄê´üŪ¤ÊÅý·×¾ðÊó¤Î¼ý½¸)¡£
¥Þ¥Ë¥å¥¢¥ë¤À¤±¤Ç³Î¾Ú¤òÆÀ¤ë¤³¤È¤¬¤Ç¤¤Ê¤Ã¤¿¤Î¤ÇͽÁÛŪ´Ñ¬¤ò¾¯¡¹¹Ô¤Ã¤¿¡£
DBMS_STAT ¥Ñ¥Ã¥±¡¼¥¸¤ò»ÈÍѤ·¤Æ¼ý½¸¤·¤¿¥¹¥¿¥Æ¥£¥Ã¥¯(ÀÅŪ¤Ê)Åý·×¾ðÊó¤¬Â¸ºß¤·¤Ê¤¤¾ì¹ç¡£Æ°Åª¥µ¥ó¥×¥ê¥ó¥°¤¬È¯À¸¤·¤Æ¤â²¾¤ÎÅý·×¾ðÊó¤¬Åý·×¾ðÊó¤È¤·¤ÆÊݸ¤µ¤ì¤Ê¤¤¤³¤È¤Ï³Îǧ¤¹¤ë¤³¤È¤¬¤Ç¤¤¿¡£
¤Þ¤¿¡¢°ÊÁ°¤ÎÅý·×¾ðÊó¤¬Â¸ºß¤·¤Æ¤¤¤ë¾ì¹ç¡£¥µ¥ó¥×¥ê¥ó¥°¥ì¥Ù¥ë¤Ë¤è¤Ã¤ÆÊ䴰Ū¡©¤ÊưŪ¥µ¥ó¥×¥ê¥ó¥°¤¬È¯À¸¤·¤Æ¤âƱÍͤ˾å½ñ¤¤·¤Ê¤¤¤È»×¤ï¤ì¤ë¡£
½é´ü¥Ñ¥é¥á¡¼¥¿¤ä¥Ò¥ó¥È¤ò»ÈÍѤ»¤ºÆ©²áŪ¤ËưŪ¥µ¥ó¥×¥ê¥ó¥°¤ò¤¤¤Ä¤âŬÍѤ·¤¿¤¤¾ì¹ç DBMS_STAT.DELETE ¡Á
¤Ë¤è¤êÅý·×¾ðÊó¤òºï½ü¤· DBMS_STAT.LOCK ¡Á ¤ÇÅý·×¾ðÊó¤ò¥í¥Ã¥¯¤·¤Æ¤¢¤²¤ì¤Ð¤è¤¤¡£
Ëè²ó¥Æ¡¼¥Ö¥ë¤òÂçÎ̤˺ï½ü¤·¡¢¥Ç¡¼¥¿Ê¬ÉÛ¤âËè²óÉÔÄê¤ÇÊФ꤬¤Á¤Î¥Ç¡¼¥¿¤ò»ÈÍѤ¹¤ëñȯưºî¤ÎÃæµ¬ÌϤʽèÍý¤Î¾ì¹ç¤Ê¤é¤Ð¡¢Æ°Åª¥µ¥ó¥×¥ê¥ó¥°¤È¤¤¤¦¼êË¡¤Ï¥×¥é¥ó¥¹¥¿¥Ó¥ê¥Æ¥£¤è¤êÍ¥¤ì¤¿¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤òȯ´ø¤¹¤ë²ÄǽÀ¤â¤¢¤ë(̤¸¡¾Ú)¡£
¥ê¥â¡¼¥Èɽ¤È³°Éôɽ¤ÏưŪ¥µ¥ó¥×¥ê¥ó¥°¤Ï¹Ô¤ï¤ì¤Ê¤¤(³°Éôɽ¤ËÅý·×¾ðÊó¤ò¼ý½¸¤¹¤ë¤³¤È¤Ï²Äǽ)¡£
¥µ¥ó¥×¥ê¥ó¥°¡¦¥ì¥Ù¥ë
¥µ¥ó¥×¥ê¥ó¥°¥ì¥Ù¥ë¤Ï OPTIMIZER_DYNAMIC_SAMPLING ½é´ü²½¥Ñ¥é¥á¡¼¥¿¤ÎÃÍ ¤Þ¤¿¤Ï¡¢
SQL ¤Ëµ½Ò¤µ¤ì¤ë /*+ DYNAMIC_SAMPLING(table_spec sampling_level) */ ¤È¤¤¤Ã¤¿¥Ò¥ó¥È¶ç¤Ë¤è¤Ã¤Æ»ØÄꤹ¤ë¡£
¥µ¥ó¥×¥ê¥ó¥° ¥ì¥Ù¥ë 0
ưŪ¥µ¥ó¥×¥ê¥ó¥°µ¡Ç½¤ò»ÈÍѤ·¤Ê¤¤
- ½é´ü²½¥Ñ¥é¥á¡¼¥¿ OPTIMIZER_FEATURES_ENABLE = 9.2.0 °Ê²¼¤Î¾ì¹ç¤Ë¤ÏưŪ¥µ¥ó¥×¥ê¥ó¥°¤Ï¹Ô¤Ê¤ï¤ì¤Ê¤¤¡£
¥µ¥ó¥×¥ê¥ó¥° ¥ì¥Ù¥ë 1 ( Oracle9i ¥Ç¥Õ¥©¥ë¥È )
°Ê²¼¤Î¾ò·ï¤Ë³ºÅö¤¹¤ëʬÀϤµ¤ì¤Æ¤¤¤Ê¤¤¤¹¤Ù¤Æ¤Îɽ¤ò¥µ¥ó¥×¥ê¥ó¥°¤¹¤ë¡£
- ʬÀϤµ¤ì¤Æ¤¤¤Ê¤¤É½¤¬Ìä¹ç¤»¤Ë¾¯¤Ê¤¯¤È¤â1 ¤Ä¤¢¤ë
- ¤³¤ÎʬÀϤµ¤ì¤Æ¤¤¤Ê¤¤É½¤¬¡¢Ê̤Îɽ¤È·ë¹ç¡¢¤Þ¤¿¤ÏÉûÌä¹ç¤»¤«¥Þ¡¼¥¸ÉÔ²Äǽ¥Ó¥å¡¼¤Ë¤¢¤ë
- ¤³¤ÎʬÀϤµ¤ì¤Æ¤¤¤Ê¤¤É½¤Ëº÷°ú¤¬¤Ê¤¤
- ¤³¤ÎʬÀϤµ¤ì¤Æ¤¤¤Ê¤¤É½¤Ë¡¢Æ°Åª¥µ¥ó¥×¥ê¥ó¥°¤Ç¥µ¥ó¥×¥ê¥ó¥°¤¹¤ë(ͽÄê)¤Î¥Ö¥í¥Ã¥¯¤Î¿ô¤è¤ê¤â¿¤¤¥Ö¥í¥Ã¥¯¤¬¤¢¤ë
ưŪ¥µ¥ó¥×¥ê¥ó¥°¤Î¥Ö¥í¥Ã¥¯¤Î¥Ç¥Õ¥©¥ë¥È¿ô¤Ï 32
¥µ¥ó¥×¥ê¥ó¥°¤¹¤ë¥Ç¡¼¥¿¥Ö¥í¥Ã¥¯¿ô¤Ï¥»¥°¥á¥ó¥È ¤ÎºÇ½é¤Î 32 ¥Ö¥í¥Ã¥¯¤«¥é¥ó¥À¥à¤Ê 32 ¥Ö¥í¥Ã¥¯¤«¤ÏÉÔÌÀ¤Ç¤¢¤ë¤¬¡¢SAMPLE ¶ç ¤Ë¤è¤Ã¤Æ¼èÆÀ¤·¤Æ¤¤¤ë¤È¹Í¤¨¤ë¤Î¤¬¼«Á³¤Ç¤¢¤ë¤È»×¤¦¡£
¥µ¥ó¥×¥ê¥ó¥° ¥ì¥Ù¥ë 2 ( Oracle10g ¥Ç¥Õ¥©¥ë¥È )
¤¹¤Ù¤Æ¤ÎʬÀϤµ¤ì¤Æ¤¤¤Ê¤¤É½¤ò¥µ¥ó¥×¥ê¥ó¥°¤¹¤ë¡£
¥µ¥ó¥×¥ê¥ó¥° ¥ì¥Ù¥ë 3
¥ì¥Ù¥ë 2 ¤Ë²Ã¤¨¤Æ¡¢¾ò·ï¶ç¤Ë¥µ¥ó¥×¥ê¥ó¥°¤·¤¿Êý¤¬¤è¤µ¤²?(¤ª¤½¤é¤¯¥Ò¥¹¥È¥°¥é¥à¤¬Â¸ºß¤·¤Æ¤¤¤ë¤è¤¦¤Ê¹àÌܤȻפï¤ì¤ë)¤Ê¾ò·ï¤¬¤¢¤ë¾ì¹ç¤ËÄɲåµ¥ó¥×¥ê¥ó¥°¤¹¤ë¡£
¥µ¥ó¥×¥ê¥ó¥° ¥ì¥Ù¥ë 4
¥ì¥Ù¥ë 3 ¤Ë²Ã¤¨¤Æ¡¢2 ¤Ä°Ê¾å¤ÎÎó¤ò»²¾È¤¹¤ëñ°ìɽ¤â¥µ¥ó¥×¥ê¥ó¥°ÂоÝ
¥µ¥ó¥×¥ê¥ó¥° ¥ì¥Ù¥ë 5 °Ê¾å
¥µ¥ó¥×¥ê¥ó¥°¥ì¥Ù¥ë¤¬ 5 °Ê¾å¤Î¾ì¹ç¤Ë¤Ï¥µ¥ó¥×¥ê¥ó¥°¤¹¤ë¥Ö¥í¥Ã¥¯¿ô¤¬Áý²Ã¤¹¤ë¤Î¤ß¡£
Åý·×¾ðÊó¤¬Â¸ºß¤·¤Æ¤¤¤Æ¡¢¤«¤Ä¡¢¸¡º÷¤Î¾ò·ï¶ç¤¬Ìµ¤¤¾ì¹ç¤Ë¤Ï¡¢¥µ¥ó¥×¥ê¥ó¥°¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£
¥µ¥ó¥×¥ê¥ó¥°¥ì¥Ù¥ë¤È¥µ¥ó¥×¥ê¥ó¥°¤¹¤ë¥Ö¥í¥Ã¥¯¿ô
DYNAMIC_SAMPLING ¤Ï ¥Ò¥ó¥È¶ç¤Ë¤âµ½Ò¤¬²Äǽ¤Ç¤¢¤ë¤¬¡¢¥µ¥ó¥×¥ê¥ó¥°¤µ¤ì¤ë¥Ö¥í¥Ã¥¯¿ô¤¬°Û¤Ê¤ë¤Î¤ÇÃí°Õ¡£
SELECT /*+ DYNAMIC_SAMPLING(table_spec sampling_level) */
| ¥µ¥ó¥×¥ê¥ó¥° ¥ì¥Ù¥ë | CBO ȽÃǤˤè¤ë¥µ¥ó¥×¥ê¥ó¥°»þ | ¥Ò¥ó¥È¶ç¤Ë¤è¤ëÌÀ¼¨Åª¥µ¥ó¥×¥ê¥ó¥°»þ |
| 1 |  | 32 ¥Ö¥í¥Ã¥¯ | 32 ¥Ö¥í¥Ã¥¯ |
| 2 |  | 32 x 2 ¥Ö¥í¥Ã¥¯ | 32 x 2 ¥Ö¥í¥Ã¥¯ |
| 3 | 32 x 2 ¥Ö¥í¥Ã¥¯ | 32 x 4 ¥Ö¥í¥Ã¥¯ |
| 4 | 32 x 2 ¥Ö¥í¥Ã¥¯ | 32 x 8 ¥Ö¥í¥Ã¥¯ |
| 5 | 32 x 2 ¥Ö¥í¥Ã¥¯ | 32 x 16 ¥Ö¥í¥Ã¥¯ |
| 6 | 32 x 4 ¥Ö¥í¥Ã¥¯ | 32 x 32¥Ö¥í¥Ã¥¯ |
| 7 | 32 x 8 ¥Ö¥í¥Ã¥¯ | 32 x 64 ¥Ö¥í¥Ã¥¯ |
| 8 | 32 x 32 ¥Ö¥í¥Ã¥¯ | 32 x 128 ¥Ö¥í¥Ã¥¯ |
| 9 | 32 x 128 ¥Ö¥í¥Ã¥¯ | 32 x 256 ¥Ö¥í¥Ã¥¯ |
| 10 | Á´¥ì¥³¡¼¥É | Á´¥ì¥³¡¼¥É |
Åý·×¾ðÊó¤Î¥Ç¥Õ¥©¥ë¥ÈÃÍ
Oracle ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë¤è¤Ã¤Æ¥Ç¥Õ¥©¥ë¥È¤ÎÅý·×¾ðÊ󤬰ۤʤ롣
¢Í ưŪ¥µ¥ó¥×¥ê¥ó¥°¤¬Ìµ¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤ë¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥ÈÅý·×ÃÍ
ưŪ¥µ¥ó¥×¥ê¥ó¥° ´ØÏ¢»ö¹à