web-dev-qa-db-ja.com

Microsoft SQL 2008のドライブ/ファイルグループ設定を構成するためのベストプラクティス

私は小さな会社のソフトウェア開発者です。私はdbaがあったらいいのですが、現時点ではカードにはありません。 75 GBのSQL Server 2000データベースをSQL Server 2008 R2に移行する作業をしていました。

新しい(Windows 2008 R2)サーバーには64GB RAMおよび8 x 72GB 10k SASドライブがあります。8つのドライブを4つのRAID 1に構成することを提案しました次のように、それぞれが単一のパーティションを持ち、データを分離するドライブ:

  1. OS
  2. SQLトランザクションログ
  3. 個別のファイルグループ内の最大のデータベーステーブル(約30GBを占有)
  4. 別のファイルグループ内のデータベースの残りの部分。

私たちのネットワーク担当者は、これは機能せず、RAID 10を使用するのが最も効果的だと述べています。

私は自分の提案をテストするためにテストコンピューターをセットアップしました。重要な読み取りおよび書き込み操作のパフォーマンスをテストするために、いくつかのスクリプトをテストしました。テストシステムは最初の数回の実行が遅くなりますが、通常30秒実行されるスクリプトは1秒未満で実行されます。

ネットワークの人は私に彼のdbaの友人とも話してくれました。彼は1つの大きなRAID 10を提案し、RAID 0を使用するとI/Oの問題があり、別のパーティションに別のファイルグループがあると述べました。

現在、RAID 10で新しいサーバーを1年以上使用しており、正常に動作していますが、非常に基本的な構成のように見えるものを使用すると、一部のパフォーマンスが失われる可能性があるように常に感じます。

私の考えは悪いものでしたか?この種のベストプラクティスはありますか?

3
RandyMorris

TomTomが詳細に説明したように、実際のサーバー(明らかに既に使用している)に関して、ハードウェアの頭字語の一部が正しくないと想定します。

また、「75GBデータベース」への参照は、プライマリDBである75GBのデータベースが1つあることを示していると想定しています。ログファイルは1つだけです。

最新のハードウェアに8つのディスクがあるとすると、1つの一般的な最大パフォーマンスセットアップは次のようになります。すべてのデータファイルと、プライマリDBのログファイル以外のほとんどのログファイル用の、RAID5のOS 4ドライブのRAID1(ミラーリング)の2つのドライブ。プライマリDBのログファイル用にRAID1(ミラーリング)の2つのドライブ。

RAID5は最新のハードウェアで驚くほど高速で、RAID5の4つのディスクは3つのディスクに相当するストレージを提供します。

プライマリDBのログファイルは、それ自体が実際のシーケンシャルアクセスであるため、RAIDセット全体で唯一のファイルでなければなりません。ログファイルが多数ある場合、ドライブヘッドは1つからもう1つにジャンプする必要があり、シーケンシャルではありません。


更新された質問の追加情報を読むと、72GB SASドライブは、増加を考慮しなくても明らかに75GBデータベースを保持できません。3または4ドライブRAID5または4ドライブRAID 10のいずれかが新しいハードウェア情報を考慮して、最低限必要です。特定のケースについて、いくつかの構成を試してそれらのベンチマークを行ってください。ただし、64 GBのRAM 75GBデータベースの場合、データベース全体が予想されます。バッファ内にあるため、ディスクパフォ​​ーマンスの重要性ははるかに低くなります。トランザクションログの書き込みパフォーマンスは、最初に監視するものの1つになります。

2

新しいサーバーには8つのSCSIドライブがあります

本気ですか?

SCSIは、私が新しいサーバーで10年間見ていないものです。 SATA、SAS-しかし、SCSIは本当に私が今日買うものではありません。もし私がそれを買うことができるなら。eBayとCraigslist以外。

4つのドライブをそれぞれ独自のscsiコントローラー上の4つのRAID 0パーティションにすることを提案しました。

それは、「8気筒エンジンが欲しいので、1気筒のエンジンを8基搭載した」と言っています。

また、それが機能しなければならないサーバーである場合、Raid 0は車を運転するようなものであり、その前にブレーキを破壊して、事故を確実にします。 RAID 0は高速で、ディスクの1つに障害が発生した場合にデータが失われます。

しかし、通常は30秒実行されるスクリプトは、1秒未満で実行されます。

高速かもしれませんが、メモリキャッシュが作動している可能性があります。

私の考えは悪いものですか?

悪いです。 SCSI、複数のコントローラ、およびRAID 0-これらの各項目は、意味のないレベルにあります。

私は優先サプライヤーを確認しましたが、利用可能なドライブテクノロジーのリストにSCSIが見つかりませんでした。 SCSIドライブは誰も販売していないようです。

75GBデータベースの場合:

  • すべての豪華なマルチドライブ設定を忘れてください。レイドに行く1.ミラー。
  • 2つのまともな品質のSSDを使用してください。
  • Moboに応じて、mobo raidを使用するか、ローエンドのハードウェアraidコントローラーを取得します。あなたがそれをするなら-偽物ではなく本物を手に入れましょう。私は個人的にAdaptecを使用しています...問題があります;(

終了しました。

これは、16ディスクのRAID 10でも高速で円を動かしますSAS 15k RPMディスクでのセットアップで、非常に少量のコストがかかります。次に、適切な量のサーバーを購入するために節約したお金を使います。メモリ(たとえば:64GB)とSSDは、ほとんどの場合、データベースサイズに影響されません。

オペレーティングシステム、データ(およびログファイル)の2つのパーティションを使用すると、さらに多くのパーティションを取得できます。さらにセキュリティが必要な場合は、別の2 SSDを追加してミラーリングし、そこにログファイルを配置します。

しかし、派手なセットアップから離れてください:

  • SCSI:古くて時代遅れです。
  • 4 RAIDコントローラー:使用されていないため、本当に高価です。
  • RAID 0:痛い。 1枚のディスクに障害が発生し、サーバーがダウンし、データが失われました(つまり、バックアップに戻ります)。
1
TomTom

この種のものにはベストプラクティスがあり、単一のコントローラーを備えたRAID 10はパフォーマンスを制限する構成になります。 SQL Serverで分離すればするほど、良い結果が得られます。

理想的には:

  • OSはSQLバイナリと一緒に独自のドライブにあり、ミラーリングされています-2つのドライブです
  • システムデータベースの場合、私はtempdbとユーザーデータベースがそれぞれRAID 5または10で独自のドライブを取得するのが好きですが、これを実装するために必要なディスク数の余裕がない場合は、すべてのデータベースをまとめてドライブ-RAID 5の場合、最低3台のドライブです。
  • ユーザーデータベーストランザクションログは、何らかの形式のRAID(RAID 1の場合は2、RAID 5の場合は3)を備えた独自のドライブを取得します。

妥協しない最も重要なことは、運用データベースのトランザクションログが、運用データベースのメインデータベースファイル(.mdf)と同じドライブ上にないことです。

現在、このSQL Serverの将来のパフォーマンスの基盤を築いています。このサーバーをまだ注文していない場合は、ドライブを追加して入手できるかどうかを確認してください。いくつかの大きなドライブよりもいくつかの小さなドライブの方がパフォーマンスが向上することに注意してください。

考慮すべきもう1つのことは、今後2年間で予想されるこのデータベースの成長です。会社が大きくて大きな計画を持っていて、マーケティングが大きなプロモーションを計画している場合、基盤が準備できれば、スケールアップははるかに簡単です。

災害復旧も考慮してください。このように8台のドライブすべてを使用することにより、ホットスペア用のスペースがなくなります。ドライブが外に出ている場合は、すぐに交換できるように、コンピュータールームの棚に交換用ドライブを置いた方がよいでしょう。交換用ドライブの輸送中に別のドライブに障害が発生した場合でも、適切なバックアップ戦略を立てておくとよいでしょう。

1
stacylaray