MainframeSupports
tip uge 17/2009:

Irrirerer det dig, at DB2 ikke holder styr på, hvor mange rækker, der er lige nu i dine tabeller? Kunne du godt tænke dig at vide, hvornår din tabel sidst er blevet ændret? Disse spørgsmål og mange andre kan besvares ved hjælp af tabellen SYSIBM.TABLESPACESTATS, som i DB2 9 omdøbes til SYSIBM.SYSTABLESPACESTATS. Der findes en pendant for indexer, som hedder SYSIBM.INDEXSPACESTATS, som i DB2 9 kaldes SYSIBM.SYSINDEXSPACESTATS. Under et kalder IBM disse tabeller for Real time statistics.

Hver eneste gang et tablespace opdateres, så opdateres de tilhørende oplysninger i TABLESPACESTATS tabellen. Det samme gør sig gældende for INDEXSPACESTATS tabellen, men den er ikke nær så interessant. Man slipper med andre ord for at køre RUNSTATS for at få helt friske statistik oplysninger. Oplysningerne i de to tabeller er ikke 100% korrekte, da DB2 cacher oplysningerne, men de er meget tæt på. Der er kun tale om sekunder til få minutter i at oplysningerne er helt up to date.

Som det fremgår af navnet på TABLESPACESTATS, så indeholder den oplysninger på tablespace niveau, så hvis du har flere tabeller i et tablespace, så er oplysningerne desværre ikke meget bevendt. Men langt de fleste installationer kører med et 1:1 forhold mellem tabeller og tablespaces. Dog er der visse udbredte købeprodukter, der bryder med denne regel. Det gælder eksempelvis SAP og Peoplesoft, så vidt jeg har hørt. Real time statistics blev introduceret i DB2 version 7 og krævede ekstra installation. Det fortsatte i version 8, men i DB2 9 er det en integreret del af DB2. Det er også derfor de to tabeller i systemkataloget skifter navn. Vær opmærksom på, at SYSTABLESPACESTATS og SYSINDEXSPACESTATS først bliver aktive i DB2 9, når man skifter fra Compability Mode til New Function Mode. Indtil da er det TABLESPACESTATS og INDEXSPACESTATS, der er gældende.

Tabellen TABLESPACESTATS indeholder et væld af spændende informationer om hvert eneste tablespace. Partitionerede tabeller består af flere tablespaces, så der er selvfølgelig een række i tabellen for hver partition, så hvis man skal have det samlede antal rækker for en partitioneret tabel, så skal man summere rækker i TABLESPACESTATS. Du kan læse alt om indholdet af hver enkelt række her. Linket er til DB2 version 8 udgaven af tabellen. Kolonnerne er de samme i DB2 9, og der er kommet et par stykker mere til. Desuden har enkelte kolonner (blandt andet den meget centrale med antallet af rækker kaldet TOTALROWS) skiftet type fra FLOAT til BIGINT (8 bytes integer).

Forrige danske tip        Last tip in english        Tip oversigten