Som jeg vist har nævnt tidligere, så er der en masse nye faciliteter i DB2 version 6, som kan gøres tilgængelige i version 5 ved hjælp af forskellige PTF'er. En af disse faciliteter er en såkaldt DISCARD option på DB2 REORG. Med DISCARD kan man under REORG få fjernet uønskede rækker fra de DB2-tabeller, der findes i det tablespace, man reorganiserer. Simpelt og genialt koncept. Faktisk er det så smart lavet, at man kan få unloadet de slettede rækker og det endda sammen med et DB2 LOAD statement, der gør det muligt at lave load af de slettede rækker.
I mit stille sind kunne jeg ikke andet end råbe HURRA, så derfor skulle dette mirakel straks tages i brug. Til min rædsel måtte jeg konstatere, at REORG pludselig tog oceaner af tid, og at jeg konstant løb ind i B37-abends på SYSREC. Hvad pokker var der sket? Først konstaterede jeg, at mit tablespace var compressed, derfor måtte DB2 jo pakke alle rækkerne ud for at kunne validere rækkerne op mod de fravælgelseskriterier, jeg havde beskrevet sammen med DISCARD optionen. Dernæst fandt jeg ud af, at de unloadede rækker på SYSREC alle var i fuld længde på trods af en stor VARCHAR til sidst i rækken.
I manualen Utility Guide for DB2 V5 under REORG fandt jeg en option kaldet NOPAD, som beskriver, at de slettede rækker, der unloades, ikke paddes med blanke på VARCHAR felter. Umiddelbart har det jo ikke noget med sagen at gøre, men i min desparation måtte jeg jo prøve. Og mindsandten, mine B37 abends forsvandt som dug for solen og REORG'en kørte markant hurtigere, men stadig en del langsommere end før jeg indføre DISCARD.
Min konklusion er, at man skal tænke sig godt om, før man giver sig i kast med DISCARD på en REORG. Man skal under alle omstændigheder benytte NOPAD og hvis tablespacet er compressed, så må man forvente en noget dårligere elapsed tid. Og man skal nøje vurdere, om det er kvikkere at slette rækkerne med en traditionel DELETE. Og jeg tror også, at DB2 laboratorie folkene nemt kan forbedre brugen af option DISCARD på compressed tablespaces ved at unloade de blivende rækker til SYSREC i compressed format, når man benytter KEEPDICTIONARY, fordi det vil spare tid under den efterfølgende LOAD.