web-dev-qa-db-ja.com

IOPS(1秒あたりのI / O)と、それがDB CRUD操作にどのように影響するかについて知りたい

InnoDBエンジンを実行するデータベース(MySQL)の専用サーバーを取得したい。 InnoDBの容量にはこのオプションがあり、その中でIOPSを定義できます。 100 IOPSを可能にするSATA 72K-RPM HDDがあるとします。それは私のDBが1秒あたり100の同時SQLクエリしか実行できないということですか、それとも1秒で100回の単一の読み取りまたは書き込みを意味するのですか?このようなハードウェアで起動されている1秒あたり3000クエリをDBはどのように処理できますか?少し混乱しているので説明してください。専用サーバーで200以上のクエリを実行したい。

8
Alex

ハードドライブのIOPSは、特定のドライブが1秒間に実行できるI/O操作の数を示します。ランダム読み取り、ランダム書き込み、シーケンシャル読み取り、およびシーケンシャル書き込みには異なるパフォーマンス特性があるため、1つの数値を見ると、これは、いくつかのワークロードを表すこれら4つの数値の加重平均であることを意味します。そのワークロードは、データベースが実際に実行するワークロードと類似している場合と類似していない場合があるため、システムは1秒あたりの操作数が増減する可能性があります。

SQLクエリは、物理I/Oを行うことを前提としています(多くのクエリは、データベースのメモリ、ファイルシステムキャッシュ、またはSANキャッシュ)、多くのI/O操作を実行する傾向があります。クエリが実際に物理I/Oを実行している場合、1つのクエリで1秒あたり100のI/O操作を簡単に実行できます。100のクエリを同時に実行する可能性がありますそれぞれが毎秒1つの物理I/O操作を実行するだけですが、これはおそらく100のクエリすべてが戻るのに許容できないほどの時間がかかることを意味します。

現実的には、1秒あたり3000のクエリを処理する必要がある場合、必要なデータが(できればデータベースによって)キャッシュされるようにすることで、クエリの大部分が物理I/Oを実行する必要がないようにする必要があります。また、システムが実行できる合計IOPSを増やすには、(適切なRAID構成で)比較的多数のドライブにI/Oを分散する必要があります。この種の容量計画では、アプリケーション、データ、各クエリが実際に必要とする可能性のあるI/Oの量などをある程度理解する必要があります。さらに、コストとパフォーマンスのバランスをとる必要があります。メモリ、ドライブの追加、またはRAID構成の変更には、コスト、パフォーマンス、利用可能なスペースのさまざまなトレードオフが伴い、これらを考慮する必要があります。また、ワークロードを複数のサーバーに分割することを検討することもできます(アプリケーションのアーキテクチャの変更が必要になる場合があります)。

10
Justin Cave