web-dev-qa-db-ja.com

SQL Server 2K / 2K5 / 2K8およびソリッドステートディスク:特定の最適化?

ソリッドステートドライブでSQLServerを実行している人はいますか?特定の最適化のヒントを見つけましたか?特にMLCSSDドライブなどのSSDパフォーマンスの宿敵であるため、SQLServerが小さなランダム書き込み操作を実行する頻度を減らす方法に特に興味があります。

もちろん、実行できる明らかな最適化がいくつかあります。読み取りが多いデータはSSDから提供する必要があり、書き込みが多いデータは従来の回転ディスクに任せる必要があります。当然、これにはトランザクションログが含まれます。

もちろん、十分な予算があれば、X25-EやVertexExシリーズなどのSLCSSDディスクやさまざまなエンタープライズレベルの製品を使用することをお勧めします。しかし、MLCSSDのセットアップに役立つ可能性のあるヒントにも興味があります。それは興味深い分野だと思います。私のクライアントのクライアントの1つは、予算が少なく、データセットが大幅に増加しており、適切なレベルのパフォーマンスを維持するために、100近くのクエリの完全な書き換えに直面しています。しかし、私は、500ドル未満のRAMとSSDスペースが、数千ドル(おそらく数万ドル)の開発者時間よりも大きなパフォーマンスの向上をもたらす可能性があるのではないかと疑っています。

9
John Rose

SQLServerが行う小さなランダムな書き込みの量を減らすことの意味がわかりません。 SQL Serverは、チェックポイント中にのみデータページを書き出すため、書き込み回数を制限する唯一の方法は、チェックポイント間隔を変更するか、IUD操作をそれほど多くしないことです。他の意味ですか?

私が見たSSDのすべての実装(ほんの一握り)では、それはあなたが提案しているものとは逆です-SSDの最適な使用法は書き込みの多いトランザクションログとtempdbにあるようです-基本的に私が最大のものはどこですか/ Oサブシステムのボトルネックになり、SSDをそこに固定します-シーク時間とレイテンシーが低い定数に削減されるためです。

MSが作成したこの研究論文をチェックしてください(残念ながら、SQL Serverの詳細についてはあまり詳しく説明されていません): サーバーストレージのSSDへの移行:トレードオフの分析

お役に立てれば!

3
Paul Randal

SQLServerを変更することはできませんIO特性。データファイルのディスクアクセスの基本単位は8Kbページです。ほとんどの場合、チェックポイント中に書き込みますが、遅延書き込みも行います。可能な場合。
SQLは、データディスクへの書き込みが完了するのを待たずに戻ります。完了する必要があるのは、ログへの書き込みのみです。ディスクに1つのデータベースログしか保持できない場合、それは順次書き込みであり、通常の高速ハードディスクでは問題ありません。
SQLの観点から見たパフォーマンスへの影響は、ディスクを読み取る必要がある場合です。より多くのメモリを与えることができれば、SQLはより多くのデータページをメモリに保持します。これは、どの種類のディスクやSSDなどよりも高速です。もちろん、適切なインデックスを作成することで、ディスク読み取りの数を減らすこともできます。 SSDはランダムであり、ドライブヘッドが移動するのを待つ可能性が高いため、これらの読み取りにも役立つと思います。
ここで話しているデータベースのサイズはわかりませんが、HyperOSを確認してみてください。それらは、バックアップとしてSSDまたは2.5インチディスクを備えた、実際にはDDR2RAMスティックの単なる負荷であるsataディスクを作成します。その場合、サーバーのアクセスパターンは重要ではありません。しかし、私はこのようなものにログを載せません。ログはデータの一貫性を保つためのものであり、信頼性の高いメディアに保存する必要があります。バックアップSSDとバッテリー、サーバーにはおそらくUPSなどがありますが、実際のハードディスクにログがないことには不安を感じます。ある種の障害耐性のあるRAIDアレイで。

2
pipTheGeek

ヘッドシークのレイテンシーのため、小さなランダム操作は従来のディスクの宿敵です... SSDは、まさにこれに対処するのに優れています。

長いシーケンシャル操作では、標準ディスクのパフォーマンスが非常に高いため、SSDを使用する目的はありません(もちろん、パフォーマンスの観点から)。

1
Massimo

データベースファイルが保存されているパーティションを調整することをお勧めします。

また、perf(ldfおよびTempDB)のRAID 0で何を行うかを決定し、重要なデータをRAID 1(mdf)に配置することをお勧めします。

第三に、SATAコントローラーのファームウェア/ドライバーだけでなく、ドライブのファームウェアも更新する必要があります。そうすることで、ハードウェア会社とその開発者にパフォーマンスを最適化する機会を与えることができます。

0
GregC

ここではまだコメントスレッドに追加する必要はありませんが、SSD上のすべてのDBのページサイズ/マルチ読み取りカウントをSSDのページサイズの倍数に設定した場合、これは問題にはなりません。

私は長い間SQLServerに取り組んでいないので、これらのオプションがそこで利用できるかどうかはわかりません。私は過去数年間OracleとDB2を使用してきましたが、DBがディスクの特性に適切に調整されるため、これで懸念が解決します。

0
Kevin K