SQL Server 2008R2の最適なドライブ構成


19

SQL Server 2008 R2を実行している次のセットアップを備えたかなり忙しいデータベースサーバーがあります。

  • SATA RAID 1(2ドライブ)-OS /プログラム
  • SAS RAID 10(4ドライブ)-SQLデータベースファイル(データとログ)
  • SAS RAID 1(2ドライブ)-TempDB(データとログ)

このサーバーにドライブを追加できないと仮定して、利用可能な構成を最大限に活用しましたか?または、たとえばログをデータファイルから分離する別のスキームを検討する必要がありますか?

更新:

ハードウェアの詳細をさらにリクエストした場合:

  • SATAドライブ(OS /プログラムパーティションに使用)は次のとおりです。WD 7200 RPM 3 Gb / s 3.5インチSATA
  • 他のアレイで使用されるSASドライブは次のとおりです。Seagate 15K RPM 6 Gb / s 3.5インチSAS
  • 使用されるRAIDコントローラーは、LSI 9260-8i SAS / SATA 6 Gb 8ポートです。

アップデート2:

私が受け取ったフィードバックに基づいて、選択可能な次の実行可能なオプションがあるように見えます-私が概説した環境で最高である可能性高いことを教えてくれる人に賞金を授与します:

  1. すべてをそのままにしておきます-私はおそらくあまり良くはしません
  2. 2台のSAS RAID 1ドライブを既存のRAID 10アレイに移動して、合計6台のディスクで構成する
  3. ログファイルをSAS RAID 1に移動するか、TempDB(データまたはログ)をRAID 10に再配置する

2回目の更新では、元の質問とまったく同じ質問が行われるため、元の回答が適用されます。「...これは、私が概説した環境で最高の可能性が高い」...ワークロードの分析は表示されておらず、「かなり忙しい」だけなので、同じ答えが当てはまります。
マークストーリースミス

高性能NVMeおよび他のSSDの市場では、RAIDはSQLサーバーのディスク構成のベストプラクティスの観点からはもはや重要ではありません。ディスクプール(ストレージスペース)は前進する方法です。ただし、ディスク関連のパフォーマンスの問題をより適切にトラブルシューティングするには、ボリュームを論理的に分離する必要があります。
ITの顔

回答:


14

この質問のバリエーションは、半定期的に発生します。

また、データ/ログ分離の「ベストプラクティス」について、たまにバンズファイトがあります。

このサーバーが実行していることをより詳細に分析しなくても、前述と同じアドバイスが適用されます。

  • OS用RAID 1
  • data / logs / tempdb用のRAID 10(6ディスク)

スプリットには、使用可能なスピンドルがほとんどないポイントはほとんどありません。IOPの容量が大きい単一のアレイは、通常、2つの小さいアレイよりもワークロードの塊を吸収します。

テストに値する可能性がある1つのバリアントは、tempdbをOSドライブに配置することです。繰り返し再生できる代表的なワークロードがある場合にのみ行って、構成の公正な比較を確認してください。本番環境でこの配置を行う場合は、tempdbの成長が制限されていることを確認して、OSドライブのすべての空き領域を誤って消費しないようにしてください。

OSドライブが7200RPMコースターであることを考えると、OSドライブ構成のtempdbに何らかの利点があるとしたら驚きです。


7

すべてはワークロードに依存しますが、ドライブが6つしかないため、オプションが制限されます。ワークロードが、並べ替え、ハッシュテーブル、スナップショットの分離などについてtempdbに大きく依存していない場合は、RAID 10で6つのSASドライブを一緒に使用した方がよい場合があります。 tempdbは頻繁に使用されるため、必要に応じて分離しておく必要があります。


答えてくれてありがとう、範囲の構成を変更することは(残念ながら)このサーバーは実稼働中なのでオプションではありません。tempdbをRAID 10に戻し、すべてのログファイルをRAID 1に置くことに興味があります-これは賢いオプションですか?
DanP

2
SQL Serverでは、コミットの一部としてすべてのトランザクションをログに物理的に書き込む必要があるため、構成内で可能な限り高速な書き込みパフォーマンスが必要になることに注意してください。RAID 10はRAID 1よりも優れた書き込みパフォーマンスを提供するため、ログを高速なボリュームに残します。
パトリックケイスラー

2

「非常に忙しい」という意味に大きく依存します:さまざまなワークロードパターン(重いかどうか、一般的なバルク操作かそうでないか、同時アクセスのレベル、多くの変数のうち3つを指定)が、特定のスピンドル配置のパフォーマンス。

ログをデータから分離する書き込みが多い状況では、書き込みごとにログとデータファイルの両方が更新されるため、両方のファイルセットが同じスピンドルセットにある場合、かなりの量の余分なヘッドフリッピングが発生するため、大きな違いが生じる可能性があります。

ワークロード(およびそれらのドライブとそれらとマシンの間にあるコントローラーの仕様)をさらに参照することなく、3つのボリュームに行きたいと思います。1つはOS +プログラム用、1つはメインDB用です。データ、およびログ用の3番目(tempdbとメインDBの両方)。

もちろん、ワークロードがすべて書き込み操作に非常に軽い場合は、パフォーマンスの差はほとんどなく、ボリューム全体を専用にすることは非常に無駄になるため、データとログを別々に保持することを心配するのに時間をかけすぎないでくださいスペース。


私たちの環境は確かに「重い書き込み」環境であると説明します-月曜日に質問をより詳細なハードウェア仕様で更新します。
DanP

OPが持っているドライブの数について何か考えはありますか?私は彼がログファイルのために持っているRAID 1についてもっと考えています。...書き込みの目的のための偉大なオプションのような音はありませんし、私の知る限りログファイルは限ら読まれていないが、書き込みいる
マリアン

マシンのハードウェアに関する仕様を追加しました。
DanP

1
この誤解は、多くのデータ/ログ分離の暴言の根源にある可能性があるため、おaび申し上げますが、これについてはお話しします。「...書き込みごとにログとデータファイルの両方が更新されるため」-いいえ、そうではありません。データページへの書き込みは、すべての変更ではなく、チェックポイントで発生します。
マークストーリースミス

1
@DavidSpillett確かに、分割が有益な場合は常にあります。重要なのは、構成がその特定のワークロードにとって有益であることをテストして検証したことです。
マークストーリースミス

2

実際の答えはニーズによって異なりますが、一般に「データを配置して異なるアレイに記録する」ことは「tempdbを独自のアレイに配置する」よりも重要です。

利用可能なドライブの数を考えると、私の出発点は次のとおりです。

  1. 2つのドライブ、RAID 1-オペレーティングシステム、実行可能ファイル、ページファイル。
  2. 4つのドライブ、RAID 5-すべてのデータファイル(またはRAID 1 + 0)
  3. 2つのドライブ、RAID 1-すべてのログファイル

SQLIOを使用して、さまざまなドライブ構成のパフォーマンスをテストする必要があります。


これは間違いなく、私が読んだアドバイスの「反対側」を表しています。実稼働環境で「試してみる」ことなく、どのオプションがより良いかを決定する決定的な方法があればいいのにと思います。
DanP

2
@DanPまあ、個人的にはMarkのアドバイスを聞き、残りのドライブ(OSを除く)でRAID10を選んだでしょう。ログファイルは書き込み集中型であり、私が考える限り、RAID 1が提供するよりも優れたパフォーマンスが必要です。しかし、私はハードウェアの専門家ではありません。ちょうど2セントです。
マリアン

2
私の意見は、より良いサーバーへの過去(種類)の移行が失敗したが、パフォーマンスが低下したという経験からのみ得られることを言及する必要があります。この新しいサーバーで実際の負荷をテストしたことはありませんでした。チャンスがなく、サーバーの準備が整っていませんでした。実稼働環境に移行する前のサーバーテストは必須です。強調してすみません。したがって、すべての移行/アップグレードに関する私のスローガンは、TEST、TEST、TEST、...可能な限りテストをひどくすることです。
マリアン

1
RAID 5またはSQLIOSIMのどちらで開始するかわからない...前者が語るように、後者を使用しましょう。SQLIOSIMは、正確性およびストレステストのツールであり、パフォーマンスまたは負荷のテストツールではありません。ワークロードZのconfig-Xとconfig-Yのパフォーマンスを比較する場所はまったくありません。SQLIOSIMの実行でconfig-Xがconfig-Yに対してどれだけうまく機能するかがわかります。ワークロードZのパフォーマンスを比較する場合は、ワークロードZをテストします。
マークストーリースミス

1
@GreenstoneWalker「RAID1はRAID1 + 0よりも書き込みが高速です」はナンセンスです。このアイデアはどこから来たのですか?
マークストーリースミス

-1

DBの使用目的(OLTPとウェアハウス)に応じて、構成は一般的な構成のように見えます。より多くのディスクがある場合、より多くのオプションがあります。

TempDBのディスクをRAID 0(ストライプ)に切り替えると、パフォーマンスが向上する可能性があります。障害のリスクが高まりますが、TempDBはデータをバッファリングするだけなので、データの損失は発生しません。そのため、ほとんどの人はそれを合理的なトレードオフだと考えています。予備のスペア(またはホットスペア)を保管してください。

言及していないが、試してみてください(まだ行っていない場合):Microsoftは、TempDBを複数のファイル(CPUごとに1つ)に分割することをお勧めします。もちろん、それらが別々のディスク上にあるのが最善ですが、単に別々のファイルを持っていると役立ちます。 http://msdn.microsoft.com/en-us/library/ms175527(v=SQL.105).aspx


4
Tempdbは多くの用途に使用されますが、使い捨てデータベースとして扱わず、RAID 0に配置しないでください。RAID0ボリュームに障害が発生すると、SQL Serverは起動できなくなります。
パトリックケイスラー

提案どおりコアごとに1つの一時データベースを作成しましたが、そのポイントを上げてくれてありがとう:)
DanP

1
さて、これらの提案はあまり良くなく、すべての環境に適しているわけではありません。最初のものは、以前に@PatrickKeislerによって言及されました。2つ目は、ポールランダルが先ほど明らかにした神話です。記事はこれです:SQL Server DBA神話1日:(12/30)tempdbには、プロセッサコアごとに常に1つのデータファイルが必要です。したがって、MSのドキュメントは間違っている可能性があります。
マリアン

2
「TempDBはデータをバッファリングするだけなので、データの損失は発生しません」...システムのユーザーは、X時間のダウンタイム中に苦労することを理解するでしょう。交換ディスクまたはb)DBAは、携帯電話からtempdbを移動する方法をヘルプデスクに説明しようとします。
マークストーリースミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.