practice12-SQL Statement Tuning
ÀÛ¼ºÀÚ °ü¸®ÀÚ ÀÛ¼º½Ã°£ 2003-08-15 20:00:05
 

$ sqlplus hr/hr

SQL> @/opt/oracle/product/9.2.0/rdbms/admin/utlxplan.sql

SQL> alter session set optimizer_mode = rule;

SQL> !cat $HOME/LABS/ptw9i/lab12_02.sql
select *
from employees
where employee_id < '215';

SQL> explain plan for
  2  @LABS/ptw9i/lab12_02.sql

Explained.

SQL>
SQL>
SQL> col id format 999
SQL>
SQL> col operation format a20
SQL> col options format a20
SQL> col object_name format a20
SQL> select id,parent_id,operation,options,object_name
  2  from plan_table;

  ID  PARENT_ID OPERATION            OPTIONS              OBJECT_NAME
---- ---------- -------------------- -------------------- --------------------
  0            SELECT STATEMENT
  1          0 TABLE ACCESS        BY INDEX ROWID      EMPLOYEES
  2          1 INDEX                RANGE SCAN          EMP_EMP_ID_PK

µ¿ÀÏÇÑ ¹®ÀåÀÏÁö¶óµµ optimizer mode °¡ ´Þ¶óÁö¸é ½ÇÇà°èȹÀÌ ´Þ¶óÁø´Ù.
rule ÀÎ °æ¿ì emp_emp_id_pk À妽º°¡ »ç¿ëµÇ¾î index range scanÀÌ »ç¿ëµÇ¾úÁö¸¸ optimizer mode °¡ all_rows·Î µÈ °æ¿ì Full Table scan ÀÌ »ç¿ëµÇ¾ú´Ù.

SQL> !cat $HOME/LABS/ptw9i/lab12_04.sql
select /*+ all_rows*/ *
from employees
where employee_id < '215';

SQL>
SQL> explain plan for
  2  @LABS/ptw9i/lab12_04.sql

Explained.

SQL>
SQL> select id,parent_id,operation,options,object_name
  2  from plan_table;

  ID  PARENT_ID OPERATION            OPTIONS              OBJECT_NAME
---- ---------- -------------------- -------------------- --------------------
  0            SELECT STATEMENT
  1          0 TABLE ACCESS        FULL                EMPLOYEES

SQL> exit

3. SQL Trace »ç¿ë

$cd $ORACLE_HOME/rdbms/log

$rm *.trc

$ sqlplus sh/sh

SQL> alter session set sql_trace = true;

SQL> !cat $HOME/LABS/ptw9i/lab12_06.sql
select c.cust_last_name, sum(s.amount_sold)
from sales s, customers c
where c.cust_id = s.cust_id
  and s.prod_id = '46520'
group by c.cust_last_name;

SQL> @$HOME/LABS/ptw9i/lab12_06.sql

SQL> alter session set sql_trace = false;

SQL> exit

$ cd $ORACLE_HOME/rdbms/log

[human@dbserver udump]$ ls
human_ora_24745.trc

4. Åë°èÁ¤º¸ÀÇ ¼öÁý

-hr/hr ·Î login ÇÑ ´ÙÀ½ hr user schema ¿¡ ÀÖ´Â object ¿¡ ´ëÇÑ Åë°èÁ¤º¸¸¦ ÀúÀåÇÒ table À» »ý¼ºÇÑ´Ù.

$sqlplus hr/hr

SQL> execute dbms_stats.create_stat_table('HR','MY_STATS');

SQL> select * from my_stats;

-hr user schema ¿¡ ÀÖ´Â ¸ðµç object¿¡ ´ëÇÑ Åë°èÁ¤º¸¸¦ dictionary ·Î ºÎÅÍ my_stats¶ó´Â table·Î export

SQL> execute dbms_stats.export_schema_stats('HR','MY_STATS');
SQL> select * from my_stats;

-hr user schema ÀÇ ÇöÀçÀÇ ¸ðµç object¿¡ ´ëÇØ Åë°è¸¦ »ý¼ºÇÏ¿© dictionary¿¡ storeÇÑ´Ù.

SQL> execute dbms_stats.gather_schema_stats('HR');

-dictionary¿¡ storeµÈ hr user schema object¿¡ ´ëÇÑ Åë°èÁ¤º¸¸¦ »èÁ¦ÇÑ ÈÄ ¾Õ¿¡¼­ my_stats¿¡ ¶³¾î ¶ß¸° ÀÌÀü Åë°èÁ¤º¸¸¦ dirct¿¡ restore

SQL> execute dbms_stats.delete_schema_stats('HR');

SQL> execute dbms_stats.import_schema_stats('HR','MY_STATS');

SQL> exit


¸ñ·Ï | ÀÔ·Â | ¼öÁ¤ | ´äº¯ | »èÁ¦