- Qu'est-ce que le repérage à chaud?
Aaron a raison et je ne vais pas répéter ce qu'il a dit ci-dessus, mais il ne s'agit pas uniquement d'E / S disque. La partie principale avec laquelle la plupart des gens ont des problèmes avec TempDB est due à des conflits sur certaines structures de suivi.
Étant donné que le fait d'avoir plusieurs fichiers tempdb permet aux algorithmes de remplissage proportionnel et de tourniquet de se dérouler efficacement en étant «équitables» entre les allocations, l'ajout d'un nouveau fichier sans allocations le désactive un peu. Je ne suis pas d'accord pour dire que c'est un avertissement "petit poulet" (voir les mises à jour du produit ci-dessous) si vous commencez à voir des PAGELATCH_*
attentes sur ledit nouveau fichier et pas beaucoup ou pas sur d'autres fichiers. Cela se produit généralement sur les systèmes qui ont une activité TempDB élevée et qui ont déjà plusieurs fichiers.
Veuillez noter qu'il existe des options dans SQL Server 2019 pour changer certaines des tables système sous-jacentes en tables en mémoire, ce qui peut présenter une amélioration car les objets en mémoire sont alloués différemment des tables créées sur disque. Les tables sur disque sont les tables traditionnelles avec lesquelles nous avons tous travaillé au fil des ans. SQL Server 2014 a introduit des tables optimisées en mémoire . SQL Server 2019 peut gérer certaines métadonnées d'allocation dans des tables à mémoire optimisée.
Une autre modification a été apportée à SQL Server 2019 pour faciliter les modifications PFS simultanées, ce qui est généralement le cas des conflits liés à la structure en mémoire dans l'allocation PAGELATCH_*
.
- Qu'en est-il des points chauds qui aggravent les choses dans tempdb?
Rien à mon humble avis. Oui, TempDB a plus d'éléments qui peuvent provoquer des écritures sans être utilisés directement, ce qui peut gêner certains éléments. Cependant, une base de données d'utilisateurs très chargée en termes de taux de changement de données est tout aussi mauvaise. Cela ne se limite pas à TempDB.
- Quelles choses spécifiques dans la DB empireraient?
J'aime vraiment l'analogie d'Aaron! C'est l'essence de ce qui se passe. Ce qui empire vraiment, c'est l'allocation et le suivi de l'espace pour les objets dans la base de données. Si votre base de données utilisateur est principalement statique (faible taux de changement) ou que votre TempDB n'est pas vraiment utilisée, vous ne remarquerez rien. Si, cependant, c'est un serveur assez occupé, vous pouvez démarrer ou exacerber les attentes de pagelatch, ce qui pourrait entraîner le blocage des convois.
Aaron a déjà souligné que sur l'ancienne version, il existe des indicateurs de trace pour s'assurer que des extensions uniformes sont utilisées et que tous les fichiers d'un groupe de fichiers grandissent ensemble (Aaron souligne 1117 et 1118 qui sont des NOP en 2016+). L'autre chose que je voudrais souligner à nouveau, c'est que ce n'est pas seulement pour TempDB mais pour n'importe quelle base de données, et la disposition physique doit être réfléchie en fonction des besoins.
Ce n'est pas seulement pour les problèmes de points chauds, mais est applicable à d'autres parties du système telles que la sauvegarde / restauration, la gestion des fichiers, la fragmentation des métadonnées du système de fichiers, etc., qui peuvent toutes être aidées en ayant plusieurs fichiers.
Vous pouvez voir le conflit de structure d'allocation en recherchant un waitresource
sur une page PFS (qui est la page 1, puis toutes les 8088 pages). Si vous voyez que tout dans le même fichier (2: fichier: page), alors vous savez que cela se produit.