今日、SQL Serverの最適化に関する本を閲覧していましたが、一定量のアイデアがストレージの線形モデルに基づいているように思われました。SSDのストレージモデルはまったく異なるため、データベースの調整や最適化についての考え方に関して、何らかの形でゲームを変えますか?
今日、SQL Serverの最適化に関する本を閲覧していましたが、一定量のアイデアがストレージの線形モデルに基づいているように思われました。SSDのストレージモデルはまったく異なるため、データベースの調整や最適化についての考え方に関して、何らかの形でゲームを変えますか?
回答:
はい、彼らはゲームを変更します。回転する磁気ディスクの特性(シーク時間や回転遅延など)に基づく最適化は、SSDドライブには関係ない場合があります。FITME 2010で公開された最近の論文*は、SSDの特性に基づいた新しいクエリ最適化アルゴリズムを紹介しています。
ただし、これらの変更は、おそらくデータベース開発者が効果的に実装できる低レベルの変更(たとえば、ストレージおよび検索アルゴリズムに対する)になります。おそらく、データベースユーザーにはそれほど影響しません。
SSDはパフォーマンスが高く、シークする必要がなく、スループットが非常に優れています。ディスクを扱うほとんどのソフトウェアは、それらが最適化されている限り、同期シークの数を減らすために最適化されています。そうすることで、彼らは複雑さのホストを紹介します。永続的ストレージへの高速でシークレスな書き込みの出現により、新しいデータストレージシステムはそのような複雑さを必要としなくなりました。
現在、SSDの故障率は高くなっています。SSDは失敗します。SSDは、磁気ディスクよりもはるかに高い割合で故障します。レプリケーション、バックアップなどでこれを回避する必要があります。これにより、独自の複雑なセットが導入されます。
ストレージの価格の全体的な削減は、はるかに大きな影響を及ぼします。
SQLを導入する前は、DBAがデータのトラックとシリンダーの配置を慎重に計画する必要がある、最適化された階層データベースとネットワークデータベースがありました。
SQLデータベースの効率ははるかに低くなります。しかし、ディスクは安価で、巨大で、高速であるため、ほとんど気にしません。
NoSQL( "ドキュメント")データベースは、SQL論理スキーマと、ファイルまたはテーブルスペースなどの基礎となる物理スキーマとの間に論理-物理マッピングの同じ機能がないため、SQLよりも効率がやや劣ります。そして、私たちはほとんど気にしません。
SSDのパフォーマンスの向上は、NoSQLデータベースを使用してシステム全体を設計する方法に起因する変更では失われる可能性があります。
SSDの最適化に関する主な問題は、データの書き込み方法に関係しています。従来のハードドライブは通常、約512バイトの小さなセクターにデータを保存し、実際にそのレベル以下でセクターを直接操作できます。
SSDには書き込みに関していくつかの欠点があります。
書き込み増幅と呼ばれる典型的な悪夢のシナリオは、すでにいくつかのブロックが使用されているディスク上の場所に1バイトを書き込む場合です。そこに書き込むには、まず256KBページ全体をメモリにコピーし、ブロック全体を消去し、ページ内の1バイトを変更してから、変更された256KBページ全体を書き戻す必要があります。したがって、1バイトを書き込むために、約半メガバイトの「トラフィック」がありました。
SSD、コントローラー、さらにはオペレーティングシステムレベルで実装されるこの問題には多くの最適化がありますが、特定の動作に合わせてこれらの最適化を調整することにより、DBMSが恩恵を受けることは間違いありません。
ただし、これは、DBMSレベルでの設計/実装の決定に大きく依存するため、データベースユーザー(アプリケーションでデータベースを使用する場合など)が考慮する必要のあるものではありません。
ServerFaultブログから収集したものから、データベースサーバーには強力なハードウェアが必要です。スタック交換サイトのデータベースサーバーではSSDが実行されており(http://blog.serverfault.com/post/our-storage-decision/を参照)、クエリの最適化が依然として非常に必要であると思います。CPUとメモリは、データベースクエリとIOの影響を受けます。
ただし、データベースのパフォーマンスはIOに大きく依存するため、SSDが確実に役立ちます。