web-dev-qa-db-ja.com

トランザクションログファイルを別のドライブに配置すると、パフォーマンス上のメリットがありますか?

SQL Serverデータファイルを1つのハードドライブに配置し、トランザクションログを別のハードドライブに配置することのメリットを称賛する多くのブログ投稿とベストプラクティスの記事があります。理由は、トランザクションログにはシーケンシャルな書き込みしかありませんが、データベースファイルではランダムな読み取りと書き込みが発生するためです。

しかし、何百ものデータベースがある場合はどうでしょうか?数百のトランザクションログファイルを別のディスクに配置することには、パフォーマンス上のメリットがありますか?複数のトランザクションログが書き込まれている場合、トランザクションログの書き込みはデータベースの書き込みと同じくらいランダムになると思います。

9
8kb

正しい。理論的には、DBが数百ある場合、ログごとに1つ、数百のドライブが必要です。実際にはそのようなケースは気にしませんが、数百のDBがある場合、each DBに対して一流のTPCパフォーマンスを期待できないことは明らかです。多くの場合、高スループットと厳格なSLAを備えたDBがいくつかあり、それらをそれぞれ別のスピンドルに置くことができますが、多くのより低いレベルのSLAは少数の共有ディスクに詰め込みます。

7
Remus Rusanu

トランザクションログを単独で別のディスクに配置すると、他のデータ/ログファイルと一緒に配置するよりもパフォーマンスが向上します。すべてのログを同じディスクに配置すると、実際には順次IOではなく、これらのログファイル間でランダムにIOが実行されます。

2
StanleyJohns

トランザクションログはまさにそれです...すべてのトランザクションの実行中のログ。そのため、チェックポイントが設定されて上書きされるまで、または切り捨てられて上書きされるまで、一方向で継続的に埋められます。上書きは順次です。

データファイルを検討します。顧客レコードには、5年前の注文と10年前の注文が含まれる場合があります。これらの注文を削除すると(たとえば、データを別の場所にアーカイブしている場合)、現在のtlogには、削除1と削除2が含まれます。ただし、データファイルでは、5年前と10年前に書き込まれたブロックに触れています。

だからそれは確かに問題です:)

2
Eric Higgins