パフォーマンスを最適化するためのSQLの設定…SSDまたはHDD?


8

SQL環境でのパフォーマンスに関してSSDとHDDの比較を示す比較を知っている人はいますか?

SSDに移行することでどのような種類のパフォーマンス上のメリットが得られるかを理解しようとしています。


1
SQL標準のコピーは、SSDでもスピニングプラッターHDDと同じように機能すると確信しています。それとも、SQL標準の特定の試みられた実装に興味がありますか?
ウォンブル

回答:


14

大量の小さな読み取りを実行している場合、SSDははるかに高速です。 以下は、データベースのパフォーマンスに関する数少ない比較の1つです。 一番下のグラフで短い答えを見てください。

生のパフォーマンスについては、SSDには多くの利点があります。主な利点は、シーク時間が実質的に0であることです。これは、データベースが行うすべての小さなHDヒットがはるかに速く処理されることを意味します。

ただし、書き込みの存続期間に関する現在の世代については、書き込みが多くなるとブロックが使用できなくなるため、いくつかの懸念があります。彼らはかなりの量を書き込むことができると私は考えています。Intelの言うところによると、32GBドライブのペタバイト単位のバイトは、危険なレベルのウェアに到達する前に...

それらがそれほど優れたパフォーマンスを発揮する理由をさらに理解するにはSSDに関するAnandtechの記事をお読みください。彼はドライブの詳細、何が良いか、何がそうでないか、そしてそれらがどのように機能するかについての詳細を説明します。上部には、最新のドライブシリーズをカバーするフォローアップ記事へのリンクもあります。


2
限られた書き込みサイクルによる摩耗については、個々のセルの書き込みサイクル能力の向上、必要な書き込みブロックサイクルを削減するための書き込みマージ「トリック」、およびウェアレベリングの組み合わせにより、優れたSSDはディスクの回転の安全性に近づいています。アルゴリズム。非常にアクティブなデータベースのような高IO負荷のアプリケーションであっても、優れたSSDは、定期的な交換の前に回転し、ディスクを回転させる可能性が高くなります。他のストレージソリューションと同様に、定期的かつ定期的にテストされたバックアップを保持してください。
David Spillett

私が同意するのは、私がそれをショーストッパーではなく懸念と呼んでいる理由です...安価なディスクには現在、これに関する実際の問題があり、それはファームウェアの問題です。6か月以内に摩耗レベルが上がることはないと私は思います。それは、非常に速く、非常にうまく進んでいます。
Nick Craver

1
いい答えです。それに追加するだけで、ログは順次書き込まれ、ハードドライブが安価であるため、ほとんどの状況ではログが通常のハードドライブに残るはずだと思います。SSDに実際のデータベースがあるだけで、ランダムアクセスが行われます。
PeteT

@PeteT-それは変化する/少し依存する、特定の1つのログはシーケンシャルであることを覚えておいてください。しかし、多くのデータベースをホストするサーバー(データベースごとに多くのサイトをホストするStack Exchangeなど)では、実際の動作はシーケンシャルなので、実行している内容や量によって異なります。
Nick Craver

1つの美しいことは、SSDが寿命に達し、それ以上書き込むことができない場合でも、読み取り可能であることです。回転するディスクが壊れるとは言えません。
djangofan 2011

4

オペレーティングシステムとSQLソフトウェアを標準のハードドライブにインストールしてから、データベースファイルだけを保持するSSDを追加できます。これにより、SSDドライブが経験する書き込みの数が制限され、ドライブ上のデータに使用できるスペースの量も最大化されます。



2

Nick Craverの答えは良いです。私はSSDに2つの警告を追加したいだけです。

a)SSDの書き込み摩耗に関する問題は解消されていません。これらは使用されているフラッシュセルの基本です。SLCセルの書き込み耐久性はMLCよりもはるかに高いため、OPはMLCよりもSLCドライブを使用することを検討する必要があります。もちろん、SLCも大幅に高価です。

b)現在のドライブは、データを書き出す前にドライブにキャッシュします。したがって、書き込み操作中に電源が切断されると、データが失われるリスクがあります。これは回避できるものですが、キャッシュはパフォーマンスと書き込みの増幅の削減の両方のためにあります。

上記の私見はどちらも契約違反者ではありません。今日、SSDを運用環境に展開する準備ができていますが、最初に計画を立てます。

  1. データ損失の小さなリスクが許容できない場合は、データキャッシュがオフになっている従来のSASハードディスクの方が適しています。
  2. 通常の日にSSDドライブに書き込まれるデータの量を測定する必要があると思います。これに基づいて、メーカーはスペックを着用し、使用パターンでSSDの予想寿命を計算します。予想寿命がサーバーの計画寿命よりも短い場合は、SSDのプリエンプティブ交換日を設定します。飛行機の部品と同じように、故障する前に交換してください。

飛行機パーツ?1 GBのRAMを搭載し、HDDを搭載していないIBM AP101Sコンピュータ上で実行されるNASAシャトルに拡張する場合は、最適な類推ではありません。予測可能性と信頼性の必要性は他のすべての考慮事項より優れています。
CJM

1

覚えておくべきこと。

読み取りが遅くなるほどデータベースにアクセスしていてSSDが必要な場合は、インデックスを修正するか、サーバーにRAMを追加することを検討する必要があります。

ほとんどのデータベースサーバーは、完全に調整されると、SSDを適切に実行する必要がなくなります。


読み取りが実際に遅くなることはありません。クエリが最初に実行されてから約120〜130ミリ秒、その後80ミリ秒かかる「最初のヒット」クエリを最適化しようとしています。これらの時間には、クエリプランの作成と関連する統計の読み取りが含まれません。私たちのケースでは時間の違いがディスクからの読み取りに費やされていることがわかります。そのため、最初のヒットを80ミリ秒に近づける方法を検討してみます。
spoon16 09/09/28

だから最初の実行後でも、それはまだ80msかかりますか?それは主にデータの読み取りですか、それとも大量のCPU(集約またはソート)ですか?エキゾチックなストレージテクノロジーに移行する前に、「従来の」最適化の余地は十分にあると考えてください。
BradC 2009

クエリの最初の実行時にディスクにアクセスする必要がある場合、SQLは何らかの理由でデータをキャッシュから追い出します。最初に、ページの平均寿命を確認することをお勧めします。低い場合は、より多くのRAMが必要です。クエリの前、最中、後のキャッシュヒット率はどれくらいですか?99.8%未満の場合は、インデックス作成とより多くのRAMが必要です。スキャンを行っていますか?もしそうなら、より多くの索引付けが必要になるかもしれません。
mrdenny 2009

ライトスルーキャッシュ(つまり、呼び出しが戻る前にデータがディスクに物理的にコミットされる)を使用した書き込み負荷の高いワークロードでは、アプリケーションが実際にI / Oにバインドされていると仮定すると、SSDの書き込みパフォーマンスが著しく向上するはずです。これは、特にSANでのSQL Serverの推奨キャッシュ戦略であり、MSは、SQL Serverで使用するための認定を得るために、この動作を保証するためにSANを必要とすることに注意してください。
ConcernedOfTunbridgeWells

1

この記事を読んでください(かなり古い-2009)。

概要:24 x 15k RPM SASドライブを6つ(はい6)SSDに置き換えても、パフォーマンスは35%向上します。これは、SSDのトップドッグではなくなったIntel X25Mに関するものでした。

データベースの人々にとっては、より少ない電力でより高速なサーバーを小型化できるため、これは素晴らしいことです。


1

考慮すべき1つのことは、トランザクションログをHDDに、MDFをSSDに置くことです。また、寿命はアプリケーションのタイプに大きく依存します。OLTPは、適度に静的なデータに問題がないはずの場所で、すぐに書き込みます。


1

ここに私自身の経験が混在しています...

SQL Server 2008 Express R2を搭載したWindows 7でのテスト。Sandy Bridgeと12GがインストールされたRAM(DDR3だと思いますか?)を備えたi7デスクトップで実行しています。セットアップがデスクトップであるため、サーバーを構築する前に、i7プラットフォームで管理できるレコードの数を確認しました。

私は最初にこれらのテストをインストールされた1.5TB 7200rpmドライブで実行して、基本タイミングを取得しました。

更新プロシージャを含む10kレコード、以前に関連したデータをフラットテーブルに格納するようにテーブルを最適化し、開始点としてタイミングを数秒まで下げるまでインデックスを追加し、次にレコードを120万まで複製してタイミングを取得しました同じ更新の0:3:37の。この非RAIDセットアップでは、3.5分は悪くありません。

最大256万レコードを複製すると、タイミングが0:15:57になり、ほぼ5倍に増加しました。ほとんどの場合、インストールされている12Gメモリのページングが原因です。

SSDドライブをインストールしてデータベースを移動したところ、実際のタイミングは20分強に増加しました。これは、ページファイルがハードドライブごとであり、SSDドライブにはOSドライブとしてインストールされていなかったため、デフォルトでは何もなかったためと思います(私が試したときにブルースクリーンが豊富にあります)。

SSDドライブにページファイルを追加し、テストを再実行しました。0:5:52 -mなので、ページファイルでトリックが実行されたようですが、上記のすべての理由から、ページファイルがSSDドライブに適しているかどうかはわかりません。それらは非常に書き込みが多く、ドライブに過度の摩耗や損傷を与える可能性があります。

注意点の1つは、そのドライブでSmartboostを有効にしたことです。これはタイミングにも影響した可能性があり、それなしで再実行されます。

私の最高の感覚は、最近ではメモリを追加する方が簡単だということです。ハイブリッドディスクのRAID 0 + 1のRAIDは、問題なくほぼ同じように機能します。

編集:SSDのページングファイルを無効にして、スマートブーストが機能するようにしました。タイミングが5:52分から4:55分に改善され、それぞれが3回の更新で、256万レコードが更新されました。次に、Seagate 750Gハイブリッドドライブで8G SSDキャッシュを試してみます。それが悪くないなら、レイド0 + 1で試してみます。

これは古いスレッドなので、これに関する最後の更新ですが、誰かが見つけられるように、取得した結果をそこに置きたかったのです。

データベースを8G SSDキャッシュを備えたSeagate 750Gハイブリッドに移動する私はSSDキャッシュが学習できるようにテストを数回実行しました。同じテストで5:15 m:sのタイミングが得られ、256万レコードが更新されます。これはSSDのパフォーマンス(Intel Smartboostの場合は4:55 m:s)に十分近いため、コストを考慮することができます。

ハイブリッドは約50ドル(現在239ドル対189ドル)で、最適化のための追加のソフトウェアを実行することなく、6倍以上のストレージとほぼ同じパフォーマンスを提供します。RAID 0 + 1では、タイミングが大幅に改善されることを期待しており、このドライブには5年間の保証が付いています。


0

個人的には、すでに述べた理由でSSDを使用しません。彼らは最終的に失敗する前に徐々に減速します。これがいつになるかはまだわかりません。現在の推定値はそれだけです。推定値です。私たち全員が80年代初頭から中期にこれらの「壊れない」CDを購入したことを覚えていますか?数年後、CDにデータを保存するという用語は、フロッピーディスクを使用するのと同じくらい愚かであると見なしました。

ハードウェア、OS、DBがすべて正しく設定されている場合は、SSDでギャンブルする必要はありません。

数年後、製品が少し成熟すると、別のシナリオになります。それまでは...


0

Microsoft Researchの記事は、パフォーマンスの向上ではなく、GBあたりのコストに関係しています。ドライブに実際に適合してテストするのではなく、実際のサーバーからのログファイルに基づいてレトロキャストアルゴリズムを使用します。

SSDとSQLで頭に浮かぶいくつかのこと:

1 /正しいインデックスの追加を怠った場合、ランダムシーク時間が非常に短いため、SSDはより寛容になります。

2 /その調査が実施されたときのコストはかなり下がっています。たとえば、エンタープライズExchangeサーバーではなく電話アプリのバックエンドを実行する小規模なWebアプリケーションの場合、SQL Serverをチューニングするコンサルタントを雇うコストを節約できます。

3 /シャドウコピーを備えた単一のSSDドライブは、RAIDキャビネットの多数のスピンドルとコントローラーおよび接続よりも確実に安価になります。電源、暖房、ラックスペースは言うまでもありません。

4 /スピンドルは、コンピューターで最も一般的に死ぬ部分であることで有名です。SSDには可動部品がないため、1時間のビジネスダウンタイムでSSDの価格が一気に高まる可能性があります。

5 / Wearは問題ですが、ランダムに断片化されたデータによってSSDの速度が低下しないため、摩耗を(散乱ブロックを含む)管理する方法があります。また、大きなディスク上の小さなデータベースは、将来的に安価な新しいデータベースを購入するのに間に合わなくなる可能性が高くなります。

6 /非リレーショナルデータベースに移行し、中間層で結合を行う傾向があります。これは実際に状況を変える可能性があります。I/ Oは、シャード上のSSDドライブ上の単純なインデックスなしのテーブルになり、パフォーマンスを低下させることなく、より単純なスケーリングを提案します。シャードごとのSQL Serverライセンスも節約できます。

7 /これはすべて理論的なものです。誰かがスピンドルに対して実際のパフォーマンステストを行っている場合は、ぜひご覧ください。

ルーク

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.