À妽º »ý¼º
¼­¹ö ÇÁ·Î¼¼½º(¶Ç´Â À妽º°¡ º´·Ä·Î »ý¼ºµÇ°í ÀÖÀ» °æ¿ì¿¡´Â ¿©·¯ ÇÁ·Î¼¼½ºµé)´Â B-Tree¸¦ ±¸ÃàÇϱâ Àü¿¡ À妽ºµÇ´Â °ªÀ» Á¤·ÄÇØ¾ß ÇÕ´Ï´Ù.

ORDER BY ¶Ç´Â GROUP BY Àý
¼­¹ö ÇÁ·Î¼¼½º´Â ORDER BY ¶Ç´Â GROUP BY ÀýÀÇ °ªÀ» Á¤·ÄÇØ¾ß ÇÕ´Ï´Ù.

DISTINCT °ª
DISTINCT Å°¿öµå¿¡ ´ëÇØ, Á¤·Ä ½Ã Áߺ¹µÈ °ªÀ» ¾ø¾Ö¾ß ÇÕ´Ï´Ù.   

UNION, INTERSECT, ¶Ç´Â MINUS ¿¬»ê
¼­¹ö´Â Áߺ¹µÈ °ªÀ» ¾ø¾Ö±â À§ÇØ ÀÛ¾÷ÇÏ°í ÀÖ´Â Å×À̺íÀ» Á¤·ÄÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

Á¤·Ä-º´ÇÕ Á¶ÀÎ
  SQL> select dept_id, id
    2> from s_emp, s_dept
    3> where s_emp.dept_id = s_dept.id;

»ç¿ëÇÒ ¼ö ÀÖ´Â À妽º°¡ ¾øÀ» °æ¿ì, ÀÌÄûÁ¶ÀÎ(equijoin) ¿äûÀº ´ÙÀ½À» ¼öÇàÇØ¾ß ÇÕ´Ï´Ù:

  1. S_EMP¿Í S_DEPT Å×À̺íÀÇ Àüü Å×ÀÌºí ½ºÄµ
  2. °¢ Çà ÀÚ¿øÀ» º°µµ·Î Á¤·Ä
  3. Á¤·ÄµÈ ÀÚ¿øÀ» ÇÔ²² º´ÇÕÇÏ¿©, ÇÑ ¼Ò½ºÀÇ °¢ ÇàÀ» ´Ù¸¥ ¼Ò½º¿¡ ´ëÀÀµÇ´Â °¢ Çà°ú °áÇÕ

    Á¤·Ä ÀÛ¾÷ Àü¿¡:
       SQL> select name, value
         2  from v$sysstat where name = ¡®sorts (rows)¡¯;
       NAME                                       VALUE
       -------------- ---------------------------------
       sorts (rows)                              639330

    Á¤·Ä ÀÛ¾÷ ÈÄ¿¡:
       SQL> select name, value
         2  from v$sysstat where name = ¡®sorts (rows)¡¯;
       NAME                                       VALUE
       -------------- ---------------------------------
       sorts (rows)                              655714

ANALYZE ½ÇÇà
ANALYZE ¸í·ÉÀº Å×À̺í, À妽º, Ŭ·¯½ºÅÍ¿¡ °üÇÑ Åë°è ÀڷḦ ¼öÁýÇϴµ¥ À¯¿ëÇϱ⠶§¹®¿¡, CBO°¡ ÃÖ»óÀÇ ½ÇÇà °èȹÀ» Á¤ÀÇÇÏ´Â µ¥ µµ¿òÀÌ µË´Ï´Ù. ÀÌ ¸í·ÉÀº µ¥ÀÌÅ͸¦ Á¤·ÄÇÏ¿©, ¿ä¾àµÈ Á¤º¸¸¦ Á¦°øÇÕ´Ï´Ù.
        SQL> select name, value
          2  from v$sysstat where name = ¡®sorts (rows)¡¯;
        NAME            VALUE
        --------------- -----------------------
        sorts (rows)                      61751
        SQL> execute sys.dbms_utility.analyze_schema (¡®SCOTT¡¯, COMPUTE¡¯);
        PL/SQL procedure successfully completed.
        SQL> select name, value
          2  from v$sysstat where name = ¡®sorts (rows)¡¯;
        NAME            VALUE
        --------------- -----------------------
        sorts (rows)                     622930

ÀÛ¾÷ÀÌ SORT_AREA_SIZE ÆĶó¹ÌÅÍÀÇ °ª(¹ÙÀÌÆ®)º¸´Ù ´õ ÀÛÀº ¿µ¿ª ³»¿¡¼­ ¼öÇàµÉ ¼ö ÀÖ´Â °æ¿ì, ¿À¶óŬ ¼­¹ö´Â ¸Þ¸ð¸®¿¡¼­ Á¤·ÄÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.

Á¤·Ä ÀÛ¾÷ÀÌ ÀÌ °ªº¸´Ù ´õ ¸¹Àº °ø°£À» ÇÊ¿ä·Î ÇÒ °æ¿ì¿¡´Â:

  1. µ¥ÀÌÅÍ´Â ¡®Á¤·Ä ½ÇÇà(sort run)¡¯À̶ó´Â ´õ ÀÛÀº ºÎºÐÀ¸·Î ºÐÇҵǰí, °¢ ºÎºÐÀº °³º°ÀûÀ¸·Î Á¤·ÄµË´Ï´Ù.
  2. ¼­¹ö ÇÁ·Î¼¼½º´Â µð½ºÅ©ÀÇ Àӽà ¼¼±×¸ÕÆ®¿¡ ºÐÇÒµÈ µ¥ÀÌÅÍ ºÎºÐÀ» ±â·ÏÇÕ´Ï´Ù. ÀÌµé ¼¼±×¸ÕÆ®´Â ¼­¹ö°¡ ´Ù¸¥ Á¤·Ä ½ÇÇàÀ» ó¸®ÇÏ´Â µ¿¾È Áß°£ Á¤·Ä ½ÇÇà µ¥ÀÌÅ͸¦ À¯ÁöÇÕ´Ï´Ù.
  3. Á¤·ÄµÈ ºÎºÐÀº º´ÇյǾî ÃÖÁ¾ °á°ú¸¦ »êÃâÇÕ´Ï´Ù.

Á¤·Ä ¿µ¿ª
Á¤·Ä °ø°£Àº

ÁÖÀÇ: ´ë·®ÀÇ Á¤·Ä ÀÛ¾÷À» ¼öÇàÇÏ´Â ¾ÖÇø®ÄÉÀ̼ÇÀº MTS¸¦ »ç¿ëÇؼ­´Â ¾ÈµË´Ï´Ù.

ÆĶó¹ÌÅ͵é
SORT_AREA_SIZE

SORT_AREA_RETAINED_SIZE

¹®Á¦ Áø´Ü

Æ©´× ¸ñÇ¥

NOSORT Àý
SQL*Loader »ç¿ë ½Ã ´ÜÀÏ CPU ±â°è¿¡¼­ ¹Ì¸® Á¤·ÄµÈ µ¥ÀÌÅÍ¿¡ ´ëÇØ À妽º¸¦ »ý¼ºÇÒ ¶§ NOSORT ÀýÀ» »ç¿ëÇϽʽÿÀ. ÀÌ ÀýÀº Å×ÀÌºí¿¡ »ðÀÔµÈ µ¥ÀÌÅÍ¿¡ ´ëÇؼ­¸¸ À¯È¿ÇÕ´Ï´Ù.

   SQL> create index S_EMP_DEPT_ID_FK on s_emp(dept_id) NOSORT;
   ORA-01409: NOSORT option may not be used; rows are not in ascending order

º¹¼ö CPU ±â°è¿¡¼­, µ¥ÀÌÅÍ°¡ ¼ø¼­´ë·Î ·ÎµåµÇÁö ¾Ê´õ¶óµµ, º´·Ä·Î µ¥ÀÌÅ͸¦ ·ÎµåÇÏ´Â °ÍÀÌ ´õ ºü¸¨´Ï´Ù. ±×·± ´ÙÀ½, º´·Ä À妽º »ý¼º ±â´ÉÀ» »ç¿ëÇÏ¿© Á¤·Ä ÀÛ¾÷ÀÇ ¼Óµµ¸¦ ³ôÀÏ ¼ö ÀÖ½À´Ï´Ù.

UNION ALL
UNION ´ë½Å UNION ALLÀ» »ç¿ëÇϽʽÿÀ. ÀÌ ÀýÀº ÀÌÁß °ªÀ» »èÁ¦ÇÏÁö ¾Ê½À´Ï´Ù. µû¶ó¼­ Á¤·ÄÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.

ÁßøµÈ ·çÇÁ Á¶ÀÎ (Nested Loop Join)
ÀÌÄûÁ¶ÀÎ(equijoin) ¿äû¿¡ ´ëÇØ À妽º ¾×¼¼½º¸¦ »ç¿ëÇϽʽÿÀ:
   SQL> select dept_id, id
     2  from s_emp, s_dept
     3  where s_emp.dept_id = s_dept.id;

¿ÉƼ¸¶ÀÌÀú´Â Á¤·Ä-º´ÇÕ Á¶ÀÎ ´ë½Å ÁßøµÈ ·çÇÁ Á¶ÀÎÀ» ¼±ÅÃÇÕ´Ï´Ù. ÁßøµÈ ·çÇÁ Á¶ÀÎÀº ¾î¶°ÇÑ Á¤·Ä ÀÛ¾÷µµ ¿ä±¸ÇÏÁö ¾ÊÀ¸¸ç, ´ÙÀ½À» ÇÊ¿ä·Î ÇÕ´Ï´Ù:

  1. S_EMP Å×À̺íÀÇ Àüü Å×ÀÌºí ½ºÄµ ¼öÇà
  2. ¹ÝȯµÈ °¢ Çà¿¡ ´ëÇØ DEPT_ID °ªÀ» »ç¿ëÇÏ¿©, PK_ID À妽º¿¡ °íÀ¯ÇÑ ½ºÄµ ¼öÇà
  3. À妽º ½ºÄµÀ¸·ÎºÎÅÍ °Ë»öµÈ ROWID¸¦ »ç¿ëÇÏ¿© ´ëÀÀµÇ´Â ÇàÀ» S_DEPT Å×ÀÌºí¿¡¼­  Ã£±â
  4. S_EMP·ÎºÎÅÍ ¹ÝȯµÈ °¢ ÇàÀ» S_DEPT·ÎºÎÅÍ ¹ÝȯµÈ ´ëÀÀ Çà°ú °áÇÕ

INDEXES ¿Í ORDER BY
ORDER BY ¹®°ú ÇÔ²² ºó¹øÇÏ°Ô ÂüÁ¶µÇ´Â ¿­¿¡ À妽º¸¦ »ý¼ºÇϽʽÿÀ. À妽º°¡ ¿À¸§Â÷¼øÀ¸·Î Á¤·ÄµÇ°í ÀÌÁßÀ¸·Î ¿¬°áµÇ¾î Àֱ⠶§¹®¿¡, ¿À¶óŬ ¼­¹ö´Â Á¤·Ä ÀÛ¾÷ º¸´Ù´Â À妽º¸¦ »ç¿ëÇÒ °ÍÀÔ´Ï´Ù.

ANALYZE FOR COLUMNS
Á¶ÀÎ Á¶°Ç¿¡ °ü·ÃµÈ ¿­¸¸ÀÇ Åë°èÀÇ ¾çÀ» °¨¼Ò½ÃÅ°½Ê½Ã¿À: ANALYZE¡¦FOR COLUMNS ¶Ç´Â ANALYZE¡¦FOR ALL INDEXED COLUMNS
ÁÖÀÇ: ¡°ANALYZE¡¦ SIZE n¡± ¸í·ÉÀº °ü·Ã ¿­¿¡ ´ëÇÑ È÷½ºÅä±×·¥À» »ý¼ºÇÕ´Ï´Ù. ÀÌ ÀýÀ» FOR ALL INDEXED COLUMNS Àý°ú °áÇÕÇÏ¸é ±âº»Å°(primary key)¿Í °íÀ¯ÇÑ(unique) Á¦¾àÁ¶°Ç¿¡ ´ëÇØ ºÒÇÊ¿äÇÑ È÷½ºÅä±×·¥À» »ý¼ºÇÕ´Ï´Ù.

ANALYZE ESTIMATE
¿ÉƼ¸¶ÀÌÀú¿¡ ´ëÇؼ­´Â COMPUTE ÀýÀÌ ´õ Á¤È®ÇÕ´Ï´Ù. ±×·¯³ª, ¸¹Àº ¾çÀÇ Á¤·Ä °ø°£À» ÇÊ¿ä·Î Çϱ⠶§¹®¿¡, Å« Å×À̺í°ú Ŭ·¯½ºÅÍ¿¡ ´ëÇؼ­´Â ESTIMATE ÀýÀÌ ¼±È£µË´Ï´Ù. 

µ¿ÀûÀÎ ºä¿Í Report.txt Ãâ·Â°á°ú

ÁÖÀÇ: OEM Áø´Ü ÆÑ ¾ÖÇø®ÄÉÀ̼Ç
Performance Manager -> Database_Instance -> System Statistics
Performance Manager -> Load -> Sort Rows Rate

ºñÀ²
sort(disk) ´ë sort(memory)ÀÇ ºñÀ²Àº 5% º¸´Ù ÀÛ¾Æ¾ß ÇÕ´Ï´Ù.

Guidelines
µð½ºÅ© Á¤·Ä ÀÛ¾÷ÀÇ ºñÀ²ÀÌ ³ôÀ» °æ¿ì, SORT_AREA_SIZEÀÇ Å©±â¸¦ Áõ°¡½ÃÅ°½Ê½Ã¿À. SORT_AREA_SIZE´Â °¢ ½ÇÇà ÀÛ¾÷ÀÇ Å©±â¸¦ Áõ°¡½ÃÅ°°í ½ÇÇà ¹× º´ÇÕÀÇ ÃÑ ÀÛ¾÷ ¼ö¸¦ °¨¼Ò½Ãŵ´Ï´Ù.

Å« Á¤·Ä ¿µ¿ª¿¡ ´ëÇÑ ¼º´ÉÀÇ µæ°ú ½Ç
Á¤·Ä ¿µ¿ªÀÇ Å©±â¸¦ Áõ°¡½Ãų °æ¿ì, Á¤·Ä ÀÛ¾÷À» ¼öÇàÇÏ´Â °¢ ¼­¹ö ÇÁ·Î¼¼½º´Â ´õ ¸¹Àº ¸Þ¸ð¸®¸¦ ÇÒ´çÇÕ´Ï´Ù. ÀÌ°ÍÀº ¿î¿µÃ¼Á¦ ¸Þ¸ð¸® ÇÒ´ç¿¡ ¿µÇâÀ» ¹ÌÄ¡°í ÆäÀÌ¡°ú ½º¿ÍÇÎ ÀÛ¾÷À» Æ÷ÇÔ½Ãų ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

Á¤·Ä ¿µ¿ªÀÇ Å©±â¸¦ Áõ°¡½Ãų °æ¿ì, µ¥ÀÌÅÍ°¡ °ð ÂüÁ¶µÉ °ÍÀÌ ¾Æ´Ï¶ó¸é, Á¤·Ä ¿µ¿ªÀÇ º¸À¯ Å©±â¸¦ °¨¼Ò½ÃÅ°°Å³ª ¿À¶óŬÀÌ Á¤·Ä ¿µ¿ªÀ» °¨¼Ò½ÃÅ°´Â Å©±â±îÁö Á¤·Ä ¿µ¿ªÀÇ Å©±â¸¦ °¨¼Ò½Ãų °ÍÀ» °í·ÁÇϽʽÿÀ. º¸À¯µÈ Á¤·Ä ¿µ¿ªÀÌ ´õ ÀÛÀ»¼ö·Ï ¸Þ¸ð¸® »ç¿ëÀº ´õ ÀûÁö¸¸, µð½ºÅ© »óÀÇ Àӽà ¼¼±×¸ÕÆ®¿¡ ¾²±â¿Í Àб⸦ Çϱâ À§ÇÑ I/O°¡ Ãß°¡µË´Ï´Ù.

ÁÖÀÇ: OEM Áø´Ü ÆÑ ¾ÖÇø®ÄÉÀ̼Ç
Performance Manager -> Memory -> Memory Sort Hit % 


V$SORT_SEGMENT ºä

ÀÌ ºä¿¡´Â ÀνºÅϽº ³»¿¡ ÀÖ´Â TEMPORARY Å×ÀÌºí½ºÆäÀ̽ºÀÇ ¸ðµç Á¤·Ä ¼¼±×¸ÕÆ®¿¡ °üÇÑ Á¤º¸°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.
        

¿­

¼³¸í

CURRENT_USERS

 È°µ¿ÁßÀÎ »ç¿ëÀÚÀÇ ¼ö

TOTAL_EXTENTS

 ÃÑ ÀͽºÅÙÆ® ¼ö

USED_EXTENTS

 ÇöÀç Á¤·Ä ÀÛ¾÷¿¡ ÇÒ´çµÈ ÀͽºÅÙÆ®ÀÇ ¼ö

EXTENT_HITS

 »ç¿ëµÇÁö ¾ÊÀº ÀͽºÅÙÆ®°¡ Ç®¿¡¼­ ¹ß°ßµÈ Ƚ¼ö

MAX_USED_BLOCKS

 »ç¿ëµÈ ºí·ÏÀÇ ÃÖ´ë ¼ö

MAX_SORT_BLOCKS

 °³º° Á¤·Ä ÀÛ¾÷¿¡ ÀÇÇØ »ç¿ëµÈ ºí·ÏÀÇ ÃÖ´ë ¼ö


Àӽà Å×ÀÌºí½ºÆäÀ̽º ±¸¼º

Á¤·Ä ¼¼±×¸ÕÆ®°¡ ¹«Á¦ÇÑÀ¸·Î ÀͽºÅÙÆ®¸¦ °®´Â °æ¿ì¸¦ Á¦¿ÜÇÏ°í´Â, ¾î´À MAXEXTENTS °ªÀÌ ¼³Á¤µÇµçÁö Àӽà Å×ÀÌºí½ºÆäÀ̽º¿¡ ´ëÇÑ µðÆúÆ® ÀúÀåÀå¼Ò ÆĶó¹ÌÅÍ´Â Á¤·Ä ¼¼±×¸ÕÆ®¿¡ Àû¿ëµË´Ï´Ù.

Guidelines

ÀúÀåÀå¼Ò ÆĶó¹ÌÅÍ  Á¤·Ä ÀÛ¾÷Àº SORT_AREA_SIZEº¸´Ù ÀÛÀ» °æ¿ì¿¡ ¸Þ¸ð¸®¿¡¼­ ¼öÇàµÇ±â ¶§¹®¿¡, ÀͽºÅÙÆ® Å©±â¸¦ ¼³Á¤ÇÒ ¶§ ÀÌ°ÍÀ» °í·ÁÇØ¾ß ÇÕ´Ï´Ù.

´Ù¸¥ Àӽà Å×ÀÌºí½ºÆäÀ̽º »ç¿ëÀÚ°¡ ÇÊ¿ä·Î ÇÏ´Â Á¤·Ä °ø°£À» Á¤ÀÇÇϱâ À§ÇÏ¿©, V$SESSION°ú V$SORT_USAGE ºä¸¦ °áÇÕÇÏ¿© ÀνºÅϽº¿¡¼­ ÇöÀç È°µ¿ÁßÀÎ µð½ºÅ© Á¤·Ä ÀÛ¾÷¿¡ °üÇÑ Á¤º¸¸¦ ÀÔ¼öÇϽʽÿÀ:
  SQL>  SELCET s.username, u.¡±USER¡±, u.tablespace, u.contents,
     2         u.extents, u.blocks
     3  FROM v$session s, v$sort_usage u
     4  WHERE s.saddr=u.session_addr
     5  AND u.contents=¡¯TEMPORARY¡¯;
  USERNAME   USER    TABLESPACE   CONTENTS   EXTENTS     BLOCKS
  --------   -----   ----------   ---------  -------     ------
  STAT       SYSTEM  TEMP         TEMPORARY       20       1000
  SCOTT      SYSTEM  TEMP         TEMPORARY        2        100

V$SORT_USAGE ÀÇ USER ¿­Àº Ç×»ó ÀÌ ºä¸¦ ÁúÀÇÇÏ°í ÀÖ´Â »ç¿ëÀÚ¸¦ ³ªÅ¸³À´Ï´Ù. Á¤·Ä ÀÛ¾÷À» ¼öÇàÇÏ°í ÀÖ´Â »ç¿ëÀÚ´Â V$SESSION ºäÀÇ usernameÀÔ´Ï´Ù.
´ë¿ë·®ÀÇ µð½ºÅ© °ø°£À» ¿ä±¸ÇÏ´Â »ç¿ëÀÚ STAT´Â ÀͽºÅÙÆ® Å©±â°¡ ´õ Å« ´Ù¸¥ Àӽà Å×ÀÌºí½ºÆäÀ̽º·Î ¹èÁ¤µÇ¾î¾ß ÇÕ´Ï´Ù.

½ºÆ®¶óÀÌÇÎ
Àӽà Å×ÀÌºí½ºÆäÀ̽º´Â ¿©·¯ ¸¹Àº µð½ºÅ©¿¡ ½ºÆ®¶óÀÌÇεǾî¾ß ÇÕ´Ï´Ù. Àӽà Å×ÀÌºí½ºÆäÀ̽º°¡, °¢±â ÃÊ´ç ÃÖ´ë I/O°¡ 50ȸÀÎ 2°³ÀÇ µð½ºÅ©¿¡¸¸ ½ºÆ®¶óÀÌÇεǾî ÀÖ´Ù¸é, ÃÊ´ç 100ȸÀÇ I/O¸¸ ¼öÇàµÉ ¼ö ÀÖ½À´Ï´Ù. Á¤·Ä ÀÛ¾÷¿¡ ¸Å¿ì ±ä ½Ã°£ÀÌ ¼Ò¿äµÇ±â ¶§¹®¿¡, ÀÌ·¯ÇÑ Á¦ÇÑÀº ¹®Á¦°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. 10°³ÀÇ µð½ºÅ©¿¡ Àӽà Å×ÀÌºí½ºÆäÀ̽º¸¦ ½ºÆ®¶óÀÌÇÎÇÒ °æ¿ì, Á¤·Ä ÀÛ¾÷ÀÇ ¼Óµµ¸¦ 5¹è³ª ¿Ã¸± ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì¿¡´Â, ÃÊ´ç I/O°¡ 500ȸ´Â °¡´ÉÇÒ °ÍÀÔ´Ï´Ù.


 ¹®¸Æ 

  ÂüÁ¶

 ÃʱâÈ­ ÆĶó¹ÌÅÍ

  SORT_AREA_SIZE
  SORT_AREA_RETAINED_SIZE
  SORT_DIRECT_WRITES
  SORT_WRITE_BUFFERS
  SORT_WRITE_BUFFER_SIZE

 µ¿Àû ¼º´É ºä

  V$SYSSTAT
  V$SORT_SEGMENT
  V$SORT_USAGE
  V$SESSION

 µ¥ÀÌÅÍ µñ¼Å³Ê¸® ºä

  None

 ¸í·É¾î

  None

 ÆÐÅ°ÁöµÈ ÇÁ·Î½ÃÀú¿Í ÇÔ¼ö

  None

 ½ºÅ©¸³Æ®

  None

 Áø´ÜÆÑ ¾îÇø®ÄÉÀ̼Ǡ  

X Á¤´ä:A


X Á¤´ä:A


X Á¤´ä:B


X Á¤´ä:C


X Á¤´ä:A


X Á¤´ä:B


X Á¤´ä:A


X Á¤´ä:B


X Á¤´ä:D


X Á¤´ä:B


X Á¤´ä:A