Pluggable Storage Engineのオーバーヘッドとエンジン別性能比較
Pluggable Storage Engineはdynamic linkなのでオーバーヘッドがどれくらいなのか気になって調べることにしました。
先に結論を述べておくと、Pluggable化そのものはあまり気にしなくて良さそうです。
測定にはこんな感じでmysqlslapを使いました。同時に100個のスレッドが1000回ずつ処理を行います。
./mysqlslap --iterations=1000 --concurrency=100 --auto-generate-sql --engine=myisam,tritonn
ここで使用しているtritonnエンジンはmyisamをpluggable化しただけのエンジンです。まだSenna呼出機能とか持っていません。
まずmyisam(built-in myisam)ですが、こんな結果になりました。
Benchmark Running for engine myisam Average number of seconds to run all queries: 0.172 seconds Minimum number of seconds to run all queries: 0.128 seconds Maximum number of seconds to run all queries: 0.217 seconds Number of clients running queries: 100 Average number of queries per client: 0
平均レスポンスは172msです。
続いてtritonn(pluggable myisam)ですが、平均レスポンスは173msということで、ほとんど差がありません。
Benchmark Running for engine tritonn Average number of seconds to run all queries: 0.173 seconds Minimum number of seconds to run all queries: 0.136 seconds Maximum number of seconds to run all queries: 0.205 seconds Number of clients running queries: 100 Average number of queries per client: 0
つまり、dynamic linkになるということ自体を気にしてbuilt-in版のTritonnをビルドし続ける必要性は無さそうということです。
せっかくなので他のエンジンもいろいろやってみました。ここから先は、ただのエンジン性能比較です。
memoryストレージエンジン。myisamよりも10%程度速いです。
Benchmark Running for engine memory Average number of seconds to run all queries: 0.156 seconds Minimum number of seconds to run all queries: 0.137 seconds Maximum number of seconds to run all queries: 0.174 seconds Number of clients running queries: 100 Average number of queries per client: 0
innodbストレージエンジン。この手の単純性能テストは相変わらず苦手のようです。
Benchmark Running for engine innodb Average number of seconds to run all queries: 0.309 seconds Minimum number of seconds to run all queries: 0.290 seconds Maximum number of seconds to run all queries: 0.368 seconds Number of clients running queries: 100 Average number of queries per client: 0
blackholeストレージエンジン。これがSQLエンジン部分(ストレージエンジンより上)のおおよそのオーバーヘッドになります。
Benchmark Running for engine blackhole Average number of seconds to run all queries: 0.031 seconds Minimum number of seconds to run all queries: 0.022 seconds Maximum number of seconds to run all queries: 0.043 seconds Number of clients running queries: 100 Average number of queries per client: 0
こうしてみるとやはり性能に関してストレージエンジンが与える影響は大きいことが分かりますね。
最後にcsvストレージエンジン。意外と健闘してました。内部処理が単純なだけかもですけど。
Benchmark Running for engine csv Average number of seconds to run all queries: 0.416 seconds Minimum number of seconds to run all queries: 0.316 seconds Maximum number of seconds to run all queries: 0.455 seconds Number of clients running queries: 100 Average number of queries per client: 0