La Documentation Reorg dit:
[~ # ~] Construire [~ # ~ #]
Builds indexes. Updates index statistics.
Mais j'ai toujours entendu des reorg/runstats comme si elles devaient être jumelées. Quelqu'un peut-il vérifier que "Mises à jour des statistiques de l'index" atteint la même chose que les runstats?
REORG
est utilisé pour aider DB2 Pointe à des données précises (c.-à-d. Les index doivent prendre conscience des données fraîches et n'incluent plus les données supprimées), ainsi que "Collapse" espace de page vide créée par suppression des données et/ou index. Il peut également aider à déplacer les données qui se rapprochent les unes des autres pour un accès plus efficace (en particulier le vrai dans le cas d'un indice de cluster).
RUNSTATS
est utilisé pour aider à recueillir des statistiques mises à jour sur le volume et/ou la distribution des données dans les tableaux et les index. Ces informations sont stockées dans les tables système et sont utilisées par de nombreuses choses, y compris l'optimiseur pour déterminer le chemin optimal pour interroger les données. Ceci est particulièrement vrai car les données grandissent. Les données peuvent distribuer de manière à ce que l'optimiseur incluait désormais un indice qu'il n'avait pas auparavant dans son chemin d'accès (ni vice-versa et choisit de ne pas utiliser d'index). RUNSTATS
peut également affecter comment un REORG
fonctionne - au moins dans les versions plus anciennes de DB2.
Basé sur ce que j'ai lu depuis DB2 DBA, vous voulez généralement courir
RUNSTATS
REORG
RUNSTATS
Le premier RUNSTATS
aide le REORG
pour fonctionner de manière appropriée et efficace. Le RUNSTATS
Après plus de vous assurer que les statistiques sont maintenant précises, compte tenu de tout le mouvement de données autour des pages. Selon l'endroit où vous avez lu, vous pouvez voir la mention de DBA Le dernier RUNSTATS
n'est plus nécessaire avec de nouvelles versions de DB2. Comme nous n'avons pas vu des réponses définitives à ce sujet et, depuis la plupart des DB2 DBA, j'ai entendu parler de la commande ci-dessus, notre société a choisi d'utiliser cet ordre (pour le compte rendu, nous sommes sur DB2 LUW 9.7 FP4 et nous prévoyons de migrer vers V 10.1 Un jour l'année prochaine).
De plus, juste pour des raisons d'exhaustivité, généralement lorsque vous mettez à jour les statistiques et que vous affectez l'optimiseur, vous souhaitez que toutes les applications appellent à DB2 pour s'assurer qu'ils tirent parti de ces nouvelles optimisations. Ainsi, un REBIND
de packages veillera à ce que les packages statiques connaissent les statistiques mises à jour et les chemins de requête optimisés et un FLUSH PACKAGE CACHE DYNAMIC
Nettoie les requêtes dynamiques des choses comme Hibernate, de sorte que les requêtes seront rebondies avec les chemins de requête mise à jour. (-[~ # ~] note [~ # ~]]: sur z/os je vois que vous avez BIND
et REBIND
options. Peut-être que le FLUSH PACKAGE CACHE DYNAMIC
est sous celles-ci ou a un nom différent sur z.)
Donc, finalement je ferais ce qui suit:
RUNSTATS
REORG
RUNSTATS
REBIND
paquetsFLUSH PACKAGE CACHE DYNAMIC
(sur LUW) ou quel que soit l'équivalent sur z/os.Si vous exécutez DB2 sur IBM I, tout cela serait manipulé pour vous. Les index sont maintenus en temps réel. Les statistiques sont mises à jour automatiquement. Les plans sont optimisés de manière dynamique.