SQL Serverの推奨ディスク/パーティションセットアップ


14

SQL Server用にディスク/パーティションを設定する最良の方法に関するアドバイスを探しています。主な懸念事項の一部を次に示します。

SQLファイルをどのように分離する必要がありますか(データファイル、ログ、一時)?

多くのHDDをRAIDし、スペースをパーティションに分割するか、各RAIDに少ないディスクで複数のRAIDを作成する方が良いでしょうか?

データとログファイルは異なるRAIDタイプにあるべきですか?

デフォルトのデータベース(master、msdbなど)をC:に配置する必要がありますか、それとも他のデータ/ログファイルと同じ場所に配置する必要がありますか?

回答:


14

素晴らしいブログ記事はこちらです:http : //sqlserveradvisor.blogspot.com/2009/03/sql-server-disk-configuration.html

ディスクのアライメントに関するホワイトペーパー:http : //msdn.microsoft.com/en-us/library/dd758814.aspx

つまり、OSはRAID 1に、データファイルはRAID 10(できれば)に、ログファイルはRAID 1にある必要があります。

SQLパフォーマンスの記事:http : //www.sql-server-performance.com/faq/raid_1_raid_5_p1.aspx

トップ10の最高のパフォーマンスのヒントに関するPDF:http : //www.stlssug.org/docs/Best_Practices_for_Performance.pdf

また、パフォーマンス上の理由から、TEMPDBを別のディスクに置くことを忘れないでください。ポール・ランダルがここにやって来て、少し理由を思い浮かべるでしょう。

MSはtempdbの理由を述べています:http : //msdn.microsoft.com/en-us/library/ms175527.aspx


@SQLChicken:ドライブの種類に好みがある場合-> SATA vs SAS、推奨事項はありますか?SAS over SATA?(RAIDタイプなどに関係なく)。
Pure.Krome 2009年

1
お金があれば、SASドライブは速度と信頼性のためにSATAよりも優先されます。
SQLChicken

11

これは大きな「依存する」質問です。

私はストレージの専門家ではないので、個々のRAIDアレイの質問を作成する方法に答えることはできませんが、残りの部分についてはお手伝いできます。

最初に考慮する必要があるのは、さまざまなデータベースのワークロード-OLTP(読み取り/書き込み)またはDSS / DW(ほとんど読み取り)です。読み取り/書き込みワークロードの場合、RAID 1またはRAID 10(RAID 1 + 0)を検討する必要があります。これらは冗長性と優れた読み取り/書き込みパフォーマンスを提供するためです。ほとんどの読み取りワークロードでは、RAID 5を使用できます。RAID5を読み取り/書き込みワークロードに使用しない理由は、書き込みのパフォーマンスが低下するためです。

トランザクションログは、その性質上、読み取り/書き込み(または、ログバックアップやレプリケーションなど、トランザクションログを使用しているかどうかに応じてほとんど書き込みます)なので、RAID 5に配置しないでください。

つまり、一部のデータベースとワークロードでは、データファイルがRAID 5に、ログファイルがRAID 1/10に、他のデータベースではすべてがRAID 1/10にある場合があります。さらに進んで、パーティション化されたデータベースがある場合は、おそらく同じテーブル内であっても、読み取り専用データと読み取り/書き込みデータが含まれている可能性があります。これを個別のファイルグループに分割し、各ファイルグループを適切なRAIDレベルに配置できます。

実際のデータベースの分離は、ワークロード、および基盤となるIOサブシステムの機能に依存します。たとえば、個々のRAIDアレイに格納する場合は、SANよりも高い分離が必要になる場合があります。

Tempdbは通常、負荷の高いデータベースであり、他のデータベースとは別に保存する必要があるため、Tempdbはそれ自体が特別なケースです。システムデータベースは頻繁に使用しないでください。冗長性がある限り、どこにでも配置できます。

ここに、私が書いたホワイトペーパーへのリンクがあります。それはあなたを助けるべきです:Physical Database Storage Design。また、IOサブシステムが予想されるワークロードを処理できることを確認してください-このホワイトペーパー:展開前I / Oベストプラクティスを参照してください。最後に、正しいRAIDストライプサイズ(新しいシステムでは通常64K以上)、正しいNTFSアロケーションユニットサイズ(通常64K)を使用し、Windows Server 2008より前のシステムでは、ディスクパーティションオフセットを正しく設定します。 。これらの情報、およびそれらの詳細情報へのポインターと、このように構成する必要がある理由については、次のブログ記事を参照してください。ディスクパーティションオフセット、RAIDストライプサイズ、およびNTFSアロケーションユニットは正しく設定されていますか?

Bototmライン:ワークロードとIOサブシステムの機能を把握し、それに応じて実装します。

これがあなたのお役に立てば幸いです。

PS tempdbに関する限り、それは設定方法をめぐる大きなワームであり、あらゆる種類の矛盾する情報があります。TF 1118付近のMisconceptionsでtempdbデータファイルの構成に関する包括的なブログ記事を書きました。


素晴らしいポストポール:)
Pure.Krome 09年

1

私が設定したサーバーの短い答えは常に

RAID 1または10の個別の物理ディスクにログを記録します(ストライピング+ミラーリング)

独自のディスク上のデータベース、パフォーマンスのニーズに応じて通常RAID5

RAIDコントローラーのキャッシュがたくさん

できれば、OSとWindowsのページファイルを別のアレイ、通常は単にミラー(Raid 1)に貼り付けてください。これにより、すべての書き込み操作が分離されるため、パフォーマンスが高くてもすべてが引き下げられることはありません。

私が過去に経験したことは、データベース書き込み+ログ書き込み+ページファイル書き込みがあると、Raid5アレイが動かなくなり、パフォーマンスがハンドバスケットで完全に低下することです。問題は、テストや開発などでパフォーマンスが良好であることです。しかし、本番環境や使用状況が急上昇すると、この問題は「突然」現れ、ユーザーの苦情が急増します。


1

ここには私よりもはるかに優れたMSSQLの人がいますが、一般的には次のことをお勧めします。

OSおよびCのコード:-これはローカルディスクであり、RAID1アレイペアである必要があります-これには2 x 2.5インチSAS 146GB 10krpmディスクを使用しますが、2 x SATA 7.2ディスクを使用できます。データは、必要なサイズのかなり高速(10krpm以上)のRAID 1 / 10、5 / 50/6/60アレイ上にある必要があります。FCSAN LUN、通常は「ティア2」/ 10krpmディスクグループにデータを保持します。 。ログは別の非常に高速(15krpm)の小さな(10GB以下?)RAID 1アレイペアにある必要があります-私たちはFC SAN LUN、通常は非常に小さな「tier1」/ 15krpmディスクグループ、または「tier0」/ ssdグループ。

いずれにせよ、パフォーマンスのためにこれらの各チャンクを別々のスピンドル/アレイに配置する必要があります-もちろん、すべて単一のディスクで動作しますが、パフォーマンスとコストのバランスを求めていると思います。

master / tempdbは通常のデータベースと一緒に保存しますが、別のデータアレイLUNに分割することもできます。

お役に立てれば。


ログドライブが小さいことに関する興味深い点。これは書き込み速度の向上に役立ちますか?ログファイルドライブを、データが処理できる限り小さくすることをお勧めしますか?
ショーンハワット

私は専門家になるにはほど遠いですが、彼らは小さいままであると思うようです-あなたの走行距離は異なるかもしれません:)
Chopper3 09年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.