web-dev-qa-db-ja.com

データベースのSSDとHDD

MySQLサーバーを実行する新しいサーバーを購入しようとしています。この新しいサーバーは私のメインマシンのスレーブになります。ただし、このサーバーは「大量の読み取りと複雑なクエリ」のみを報告するために専用になります。

今、私はソリッドステートハードドライブへの投資を検討していますが、それが本当に価格に値するのか疑問に思っていました。 SSDとSATA 7200ハードドライブの違いは約$ 1500で、SSDのディスク容量は少なくなっています。 SSDに投資すると、速度は顕著になりますか?

2(500GB SSD)を購入するよりも1500ドル少ない4(500GB SATA 7200)を購入できます

アップグレードする価値があるかどうかを判断するのを手伝ってくれませんか。

もう一度言いたいのは、私はquery_cacheを使用していないため、大量のディスク読み取りが発生することです。

このサーバーには32GBのRAM=があり、Ubuntu 12.04を実行します

42
Mike

はい、たくさんの読み取りとSSDの報告は大きな違いをもたらします。 7200 RPMドライブからは、最大100 IOPSを期待できますが、最も安価なSSDは最低5倍の速度で動作します。優れたSSDを使用すると、20000 IOPS以上を達成できます。

また、SSDでのランダムな書き込みは、ディスクを毎回移動する必要がないため、はるかに高速です。

25
nmad

ここで考慮する必要がある3つの要因があります。

  1. データベースのサイズ
  2. サーバーにあるメモリの量
  3. My.cnf設定、具体的には innodb_buffer_pool_size

利用可能なメモリ>データベースサイズの場合、サーバーはおそらくすべてのデータをメモリに保持できるため、SSDは無駄遣いになる可能性があります。 InnoDBバッファーはquery_cacheオプションとは関係ありません。

利用可能なメモリ<データベースサイズの場合、クエリがディスクからデータを取得する必要がある可能性があります。非常に複雑なクエリの場合、または多くのユーザーが一度にクエリを実行している場合、ディスクにストレスがかかり始める可能性があります。

一般に、データベースは最も使用されるデータをメモリに保持します。データの80%がめったにまたはまったく使用されない場合、パフォーマンスを維持するためにデータベースの20%をメモリに保持するだけで済みます。

必要なメモリの正確な量はすぐにはわかりませんが、データベースが200GB +でない限り、Up_Oneのアドバイスに従って、SSDの代わりにメモリに余分なお金をかけることをお勧めします。

注意:データベースがMyISAMを使用している場合(これはshow table status;で確認できます)、InnoDBへの変更を検討してください。 MyISAM key_buffer_cacheはインデックスブロックのみを保存しますが、InnoDBバッファープールはデータブロック全体を保存します。ほとんどの場合、InnoDBはより優れたエンジンとなるでしょう。

20
Nathan Jolly

私はそんなに良い考えではないと思います!
私のアドバイス
MySQLを高速化するには、InnoDBバッファープールのサイズを増やすのが最良の方法です。 RAMを追加できる場合は、追加してください。これにより、ほとんどのホットデータがメモリに格納されるので、想像してみてください。ディスクvsメモリ!
完璧なシナリオは、あなたの記憶をデータベースのサイズにすることです
SSD-素晴らしいですが、高額になります!読み取り集中型のジョブにのみ適しています。

このリンクで Vadim Tkachenkoからのこれに関する素敵な記事をチェックしてください

6
Up_One

別の方法として、大きなハードディスク(理想的には3つのディスクを持つRAID1)を使用してデータを保持し、小さなSSDを使用してインデックスを保持することができます。

根拠:

  • インデックスはかなり小さいので、より小さなSSDを使用できます
  • とにかく、一般的なクエリは主にインデックスにヒットする必要があります
  • rAID1はフォールトトレランスを提供します
  • rAID1はランダム読み取りのロードバランシングを提供します
  • ディスクに障害が発生した場合、3つのディスクはフォールトトレランスを残す
  • sSDに障害が発生した場合、インデックスを再構築できます
6
Simon Richter

やれ。

読み取り負荷の高いワークロードがあるとのことですが、SSDをデータベースで使用する際の大きな問題である摩耗をすでに回避しています。書き込みがないことは摩耗がないことを意味するので、あなたは黄金です。

Edvinas.meで述べたように、SSDを使用すると、回転ディスクよりもIOPSが数桁速くなります。データベースの場合、IOPSは1秒あたりの要求にほぼ変換されます。 RAMキャッシュを無視すると、7200RPMディスクからのリクエストよりもSSDからのリクエストの約100倍の数のリクエストが処理されます。

TRIMは読み取りが多いワークロードであり、とにかくディスクをいっぱいにすることを計画しているように聞こえるので、それほど大きな違いはありません。それについて強調しないでください。

$ 1500のものはどこから来たのかわかりません。私の地元の(オーストラリアの)サプライヤーをチェックすると、評判の良い960GB SSDを750ドルで入手できます( http://www.auspcmarket.com.au/960gb-crucial-m500-sata-6gbps-2-5- 7mm-with-9-5mm-adapter-ssd-read-500mb-s-write-400mb-s / )。回転ディスクは多かれ少なかれ無料ですが、750ドルは1500ドルよりもはるかに口に合います。

(ああ、待って-あなたはおそらく有名なサプライヤーから注文しているので、SSDの鼻からあなたに充電していますか?私はいつもSSDを個別に購入して自分で交換しますが、それがそうであるかどうかわかりませんご使用の環境で許容されます。)

少ないRAMでも問題は解決するでしょうが、正確なワークロードを知らなければ、パフォーマンスを低下させることなくRAM)を安全に削減できるかどうかを判断することは困難です。

それでもわからない場合は、大容量の10k RPMドライブを入手できますが、結局のところ、SSDと同じくらいのコストがかかり、速度はかなり遅くなります。

1 TBをはるかに超えて拡張する必要がある場合、SSDは高額になり始めますが、1 TBの場合、SSDは明らかに有利です。

5
Ian Howson

投資の最大の強みはinnodb_db_bufferpoolサイズの増加にあることは間違いなく同意しますが、残念ながら、それはデータセットの大きさと、さまざまなディスクブロックへのアクセス頻度に完全に依存しています。私は200 GB以上のかなり大きなデータベースをいくつか維持しているため、RAMにすべてを合わせるのは実際にはオプションではありません。そのため、最近SSDベースのストレージに切り替えました。かなり大きな調査を行いました私がアクセスできるさまざまなRAIDアレイでのIOPS for MySQLの使用に関して、結果は次のとおりです。

1,253 IOPS-4 x SCSI 15k(3.5 ")ディスク

テスト:(g = 0):rw = randrw、bs = 4K-4K/4K-4K/4K-4K、ioengine = libaio、iodepth = 64読み取り:io = 3071.7MB、bw = 5012.8KB/s、iops = 1253 、runt = 627475msec書き込み:io = 1024.4MB、bw = 1671.7KB/s、iops = 417、runt = 627475msec cpu:usr = 0.63%、sys = 3.11%、ctx = 985926、majf = 0、minf = 22

2,558 IOPS-8 x 10K RPM 900GB SAS(2.5 ")ディスク

テスト:(g = 0):rw = randrw、bs = 4K-4K/4K-4K/4K-4K、ioengine = libaio、iodepth = 64読み取り:io = 3071.7MB、bw = 10236KB/s、iops = 2558、 runt = 307293msec書き込み:io = 1024.4MB、bw = 3413.5KB/s、iops = 853、runt = 307293msec cpu:usr = 2.73%、sys = 8.72%、ctx = 904875、majf = 0、minf = 25

23,456 IOPS-Rackspace Performance 2 SSDサーバー

テスト:(g = 0):rw = randrw、bs = 4K-4K/4K-4K/4K-4K、ioengine = libaio、iodepth = 64読み取り:io = 3071.7MB、bw = 93708KB/s、iops = 23426、 runt = 33566msec書き込み:io = 1024.4MB、bw = 31249KB/s、iops = 7812、runt = 33566msec cpu:usr = 5.73%、sys = 35.83%、ctx = 181568、majf = 0、minf = 23

35,484 IOPS-2 x Mirrored Edge Boost 480GB 2.5 "MLC( http://www.edgememory.com

テスト:(g = 0):rw = randrw、bs = 4K-4K/4K-4K/4K-4K、ioengine = libaio、iodepth = 64 read:io = 3068.4MB、bw = 141934KB/s、iops = 35483、 runt = 22137msec書き込み:io = 1027.7MB、bw = 47537KB/s、iops = 11884、runt = 22137msec cpu:usr = 11.68%、sys = 69.89%、ctx = 24379、majf = 0、minf = 20

したがって、今日の高品質SSDは素晴らしいパフォーマーであることは明らかです。 2つのミラーリングされたSSDは、16ディスクを簡単に上回ることができますSANストレージエンクロージャー。

詳細に興味がある場合は、ブログの残りの部分を私のブログで見つけてください。

http://www.juhavehnia.com/2015/05/using-ssds-to-improve-mysql-performance.html

4
Juha Vehnia