Y a-t-il un avantage en termes de performances à placer des fichiers journaux de transactions sur un lecteur séparé?

9

Il existe de nombreux articles de blog et meilleures pratiques vantant les avantages de placer le fichier de données SQL Server sur un disque dur et le journal des transactions sur un autre. La raison invoquée est que le fichier de base de données subira des lectures et des écritures aléatoires alors que le journal des transactions n'aura que des écritures séquentielles.

Mais que faire si vous avez des centaines de bases de données? Y a-t-il un réel avantage en termes de performances à placer des centaines de fichiers journaux de transactions sur un disque séparé? Si plusieurs journaux de transactions sont écrits, alors je pense que les écritures du journal de transactions seraient tout aussi aléatoires que celles de la base de données.

8kb
la source

Réponses:

7

Correct. En théorie, si vous disposez de 100s de bases de données, vous avez besoin de 100s de disques, un pour chaque journal. En pratique, bien que l'on ne se soucie pas d'un tel cas, car lorsque vous avez des centaines de bases de données, vous ne vous attendez évidemment pas à des performances TPC de premier ordre pour chaque base de données. Vous aurez probablement des bases de données à haut débit et des SLA rigoureux et vous pourriez les avoir chacune sur des broches distinctes, tandis que les nombreux SLA de niveau inférieur s'entassent sur quelques disques partagés.

Remus Rusanu
la source
2

Le journal des transactions est exactement cela ... un journal de toutes les transactions. En tant que tel, il se remplit en continu dans une seule direction jusqu'à ce qu'il soit contrôlé et écrasé, ou tronqué et écrasé. L'écrasement est séquentiel.

Considérez vos fichiers de données. Un enregistrement client peut contenir une commande d'il y a 5 ans et une d'il y a 10 ans. Si vous supprimez ces commandes (par exemple, vous archivez des données ailleurs), dans le journal actuel, vous avez supprimé 1 et supprimez 2, dans l'ordre. Cependant, dans vos fichiers de données, vous avez touché des blocs qui ont été écrits il y a 5 et 10 ans.

Donc, ça compte à coup sûr :)

Eric Higgins
la source
2

Le fait de placer le journal des transactions sur un disque séparé vous donnera de meilleures performances que de le placer avec d'autres fichiers de données / journaux. Si vous placez tous les journaux sur le même disque, vous n'effectuez pas réellement d'E / S séquentielles, mais des E / S aléatoires entre ces fichiers journaux.

StanleyJohns
la source