web-dev-qa-db-fra.com

Plusieurs fichiers journaux de transaction et impact sur la performance

Donc, j'ai eu une discussion avec plusieurs personnes concernant le nombre de fichiers journaux de transaction. Les bases de données donnent des bases de données. J'ai vu plusieurs postes disant que vous ne devriez disposer que 1 fichier journal de transaction pour chaque base de données, rien dans des WhitePapers Microsoft. Cependant, dans de nombreux cas, j'ai vu que l'augmentation du nombre de fichiers journaux de transaction pour une base de données donnée améliorera réellement les performances de l'écriture à la base de données. Je dois noter que toutes ces bases de données sont en pleine récupération et utilisent un grand SAN pour le sous-système d'E/S. Si autant de messages disent que la transaction écrit tout se produisait en série. au fichier unique jusqu'à la fin du fichier est atteint, les écrivies se déplacent sur le fichier journal suivant, pourquoi augmenterait-il que le nombre de fichiers journaux finissez-vous avoir une amélioration très notable de la vitesse d'écriture sur le disque? Dans le plus récent cas, nous avons vu IO Sauter de 700 Kb/s à plus de 60 Mo/s en augmentant le nombre de fichiers journaux de 1 à 8. Toute entrée être apprécié.

5
MBulava

Les écritures de journal de transaction sont séquentielles. Seul un des fichiers journaux sera jamais Soyez écrit à une heure à une fois, de disposer de plusieurs fichiers - en soi - ne peut pas changer vos motifs d'E/S pour cette base de données.

Sauf si vous avez de la chance. Par exemple, vous avez ajouté un deuxième fichier journal à un disque SSD ou autrement plus rapide ou moins occupé, ou divisez les fichiers journaux sur plusieurs disques et les avez effectuées pour plusieurs bases de données, et vous obtenez de meilleurs E/S maintenant parce que le journal est passé à ce fichier sur le disque plus rapide ou est plus isolé de vos autres fichiers de données/journaux. En d'autres termes, je crois que toute différence d'E/S observée est entièrement due à d'autres facteurs et est simplement une coïncidence, non due au fait que vous avez ajouté des fichiers journaux. SQL Server est explicitement conçu pour uniquement utiliser un fichier journal à la fois. Comment plusieurs fichiers journaux peuvent-ils éventuellement améliorer les performances d'écriture du journal, à moins que le fichier journal actuel soit sur un disque plus rapide/plus isolé? Je pense que vous devez fournir de meilleures preuves empiriques (et vous pouvez découvrir pour vous-même la véritable cause de la performance améliorée).

Veuillez lire ces messages en totalité - ils ont été rédigés par un joli gars intelligent qui a travaillé sur l'équipe de stockage SQL Server depuis un certain temps, alors je ne pense pas qu'il fait de cette autre chose pour s'amuser:

Aussi Kimberly Tripp touche cela dans un article valable:

Notez qu'aucune des 8 étapes ne concerne l'ajout d'un fichier journal de transaction. En fait, elle recommande contre elle.

Il existe d'autres périls à avoir plusieurs fichiers journaux, en particulier s'ils sont grands (pensez à RTO) - et il n'y a vraiment rien à gagner.

8
Aaron Bertrand

Vos pensées initiales étaient correctes: il n'y a aucun avantage à avoir plusieurs fichiers journaux de transaction. SQL Server utilise les journaux de transaction séquentiellement, non simultanément.

pourquoi augmenterait-il que le nombre de fichiers journaux finissez-vous avoir une amélioration très notable de la vitesse d'écriture sur le disque?

Ce ne serait pas. Il doit simplement être un autre facteur impliqué qui n'a pas été comptabilisé (c'est-à-dire que vous appuyez simplement sur des transactions plus enregistrées pour le débit supérieur, ce qui entraîne un débit plus élevé. Des fichiers journaux de transaction ajoutés sur un stockage plus rapide que le fichier journal unique, provoquant le fichier journal de transaction en cours dans le test multiple pour effectuer la sortie de la transaction unique dans le test initial?).

La seule fois où il serait logique d'avoir plus d'un fichier journal de transaction serait pendant une situation d'urgence où vous avez besoin de plus d'espace de journal de transaction et que le journal de transaction unique actuel ne peut pas augmenter (volume hors de l'espace, etc.). Dans ce cas, cela vous mènera dans le claire, mais avoir plusieurs journaux de transaction serait un très état temporaire. Il serait sage de nettoyer cela et revenez à un seul journal de transaction dès que possible dans une situation comme celle-là.

3
Thomas Stringer