Aller au contenu

Service SQL IBM i (AS/400) · Procédure

QSYS2.CLEAR_PLAN_CACHE

Vider le cache de plans SQL

Vide le cache de plans SQL (plan cache) de Db2 for i, en entier ou pour un seul plan, afin de forcer l'optimiseur à reconstruire ses plans d'accès.

À quoi ça sert

La procédure QSYS2.CLEAR_PLAN_CACHE supprime les plans d'exécution mémorisés par le moteur de requêtes SQL (SQE). À l'appel suivant, chaque requête est réoptimisée et son plan est reconstruit. On l'utilise surtout en test de performance, pour repartir d'un état propre, ou après un changement important de statistiques ou d'index.

Sans paramètre, tout le cache est vidé. Les deux paramètres facultatifs QRO_HASH (hachage de l'optimiseur) et PLAN_IDENTIFIER (identifiant du plan), tous deux à NULL par défaut, permettent de viser un plan précis plutôt que l'ensemble.

La procédure n'a pas de mode aperçu (PREVIEW) : l'effet est immédiat. L'exemple IBM l'exécute dans un travail soumis, via QCMDEXC et SBMJOB, pour ne pas bloquer la session.

Résultat réel sur un IBM i 7.5

Procédure non exécutée sur notre IBM i de test : elle agit sur la configuration du système ou sur d'autres travaux.

L'exemple d'IBM

Vider l'intégralité du cache de plans.

-- Description: Clear the entire plan cache 
   CALL QSYS2.QCMDEXC('QSYS/SBMJOB CMD(QSYS/RUNSQL SQL(''CALL 
        QSYS2.CLEAR_PLAN_CACHE()'') COMMIT(*NONE) NAMING(*SQL))');

Bon à savoir

Vider tout le cache d'un système en production oblige toutes les requêtes à se réoptimiser en même temps et fait perdre l'historique des plans. Avant de le faire, photographiez-le avec DUMP_PLAN_CACHE pour pouvoir analyser ce qui s'y trouvait.

Paramètres

ParamètreTypePar défautSignification
QRO_HASH VARCHAR(8) NULL Hachage de l'optimiseur de requêtes (QRO)
PLAN_IDENTIFIER DECIMAL(20, 0) NULL Identifiant du plan