mysqldumpを速くする(その1)

By | 2013年5月2日

nigaraです。

mysqlで1000万レコードを超えたあたりからmysqldumpからのリストアが遅くなってきます。何とか速くならないかと現在試行錯誤中。とりあえず検証中の途中経過をつらつらと書いていきます。

I/Oの違いによるリストア速度差

HDD SAS(RAID0) Fusion-io ramdisk
real 16m26.839s
user 0m38.200s
sys 0m2.293s
real 9m23.932s
user 0m42.082s
sys 0m1.488s
real 8m50.237s
user 0m41.867s
sys 0m1.661s
real    8m42.956s
user    0m43.218s
sys    0m1.540s

リストアはI/OとCPU能力で速度が左右されますが、まずI/Oがボトルネックになり、次にCPUがボトルネックになります。ですのでリストアを速くするにはまず速いI/O環境にすることですが、結果の通りramdiskとSAS(RAID0)の違いは1割程度ですので、SASぐらいで充分ということになります。

TOPコマンドでの負荷表示もHDDだとCPUがあまり使われないのですが、SAS以上になると90%以上超えてボトルネックがCPUになっている事が判ります。

ここで問題となるのは、CPUは多少お金を掛けたところでそれほど速くならない実情があります。まずリストアはシングルスレッドですのでコア数がいくつあっても使われるコアは1つのみ。よってクロックの高いCPUで効果はありますが、10万円以上する

CPUに変えたところでクロックは2割ぐらいしかアップしません。しかもそれが上限のクロックだとさらなる上は時代の進化を待つしかなくなります。

 

となるとリストアを速くするには根本から見直す必要がありますが、構築やら実験やらで書くと長くなるのでまた次回。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です