White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

サーバにSSD2

実際に解析のディスクに使ってみた。環境は前回と一緒で、違うのは

構成1
VMをHDDに設置, VMのCPUを1coreに
構成2
VMSSDに設置, VMのCPUを2coreに

という条件で比較したのだけど、似たり寄ったりな感じになってしまった。


処理はPython+SQLAlchemy+MySQL上で

CREATE DEFINER=`aaaa`@`localhost` PROCEDURE `replace_markov`(IN nows VARCHAR(32), IN nexts VARCHAR(32))
BEGIN
  DECLARE mid INT;
  DECLARE mcnt INT;
  DECLARE cnt INT;
  select markov.id, markov.count,count(*) into mid,mcnt,cnt from markov where markov.now=nows and markov.next=nexts;
  if cnt > 0 then
   update markov set count = mcnt+1 where markov.id = mid;
  else
   insert into markov(now,next,count) VALUES(nows,nexts,1);
  end if;
END

みたいな感じで、もし{(nows, nexts):個数}が存在したら個数を1足す、存在しなければinsertするSQLをストアドプロシージャで実行する。ちなみにcntは1しかいかない・・はず。


SQLの処理対象テーブルは約100万件。約130MB。これに(now,nexts)の入力で1分間回したときの実行回数を比較した。

実行結果

2回ずつしか実行してないしいろいろ怪しいけど・・

1回目 2回目
SSD+2core 117 171
HDD+1core 199 76

という非常に怪しいデータが出てきた。


これとか動かしてみて感じることは、

  • SSDにしてもあまり結果変わらない→VMDKをSSDに置くから遅いか、CPUの負荷の方が圧倒的に高い
  • core数増やしてもあまり変わらない→MySQLがCPUを食いまくっているため、core増やしてもMySQLの処理で足を引っ張られる?

SQLサーバのチューニングしろってことですね。