mercoledì 28 gennaio 2015

RDBMS ORACLE- Stale Statistics

Quando le statistiche di un oggetto (tabelle, partizioni o sottopartizioni) diventano STALE e quindi poco affidabili affinchè l'ottimizzatore le sfrutti?



Le statistiche diventano stale nel momento in cui dopo averle calcolate le righe all’interno della tabella, partizione o sottopartizione subiscono una movimentazione superiore al 10% del totale.


  • In questo caso la tabella risulta analizzata alle 10:04 con 64 righe

SELECT OWNER,TABLE_NAME,NUM_ROWS,LAST_ANALYZED 
   FROM DBA_TABLES 
WHERE TABLE_NAME='STAF15_WRK';

OWNER         TABLE_NAME                       NUM_ROWS LAST_ANALYZED     
------------- ------------------------------ ---------- --------------------
PIPPO         STAF15_WRK                             64 28-GEN-2015 10:04:29

  • Alle 10:54 vengono effettuate delle operazioni di delete. Viene cancellato l'intero contenuto della tabella, 64 rgihe, senza effettuare la refresh delle statistiche.

SELECT TABLE_OWNER,TABLE_NAME,INSERTS,UPDATES,DELETES,TIMESTAMP 
    FROM DBA_TAB_MODIFICATIONS 
WHERE TABLE_NAME ='STAF15_WRK' AND TABLE_OWNER='PIPPO';

TABLE_OWNER  TABLE_NAME     INSERTS    UPDATES    DELETES     TIMESTAMP         
----------- --------------- ---------- ---------- ---------- --------------------
PIPPO           STAF15_WRK          0           0         64 28-GEN-2015 10:54:58

  •  Oracle a questo punto, poiché abbiamo che la movimentazione di righe in questo caso è pari al 100%  marca le statistiche della tabella come STALE. 
  • ROUND ( (DTM.DELETES + DTM.UPDATES + DTM.INSERTS)/DT.NUM_ROWS*100)>= 10   

SELECT OWNER,TABLE_NAME,NUM_ROWS,LAST_ANALYZED,STALE_STATS  
    FROM DBA_TAB_STATISTICS 
WHERE TABLE_NAME='STAF15_WRK';

OWNER       TABLE_NAME    NUM_ROWS   LAST_ANALYZED        STALE_STATS
----------- ------------ ---------- -------------------- -----------
PIPPO         STAF15_WRK         64 28-GEN-2015 10:04:29 YES        

Da documentazione 
viene indicato che in questi casi I piani di accesso potrebbero essere “poor”:

Automatic optimizer statistics collection eliminates many of the manual tasks associated with managing the query optimizer, and significantly reduces the risks of generating poor execution plans due to missing or stale statistics.”

A questo punto l'unica soluzione è la rigenerazione delle statistiche sull'oggetto STALE.


Nessun commento:

Posta un commento