Question

Nous travaillons avec DB2 LUW (en particulier nous sommes actuellement sur 9,7 FP4) en cours d'exécution sur AIX.

Selon les meilleures pratiques d'IBM, ils recommandent que lorsque vous construisez un tableau, vous placez les données, les index et les lobs / données longues chacune dans leur propre espace de table. (La raison est un meilleur contrôle sur le disque, la maintenance, les sauvegardes, etc.)

Les espaces de table doivent être associés aux tampons. À l'heure actuelle, la plupart de nos tables et index s'insèrent dans des tampons et des espaces de table 4K.

Normalement, avec nos scripts, nous avons configuré un tampon 4K BP4K. Nous avons ensuite configuré au moins deux espaces de table 4K (comme nous n'avons pas beaucoup de lobs): TS_DAT_4K pour les données et TS_IND_4K pour les index. Par défaut, nous venons d'attribuer ces deux espaces de table à BufferPool BP4K.

Ce que je me suis demandé: puisque les index sont dans leur propre espace de table, devraient-ils également recevoir leur propre tampon?

Ma raison de me demander cela est basé sur l'optimisation. Si les index ont leur propre tampon, ils sont plus susceptibles de rester en mémoire (plutôt que d'être poussés hors de la mémoire en raison des enregistrements de table en cours de lecture). Cela permettrait une numérisation plus rapide des index pour trouver les enregistrements dans les tableaux. Et comme les index ne partageraient plus le même tampon avec les tables, davantage de tables peuvent désormais rester en mémoire pour la récupération logique par rapport à une lecture physique. Je pensais donc que cela réduirait les E / S physiques et aiderait ainsi aux performances / maintenance de la base de données.

Je ne peux pas m'empêcher de m'empêcher de me demander si c'est juste une pré-optimisation, ce qui est 99% du temps une mauvaise chose à faire, en introduisant des frais généraux supplémentaires, etc. (d'autant plus que nous n'avons pas identifié que nous avons besoin de tampons séparés encore basés sur sur les performances actuelles. Bien sûr, l'application en cours de développement n'est pas encore en production non plus et a toujours besoin d'un réglage de la base de données ....)

Des pensées à ce sujet? Est-ce une meilleure pratique? Ou tout simplement pré-optimisation et trop pensée?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top