Nous voyons des types d'attente PAGELATCH_EX et PAGELATCH_SH très élevés ainsi que des attentes WRITELOG élevées. J'ai diagnostiqué la requête à l'origine des attentes PAGELATCH et je peux les éliminer en réduisant le taux d'insertion dans une clé primaire en cluster occupée définie avec une valeur IDENTITY. Je comprends que ce phénomène est connu sous le nom de conflit de verrouillage d'insertion de dernière page.
Cependant, ma question est lorsqu'un nouvel enregistrement est inséré, SQL Server prend-il un PAGELATCH_EX exclusif sur une page tampon, insère-t-il l'enregistrement dans la page tampon, écrit-il l'enregistrement dans le journal des transactions , puis libère le PAGELATCH_EX exclusif comme détaillé https: // www.microsoft.com/en-ie/download/details.aspx?id=26665 page 24. Ou écrit-il d'abord l'enregistrement dans le journal des transactions avant de prendre le PAGELATCH_EX comme détaillé "Résolution du conflit PAGELATCH sur les charges de travail INSERT hautement concurrentes" - Informations générales SQLCAT's Guide to: Relational Engine
Si l'enregistrement est écrit pour se connecter en dehors du mécanisme de verrouillage, je peux exclure les écritures lentes sur le disque comme cause d'attentes PAGELATCH élevées. Mais si le verrou est maintenu jusqu'à ce que l'enregistrement soit durci, je devrais probablement prendre WRITELOG en considération.
De plus, le fait d'avoir plusieurs index non clusterisés entraînerait le maintien du verrou PAGELATCH_ * plus longtemps, c'est-à-dire si une table a un cluster et que plusieurs index non clusterisés sont des verrous ajoutés et libérés simultanément dans chacune des pages de tampon d'index?
Mise à jour 1 Après avoir lu confio-sql-server-writelog-wait, diapositive deux et architecture WAL générale. Je comprends maintenant que l'étape "Enregistrer une entrée de journal que la ligne a été modifiée" détaillée dans les deux livres blancs fait référence à SQL Server qui enregistre une modification dans le cache du journal des transactions, pas sur le disque. Une fois la transaction terminée ou le tampon plein, tous les enregistrements sont immédiatement vidés sur le disque.