MySQLのテーブルをENGINE=MEMORYにして再度実行してみる
ENGINEをMEMORYにするとOn Memoryになるっぽい。ただし再起動でデータ消える。
あとENGINEがMEMORYだとTEXT/BLOBが使えないみたいなのでschemaをVARCHARに修正
create table tinyurl( id INT(11) NOT NULL AUTO_INCREMENT, shorturl VARCHAR(64) NOT NULL, url VARCHAR(1024) NOT NULL, PRIMARY KEY(id), UNIQUE(shorturl) ) ENGINE = MEMORY;
再度前回のベンチマークを実行してみる
>>> mysql insert speed 0.056474 seconds 17707.263519495697 req/sec >>> mysql update speed 0.062157 seconds 16088.292549511722 req/sec >>> mysql select speed 0.080872 seconds 12365.21911168266 req/sec >>> mysql not found select speed 0.077863 seconds 12843.070521300233 req/sec
うひょー。前はinsert/updateが3000req/secだったのに17000req/secぐらいになった。
selectは前と一緒。IOアクセスがボトルネックではない限界に達していたのかぁ。
なんかもうMySQL + memcachedで実装しておいて、IOがボトルネックになったらSSDにすりゃいい感じがする。お手軽だし構成もシンプルなので他の人に引継ぎやすそうだし