SQL Tuning
SQL Tuning
SQL TUNING
OBJETIVO: Verificar atravs de alguns exemplos reais como possvel efetuar o tuning de queries SQL usando algumas tcnicas disponveis.
SQL TUNING
O QUE PRECISO ? Conhecer a aplicao
SQL TUNING
PLAN_TABLE
SQL TUNING
CRIANDO SUA PLAN_TABLE (I)
SQL TUNING
CRIANDO SUA PLAN_TABLE (II)
SQL TUNING
SQL TUNING
SQL TUNING
SQL TUNING
SQL TUNING
SQL TUNING
SQL TUNING
e outras.....
SQL TUNING
CASOS PRTICOS
SQL TUNING
QUERY
EXPLAIN ALL SET QUERYNO = # FOR ...Sua query SQL....
CONSULTA
SELECT * FROM PLAN_TABLE ORDER BY 1, 2, 5;
SQL TUNING
SQL TUNING
CASO 1: -- 01/02/07 TOP 25 REPORTED USAGE 1098 -- 01/02/07 APPTUNE ELAPSED TIME 36 MIN 32 SEC - CPU TIME 08 MIN 43 SEC -- 01/02/07 HIT RLF -- 01/03/07 TOP 25 REPORTED USAGE 1073 -- 01/03/07 APPTUNE ELAPSED TIME 06 MIN 51 SEC - CPU TIME 04 MIN 15 SEC -- 01/03/07 HIT RLF SELECT DISTINCT AL2.EMP_DISCON_DATE ,AL2.EMP_EFFECT_DATE ,AL2.FINANC_ADMIN_CODE ,AL2.DIVISION_CODE ,AL2.LAST_ALTER_TMS ,AL2.EMP_SER_NUM ,AL2.EMP_LAST_NAME ,AL2.EMP_INITIALS FROM BIBMSTS.REBAL_RESOURCE AL1, BMSIW.EMP_MASTER_FILE_FV AL2 WHERE (AL1.SERIALNUMBER = AL2.EMP_SER_NUM) AND (AL2.COUNTRY_CODE = '897' AND AL2.COMPANY_CODE = 'IBM' AND AL2.EMP_DISCON_DATE >= '20051231' AND Date(AL1.DB2_INSERT) in (SELECT max(date(db2_insert)) from bibmsts.rebal_resource ) AND (NOT AL1.SERIALNUMBER IS NULL) AND (AL2.DIVISION_CODE = '07' OR AL2.DIVISION_CODE IS NULL)) FOR FETCH ONLY
SQL TUNING
QUERY QB PL NO NO NO ----- -- --1 1 1 1 1 2 1 1 3 1 1 4 1 2 1 1 2 2 TS LOC MOD --N N N P R F S S COL FN EVA --MIX OP SEQ --0 0 0 0 0 0 M E T -0 1 1 3 0 3
S TB AC MT ACCESS IX N TNAME NO TP CO NAME ON U ------------------ --- -- -- ------------ -- CTRY_CMPNY_AUTH 4 I 3 CCAUTHP Y N EMP_MASTER_FILE 2 I 2 EMPMAIX2 N N REBAL_RESOURCE 1 R 0 N N 0 0 N N REBAL_RESOURCE 3 R 0 N N 0 0 N N
S N J N N N N N N
S N O N N N N N N
S N G N N N N N N
S C U N N N Y N Y
S C J N N N N N N
S C O N N N N N Y
S C G N N N N N N
N S
S N COL COL C U TBNAME CREATOR COLNAME NO TYP LEN A L ------------------+--------+------------------+---+---+----+--+-+ REBAL_RESOURCE BIBMSTS CREATOR 1 CHA 30 0 Y DATECREATED 2 TIM 10 0 Y SERIALNUMBER 3 CHA 6 0 Y NAME 4 CHA 50 0 Y RESOURCETYPE 5 CHA 30 0 Y ORGANIZATION 6 CHA 50 0 Y CHALLENGECAT 7 CHA 30 0 Y STATUS 8 CHA 30 0 Y DISPOSITION 9 CHA 30 0 Y ACCOUNT 10 CHA 50 0 Y REGSTATUS 11 CHA 30 0 Y LOCATION 12 CHA 30 0 Y STATE 13 CHA 30 0 Y COUNTRY 14 CHA 30 0 Y DIRECTOR 15 CHA 30 0 Y MANAGERNAME 16 CHA 30 0 Y POSITION 17 CHA 30 0 Y JOBFAMILY 18 CHA 30 0 Y
TOTAL CPU TIME= .01 TOTAL ELAPSED TIME= .09 (in minutes) - RECORDS in the final report: about 2340 (including headers)
SQL TUNNING
EXPLAIN
QUERY NO ----2 2 2 2 2 2 2 2 TS P LOC R MOD F --- N N S N L QB PL NO NO -- --1 1 1 2 1 3 1 4 2 1 2 2 3 1 3 2 COL MIX FN OP EVA SEQ --- --0 0 0 0 N S 0 0 N S 0 0 M E T -0 1 4 3 0 3 0 3
caso1... Cont
S TB AC MT ACCESS IX N TNAME NO TP CO NAME ON U ------------------ --- -- -- ------------ -- CTRY_CMPNY_AUTH 5 I 3 CCAUTHP Y N AL1 1 R 0 N N EMP_MASTER_FILE 2 I 3 EMPMAIP1 N N 0 0 N N REBAL_RESOURCE 3 R 0 N N 0 0 N N REBAL_RESOURCE 4 R 0 N N 0 0 N N ACC JOI ACC -PG JOI PGR PAR HINT TB DEG ID DEG ID MOD OPTHINT USED TP --- --- --- --- --- -------- -------- -- T - W - T - - T - - T - -
S N J N N N N N N N N
S N O N N N N N N N N
S N G N N N N N N N N
S C U N N N Y N Y N Y
S C J N N Y N N N N N
S C O N N N N N N N Y
S C G N N N N N N N N
SQL TUNING
......... FROM BDWDM.CHRG_HIST_UV AL1, BMSIW.ACCOUNT_UV AL2 WHERE (AL2.ACCOUNT_ID = AL1.ACCOUNT_ID AND AL2.OWNING_COUNTRY_CD = AL1.OWNING_COUNTRY_CD) AND ((AL1.ORIG_COUNTRY_CD = '706' OR AL1.OWNING_COUNTRY_CD = '706') AND AL1.LEDGER_MONTH_NUM = MONTH(CURRENT DATE) AND AL1.LEDGER_YEAR_NUM = Year(CURRENT DATE)) GROUP BY AL1.LEDGER_YEAR_NUM, AL1.LEDGER_MONTH_NUM, AL1. ORIG_COUNTRY_CD, AL1.ORIG_EMP_NUM, AL1.OWNING_COUNTRY_CD, AL1. ACCOUNT_DPT_ID, AL1.WEEK_ENDING_DATE, AL1.SERVICE_TYP_CD, AL1. SERVICE_CD, AL1.LEGAL_CONTRACT_ID, AL1.ACCOUNT_ID, AL1. ORIG_DPT_ID, AL1.ORIG_LAST_NAME, AL1.STD_UNIT_PRICE_AMT, AL1. SERVICE_GROUP_ID, AL1.FINCHG_MAJ_NUM, AL1.FINREL_LERU_ID, AL1. CHRG_GROUP_CD, AL2.STATUS, AL2.DATE_OPENED, AL2.DATE_CLOSED, AL2.ACCT_TYP_CD, AL2.CHRG_DEPT_ID, AL2.SOW_TYP_CD, AL1. LEDGER_FG, AL2.CONTACT_UID, AL2.CONTACT_EMP_NUM, AL2. CUSTOMER_NO, AL2.CONTACT_NAME, AL2.ACCOUNT_NAME, AL2. PM_COMPANY_CD, AL2.PM_COUNTRY_CD, AL2.PM_SER_NUM, AL2. APRVR_COMPANY_CD, AL2.APRVR_COUNTRY_CD, AL2.APRVR_SER_NUM, AL2. LBR_BILL_AMT, AL2.BILL_CURRENCY_CD, AL2.TOTAL_HOURS, AL2. PROJ_EXP_BILL_AMT HAVING (NOT Sum(AL1.USAGE_QTY) = 0) AND (NOT Sum(AL1.STD_TOT_CHRG_AMT) = 0) AND (NOT Sum(AL1.USAGE_QTY * 0.125) = 0) UNION ALL
P R F S L
S N N N L S
68 68
1 2 3
70 A 1212416 A 30464 A
TOTAL CPU TIME= 2.09 TOTAL ELAPSED TIME= 2.76 (in minutes) and the final report had about 77800 lines (including headers).
COL COL TBNAME CREATOR COLNAME NO TYP LEN ------------------ -------- ------------------ --- --- ---COUNTRY_REF BMSIW COUNTRY_CD 1 CHA 3 COUNTRY_DESC 2 CHA 30 COUNTRY_ID 3 CHA 2 CURRENCY_CD 4 CHA 3 DATE_FORMAT_CD 5 CHA 3 CCS_ID 6 CHA 5 DBCS_FG 7 CHA 1 DATE_SEPAR_SYMBL 8 CHA 1 SUB_RGN_CD 9 CHA 4 CIAS_COUNTRY_CD 10 CHA 3 CONTROL_COUNTRY_CD 11 CHA 3 CONTROL_COMPANY_CD 12 CHA 8 CONTROL_LOC_CD 13 CHA 3 STATUS 14 CHA 1 UPDATED_BY_NODE 15 CHA 8 UPDATED_BY_UID 16 CHA 8 COMMENT_TEXT 17 CHA 72 RESERVED 18 CHA 25 UPDATED_AT_TS 19 TIM 10 ISO_COUNTRY_CD 20 CHA 3 TRIGGER_UID 21 CHA 8 QMF_REF_ID 22 CHA 12 NAT_LANG_CD 23 CHA 6
QUERY QB PL NO NO NO ----- -- --1 1 1 1 1 2 1 1 3 1 1 4 1 1 5 1 1 6 1 1 7 1 1 8 1 1 9 1 1 10 1 1 11 1 1 12 1 9 1 1 9 2 M E T -0 1 1 1 1 1 1 1 1 1 1 1 1 1 S TB AC MT ACCESS IX N TNAME NO TP CO NAME ON U ------------------ --- -- -- ------------ -- COUNTRY_REF 2 I 0 IXCTRYB N N CTRY_CMPNY_AUTH 12 I 2 CCAUTHD1 Y N GEO_RGN_CTRY 1 I 1 RGNREFU1 N N JOB_ROLE_SKLST 16 I 2 JOBRLP02 N N EMP_DATAMART 18 I 3 EMPDMP01 N N EMPLOYEE 11 I 3 EMPP01 N N PRACTITIONER 13 I 3 PRCTP01 N N CTRY_CMPNY_AUTH 14 I 3 CCAUTHD1 Y N DEPT_REF 15 I 5 IXDPTR1A N N CTRY_CMPNY_AUTH 17 I 3 CCAUTHP Y N CTRY_CMPNY_AUTH 19 I 3 CCAUTHD1 Y N DSNWFQB(09) 9 R 0 N N CTRY_CMPNY_AUTH 21 I 1 CCAUTHP Y N EMF_DATAMART 20 I 2 XNFTDUEMFD1A N N S N J N N N N N N N N N N N N N N S N O N N N N N N N N N N N N N N S N G N N N N N N N N N N N N N N S C U N N N N N N N N N N N N N N S C J N N N N N N N N N N N N N N S C O N N N N N N N N N N N N N N S C G N N N N N N N N N N N N N N
SQL TUNING
CASO 4:
-- 01/05/07 TOP 25 REPORTED USAGE 363 -- 01/05/07 APPTUNE ELAPSED TIME 13 MIN 51 SEC - CPU TIME 08 MIN 22 SEC -- 01/05/07 HIT RLF SELECT AL1.SENT_TO_CLR_DATE ,SUM(AL1.TOTAL_HRS_EXPENDED) ,AL1.ACTIVITY_CD ,AL1.WORK_ITEM_ID ,AL1.EMP_LAST_NAME ,AL1.EMP_INITIALS ,AL1.ACCOUNT_ID ,AL1.EMP_LEVEL_CODE ,AL1.EMP_STATUS ,AL1.WEEK_ENDING_DATE ,AL1.EMP_SER_NUM ,AL1.EMP_DEPT_NUMBER
..........................
S L S
TOTAL CPU TIME= .18 TOTAL ELAPSED TIME= 2.50 (in minutes)
16 tabelas no JOIN
0 PRACTITIONER
43 R
N N N N N N N N
SQL TUNING
QUESTES ?
SQL TUNING
fim