Aller au contenu

Recette SQL IBM i (AS/400) · Base de données

Les tables qui ont le plus d'enregistrements supprimés (RGZPFM)

Les tables qui ont le plus d'enregistrements supprimés, en nombre et en pourcentage : les candidates à un RGZPFM.

Le besoin

Un fichier physique garde la place de ses enregistrements supprimés, sauf s'il réutilise l'espace (REUSEDLT). À la longue, la moitié du fichier peut être vide.

La requête

SELECT TABLE_SCHEMA, TABLE_NAME, NUMBER_ROWS, NUMBER_DELETED_ROWS,
       DECIMAL(100.0 * NUMBER_DELETED_ROWS / NULLIF(NUMBER_ROWS + NUMBER_DELETED_ROWS, 0), 5, 1) AS POURCENT_SUPPRIMES,
       DECIMAL(DATA_SIZE / 1048576.0, 15, 2) AS TAILLE_MO
FROM QSYS2.SYSTABLESTAT
WHERE TABLE_SCHEMA = 'QGPL' OR TABLE_SCHEMA = 'JOBISQL'
ORDER BY NUMBER_DELETED_ROWS DESC
FETCH FIRST 10 ROWS ONLY

QSYS2.SYSTABLESTAT donne le nombre de lignes (NUMBER_ROWS) et de lignes supprimées (NUMBER_DELETED_ROWS) de chaque table. Le NULLIF évite la division par zéro.

Le résultat sur un IBM i 7.5

Ce que l'IBM i a renvoyé le 01/10/2026 (5 lignes au plus) :

TABLE_SCHEMA Bibliothèque de la table TABLE_NAME Nom de la table NUMBER_ROWS Nombre d'enregistrements NUMBER_DELETED_ROWS Nombre d'enregistrements supprimés POURCENT_SUPPRIMES Enregistrements supprimés (%) TAILLE_MO Taille (Mo)
JOBISQL CLIENT 4 1 20 0.17
JOBISQL CLIENT2 4 0 0 0.17
JOBISQL CURSEURS 1 0 0 0.01
JOBISQL PCPROP 58 0 0 0.01
QGPL ABOS 10 0 0 0

Sur notre table de démonstration CLIENT, une suppression pour cinq lignes : 20 % d'espace perdu, insignifiant ici, mais c'est le principe.

Données anonymisées : les noms de système, de profils, de bibliothèques, de postes et les adresses IP ont été remplacés.

L'adapter à votre système

Gardez les tables au-delà de 20 ou 30 % de supprimés et d'une certaine taille, puis lancez RGZPFM hors des heures de production (ou ALWCANCEL(*YES) pour une réorganisation en ligne).