web-dev-qa-db-ja.com

SQLサーバーの最適なRAIDセットアップ

Webサイト用のSQL2005データベースバックエンドがあり、現在のサイズは約10GBです。正確な統計はありませんが、書き込みよりも読み取りの方がはるかに多くなります。

データベースサーバーをアップグレードしていて、4つのディスクを取得して2つのRAID1アレイにセットアップすることを考えていました。1つはデータファイル用で、もう1つはOSとログファイル用です。これが最適なセットアップでしょうか、それともRAID 5がデータファイルに適しているでしょうか? RAID 10は少し高価になり、おそらく私たちにとってはやり過ぎです。

この段階では、SQLServerはデータベースの大部分をRAM(8GB)に保持する必要がありますが、大きくなるため、完全に依存したくありません。

編集:本番サーバーには確実に冗長性が必要なので、RAID0自体は使用できません。 RAID 10は素晴らしいですが、私たちにとっては少し高価かもしれません。

15
EMP

独立したRAID1ミラーを使用するというあなたの概念は正しい戦略です。

私の仕事でも同様のシナリオを実装しており、非常にうまく機能しています。

RAID 1

RAID 1は、書き込み用に1ディスク、読み取り用に2ディスクの速度を提供します。

RAID 1アレイにデータを書き込む場合、そのデータを両方のディスクに書き込む必要があるため、パフォーマンスは向上しませんが、ここでデータのセキュリティを確保できます。

RAID 1アレイから読み取る場合、コントローラーは両方のディスクに同じデータがあるため、両方のディスクから読み取ります。

RAID 5

これは、大量のデータを保護するのに役立ちます。同じ量のデータに対して、RAID5のコストはRAID1(または個々のディスクのサイズを超える容量を実行している場合はRAID 0 + 1)よりもはるかに遅く増加します。

RAID 5で600GBを保護したい場合は、4x200gbドライブまたは3x300gbドライブでそれを実現でき、購入したドライブの合計容量は800〜900GBになります。 RAID1は2x600gbドライブで1,200gbの購入スペースが必要(600gbドライブはかなり高価)またはRAID 0 + 1でより安価な容量のドライブ(つまり、4x300gbまたは6x200gb)を使用できますが、合計で1,200gbが必要です。購入したスペース。

RAID 0 + 1

RAID 1と同様の利点があり、ディスク間のストライピングでさらにワンランク上のものになります。同時読み取りの増加が心配な場合は、マルチプロセッサ/マルチコアも使用することになると思います。一度に複数のクエリを処理するため、ストライピングはあまり役に立ちません。ビデオ編集など、大きなデータファイルを使用する単一のアプリケーションのRAID 0 +1ではより良い利点が見られます。

しばらく前にこの同じ問題を顧客のために調査していたとき、この記事は非常に興味深いものであることがわかりました http://blogs.zdnet.com/Ou/?p=484 。 2ページ目では、RAID 0 +1から独立したRAID1アレイへの変更について説明し、パフォーマンスを大幅に向上させています。これははるかに大規模(20ディスクおよび16ディスクSAN)でしたが、同じ概念でした。 RAID 0 + 1の基本的な情報に基づいていないストライピングを使用する代わりに、SQLServerが複数のボリューム間でデータを負荷分散する機能は優れた概念です。

17
ManiacZX

データベースが効率的にインデックス付けされていることを確認するために少し時間を費やします。全表スキャンを監視し、最も頻繁なクエリが読み取るデータができるだけ少ないことを確認します。 SSDに不適切なインデックスがあるデータベースよりも、低速のディスクセットアップで効率的に設計されたデータベースを使用します。

3
SqlACID

書き込みよりも読み取りの方がはるかに多いことを考えると、RAID5はデータファイルに対してより高速になります。

可能であれば、トランザクションログファイル用に別のRAID 1 +0アレイを使用してください。

編集:RAID 5アレイを作成するには、少なくとも3つのディスクが必要です。

1
Mitch Wheat

重要なパフォーマンスメトリックは、データレートではなく、シークレートであることに注意してください。つまり、ディスクにバインドされている一般的なデータベース(成長するにつれてデータベースが大きくなる可能性があります)は、シーケンシャル読み取りでサポートできる最大データレートではなく、ディスクがサポートできる1秒あたりのIO数によって制限されます。

つまり、たとえば4つのディスクを使用する方法がわからない場合は、2つのRAID1ペアを使用すると、1つの4ディスクRAID5アレイよりもパフォーマンスが向上するはずです。もちろん、2つのRAID1ペアから使用可能なストレージをそれほど多くは得られません。

1
TimB

データベースのサイズが小さいことを考えると、4つの15krpm 2.5 "SFF SASディスク、2つの別々のRAID1ミラーとしてセットアップします。Adaptec5805PCI-exのようなもので実行します。 8 SASコントローラー。安全のために、データを1つのアレイに配置し、ログを別のアレイに配置します。データベース全体のバーメモリマッピング、非常に大規模で高価なSANまたはSSDを使用することで、これがコストパフォーマンスの最も速いセットアップになると確信しています。

お役に立てれば。

1
Chopper3

2つのこと、

理論では、RAID 1は読み取り用に2つのドライブを提供しますが、それがパフォーマンスの2倍に等しいとは思わないでください。実際のところ、そうではありません。通常、シーケンシャル読み取り速度は1つのドライブとまったく同じになります。驚くべきことですが、本当です....実際のテストを行い、理論に頼らないでください。

そうは言っても、私は2つのRAID 1を使用します...しかし、あなたが言ったように、1つはOS用で、もう1つはデータ用です。そのうちの1つに小さなOSパーティションがいくつかありますが、データ用のSQLサーバーに両方のレイドを確実に与えます。 SQLServerに可能なすべてのセットを提供します。

SQL Serverはペア間でストライプ化できます。ここで誰かが言っていることにもかかわらず、0 +1を使用することは絶対に避けてください。彼らは再び理論的なベンチマークを検討していますが、SQLサーバーがすべてのデータをディスク全体にストライプ化できることを理解しておらず、最適化された方法でそれを実行できます。

RAID 1は、データの冗長性のためだけのものです...それ以外は、SQLサーバーにできる限り多くのことを与え、それを実行させます...それは非常に優れています。

あなたは0+ 1を持っていて、それを2つのRAID 1に分割します。..実際のテストを行うと、SQLサーバーの作業がどちらが速いかに驚かれることでしょう。

1
Rob

RAID 5は、適切な量のバッテリバックアップ式キャッシュRAMを備えたハードウェアコントローラを使用する場合に適しています。チャンクサイズを選択し、ストライプサイズ(データディスク*チャンクサイズ)がDB書き込みサイズと等しくなるようにDBを構成します。データパーティションがストライプサイズ[整列/倍数]であることを確認してください。

それ以外の場合、RAID 1 +0は常にDBサーバーに適しています。

0
Zan Lynx

また、ベースライン値のセットを確立することをお勧めします。これにより、指を空中に置くだけでなく、より基礎的な予測を行うことができます(または、StackOverflowに尋ねると、これら2つの概念は漠然と奇妙に似ているように見えます)。

いくつかのベースライン値を使用して、変更の有効性を測定し、将来のアップグレードの優れた基盤にすることもできます...

(不明な場合は、パフォーマンスエンジニアリングに関するいくつかの文献(またはウィキペディア)を入手してください。これは、この種の問題だけを扱っているもののブランチ全体です)。

0
andy

ところで、私が働いているところでは、彼らはハイエンドのさんを持っていて、それは約2分でテーブルスキャンを行います。ドライブを単純なRAID1セットに分割し、SQLサーバーにストライピングを処理させました... sanではありません。 2分が45秒に短縮されました。

これについてはネット上に他の記事があります...これを受け入れるためにレイド「真の信者」を得るのは非常に難しいので、私はこの点について非常に強調しています。

0
Rob

私は、Dell r210-IILinuxサーバーですでに構成したRAID10を好みます。素晴らしいパフォーマンス...

0
dr.linux