Przebudowa statystyk tabel w DB2

Przebudowa statystyk

REORGCHK to narzędzie do przeprowadzenia analizy, które z obiektów wymagają przebudowy. Obiekty zdefragmentowane zaznaczane są przez to narzędzie, a następnie przy pomocy polecenia REORG należy je przebudować.

Poniższe polecenie aktualizuje statystyki w tabeli MYTABLE:

[db2inst1@localhost NODE0000]$ db2 reorgchk update statistics on table MYTABLE

Jeśli chcemy tylko sprawdzić aktualne statystyki w schemacie DB2INST1 musimy wydać polecenie:

[db2inst1@localhost NODE0000]$ db2 reorgchk current statistics on schema DB2INST1

Table statistics:
F1: 100 * OVERFLOW / CARD  70
F3: 100 * (Required Pages / Total Pages) > 80

SCHEMA.NAME                     CARD     OV     NP     FP ACTBLK    TSIZE  F1  F2  F3 REORG
----------------------------------------------------------------------------------------
Table: DB2INST1.MYTABLE
                             4194304      0  41965  41965      - 1.68e+08   0  99 100 ---
----------------------------------------------------------------------------------------
Index statistics:

F4: CLUSTERRATIO or normalized CLUSTERFACTOR > 80
F5: 100 * (Space used on leaf pages / Space available on non-empty leaf pages) > MIN(50, (100 - PCTFREE))
F6: (100 - PCTFREE) * (Amount of space available in an index with one less level / Amount of space required for all keys) < 100
F7: 100 * (Number of pseudo-deleted RIDs / Total number of RIDs) < 20
F8: 100 * (Number of pseudo-empty leaf pages / Total number of leaf pages) < 20

SCHEMA.NAME                 INDCARD  LEAF ELEAF LVLS  NDEL    KEYS LEAF_RECSIZE NLEAF_RECSIZE LEAF_PAGE_OVERHEAD NLEAF_PAGE_OVERHEAD  PCT_PAGES_SAVED  F4  F5  F6  F7  F8 REORG
----------------------------------------------------------------------------------------

CLUSTERRATIO or normalized CLUSTERFACTOR (F4) will indicate REORG is necessary
for indexes that are not in the same sequence as the base table. When multiple
indexes are defined on a table, one or more indexes may be flagged as needing
REORG.  Specify the most important index for REORG sequencing.

Tables defined using the ORGANIZE BY clause and the corresponding dimension
indexes have a '*' suffix to their names. The cardinality of a dimension index
is equal to the Active blocks statistic of the table.

Po sprawdzeniu obiektów możemy przystąpić do ich reorganizacji za pomocą REORG’a. Polecenie to przebudowuje podaną tabele i podany jej indeks i zezwala, aby użytkownicy w tym czasie mogli wykonywać operacje zapisu do tabeli.

[db2inst1@localhost NODE0000]$ db2 reorg table db2inst1.MYTABLE inplace allow write access

DB20000I  The REORG command completed successfully.
DB21024I  This command is asynchronous and may not be effective immediately.

Aby wstrzymać operacje reorganizacji wydajemy polecenie:

reorg table nazwa_tabeli index nazwa_indeksu inplace pause

Należy zwrócić uwagę na miejsce na dyskach gdyż podczas przebudowy są tworzone klony obiektów a następnie na ich podstawie przebudowywany obiekt a następnie miejsce jest uwalniane. Tak więc potrzeba miejsca tyle ile zajmuje największy obiekt w bazie.

Na koniec możemy uruchomić polecenie RUNSTAT które przebudowuje statystyki

[db2inst1@localhost NODE0000]$ db2 runstats on table db2inst1.MYTABLE and indexes all

DB20000I  The RUNSTATS command completed successfully.


Po przebudowie statystyk należy wykonać polecenie

db2 flush package cache dynamic

Wykonuje ono odświeżenie schowka tak, aby dynamiczne polecenia SQL korzystały i były kompilowane z uwzględnieniem aktualnych danych.

Ten wpis został opublikowany w kategorii DB2 i oznaczony tagami . Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz