最近はほとんどのケースでSSDでストレージを構成する。HDDとSSDではシーケンシャルIOの特性に違いがあり、SSDをHDDの場合と同じように考えてサイジングすると想定外の性能問題になる可能性がある。本記事は両者のシーケンシャルIOの特性の理解を目的に記載した。
それぞれのIO性能は概ね以下のとおりである。ランダムIOはブロックサイズ(DBまたはファイルのIO単位)は8KBとする。SSDのチャンクサイズ(SSDのIO単位)は256KBとする。
※HDDのチャンクサイズが影響しないのは、HDDはシーケンシャルIOではディスクの回転速度が支配的であるため。
HDD
- ランダムIO:0.005msec/IO、約1.6MB/s (ブロックサイズ8KB×200IO)
- シーケンシャルIO:約100MB/s (一般的なディスクの値。回転速度とディスク密度に依存)
SSD
- ランダムIO:0.001msec/IO、8MB/s (ブロックサイズ8KB×1000IO)
- シーケンシャルIO:256MB/s (チャンクサイズ256KB×1000IO)
上記の例ではHDDはチューニングによりランダムIOをシーケンシャルIOに変えると約60倍高速になる。SSDの場合は、30倍程度である。一般的にもSSDはHDDと比べてシーケンシャルIOとランダムIOの差が違いが少ないと言われる。理由は以下のとおりである。
HDDの場合はランダムIO→シーケンシャルIOにIO特性を変えるチューニングをすると以下の原理で高速化される。SSDは1.の影響がない分、ランダムIOとシーケンシャルIOの性能差が小さい。
シーケンシャルIOがランダムIOと比較して高速となる原理
原理1.ランダムIOはディスクヘッドのシーク動作が発生する分、時間を要する。(HDDのみ)
HDDは下記のイメージのとおりヘッドの移動を伴う。ランダムIOは1IO毎にヘッドの移動が発生する。
引用元
https://xtech.nikkei.com/it/members/NBY/techsquare/20030724/1/
SSDは下記のとおりヘッドの移動はない。
引用元
https://www.izumobase.com/news/when-to-use-ssd-with-sds-part1/
原理2.ランダムIOは同じブロックを複数回IOするが、シーケンシャルIOは一回のみである。
下記を参照していただきたい。ストレージのIO単位がレコード単位より大きいためランダムIOは何度も同じレコードをIOすることになる。
サイジング:ストレージ