web-dev-qa-db-ja.com

SQLServerのディスクアーキテクチャ

SQL Server 2017 Always-Onシステムを使用して新しい環境を構築しています。

これは24時間年中無休でアクティブになり、たくさんのDMLプロセスがあります。

OS用に100GB SAS、データ用に1TB SAS、TempDBとログファイル用に1TB SSDディスク)があります。

  • C:/-100GB-SAS
  • D:/-1TB-SAS-データファイル
  • E:/-1TB-SSD-ログ/ TempDBファイル

上記の構造は、ベストパフォーマンス/ベストプラクティスに対して正しいですか?または、Log/TempfileをDatafilesではなくSASに変更する必要がありますか?

単一の本番データベースの場合、いくつのデータファイルとログファイルを作成する必要がありますか? 1つのデータファイルと1つのログファイルがベストプラクティスですか?

2
S. Doe

ストレージの観点のベストプラクティス:

  1. Data、Log、Tempdb用に別々のドライブを用意します。 Tempdbは非常にアクティブであり、常に良好なIOPSを必要とするため、ログファイルとTempdbファイルを同じドライブに保持しないでください。したがって、Tempdb用に別のドライブを追加します。
  2. 可能であれば、データファイルもSSDに保存します。これにより、データベースの読み取り/書き込みが非常に多い場合にパフォーマンスが向上します。
  3. インスタントファイル初期化を有効にします。

また、単一の本番データベースの場合、どのくらいのデータファイル/ログファイルを作成する必要があるかを尋ねたいと思います。 1つのデータファイルと1つのログファイルがベストプラクティスですか?

複数のログファイルを追加しても、ログは順番に実行されるため、パフォーマンスは向上しません。 Paul Randalは すばらしいブログ記事 ここで、複数のログファイルがあなたにとって悪い理由を証明しました。

データファイルでは、1つのmdfファイルで十分です。データベースが巨大になる場合は、後でファイルグループパーティションに移動します。完全に予測不可能なユーザーデータベースに複数のデータファイルを追加すると、パフォーマンスが向上する場合と向上しない場合があります。Paulの別のブログ ここをクリック 彼がこれに答えています。私の環境では、スペースが不足し、データを別のドライブに転送するために追加の.ndfを追加する必要がない限り、単一のデータファイルのみを使用します。

以下は、Microsoftドキュメントの抜粋です。

ストレージ

次の場合は、別のディスクまたはディスクパーティションを使用します。

  1. Windowsオペレーティングシステム。
  2. システムデータベースのデータファイル。
  3. システムおよびユーザーデータベースのログファイル。
  4. TempDBデータベースのデータとログファイル。

最適な読み取り/書き込みパフォーマンスを得るには、SQLServerデータファイルに使用されるディスクが64KBのブロックサイズを使用してフォーマットされていることを確認してください。

Microsoftドキュメント

2