Qu'est-ce que le repérage à chaud dans le contexte de l'ajout de fichiers à tempdb?


12

J'essaie de savoir s'il est possible d'ajouter des fichiers tempdb à un serveur SQL sans avoir à redémarrer le service SQL Server. J'ai vu cette réponse ici sur les administrateurs de base de données:

Et une réponse dit:

AJOUTER - aucune interruption requise. Bien que, comme l'a souligné Sean de Microsoft, SQL préfère utiliser les fichiers les moins remplis. Si vous passez d'un fichier de données à un autre et que vous en ajoutez d'autres, SQL utilisera les nouveaux pendant un certain temps, mais vos performances ne seront pas pires que d'avoir un seul fichier. Cependant, si vous en avez déjà 2+ et que vous en ajoutez un de plus, alors il va créer un point chaud sur le nouveau et diminuer les performances.

Cependant, un commentaire met en garde les points suivants:

Je voudrais mettre un addendum sur la partie "Ajouter": "Ajouter: Non, mais vous serez très probablement déséquilibré, vous serez donc à chaud, ce qui pourrait aggraver les choses."

J'ai les questions suivantes à propos de ce commentaire, mais on m'a demandé de poser ces questions dans une nouvelle question de moi-même (celle-ci) plutôt que de demander au commentateur via un commentaire dans les réponses à cette question.

Plus précisément:

  1. Qu'est-ce que le repérage à chaud? (J'ai obtenu des informations via Google, mais pas en détail ce qui se passe avec le hotspotting sur tempdb après l'ajout de fichiers)
  2. Qu'en est-il des points chauds qui aggravent les choses dans tempdb?
  3. Quelles choses spécifiques dans la DB empireraient?

Réponses:


16
  1. Qu'est-ce que le repérage à chaud?

    "Repérage à chaud" dans ce contexte signifie que, même si tempdb a plusieurs fichiers, tout le travail d'E / S est effectué dans un seul fichier. Si tempdb est suffisamment occupé pour justifier l'ajout de fichiers, le déséquilibre qui conduit à un repérage à chaud (en raison d'un remplissage proportionnel ) sera de courte durée, donc je pense que les avertissements peuvent être un peu Chicken Little. D'après mon expérience, en tout cas.

  2. Qu'en est-il des points chauds qui aggravent les choses dans tempdb?

    Je pense que cela est considéré comme pire dans tempdb, car il prend une grande partie de l'activité d'écriture dans la plupart des charges de travail. Vous pouvez certainement souffrir de problèmes similaires dans les bases de données utilisateur, mais puisque vous essayez déjà de résoudre un problème dans tempdb ...

  3. Quelles choses spécifiques dans la DB empireraient?

    Écrire des temps, surtout. Imaginez que tout le monde essaie d'utiliser le même guichet automatique, même s'il y a 7 autres guichets automatiques à proximité. Seulement tant de choses peuvent être écrites à tout moment; tout le reste doit attendre. Avec plus de fichiers (et suffisamment de cœurs pour planifier le travail), les E / S peuvent être réparties plus uniformément.

    Assurez-vous juste:


10
  1. 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_*.

  1. 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.

  1. 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 waitresourcesur 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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.