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ètre | Type | Par défaut | Signification |
|---|---|---|---|
QRO_HASH |
VARCHAR(8) | NULL | Hachage de l'optimiseur de requêtes (QRO) |
PLAN_IDENTIFIER |
DECIMAL(20, 0) | NULL | Identifiant du plan |