酒日記

2002 04 01

Mon, 01 Apr 2002

初孫 純米吟醸 しぼりたて (15.5% × 360 ml)

終電で帰ってビールを呑もうとしたら、PHS に会社から電話。 「サーバルームで『ピーピーピー』と大きな音が鳴っているんですが・・・」 ・・・RAID の HDD でもふっ飛んだかなあ、これからまた会社に行くのは嫌だなあ、と思いつつ詳しいことを訊ねると、幸いにも本稼働している機械じゃなくて、今設定中のやつが鳴いているそうな。 ので、うるさいかもしれないけど我慢してくれ、ということにして、明日まで放置決定。ふへえ。


モルツ (5% × 1000 ml)

SQLite というデータベースエンジンがある。 サーバプロセスが常駐するような大層なものではなく、1ファイル == 1データベース というシンプルな DB。dbi-japan のメーリングリストで話題になっていたのだが、やっと実験できた。

ちなみにトップページでは Four times faster than PostgreSQL. とか、 速度比較のページでは The speed of SQLite 2.4.0 is similar to MySQL. とか言っていて速度には自信がある模様。

...

以前 MySQL vs PostgreSQL のベンチマークを取った スクリプトを転用して計測してみる。 英和辞典の、89万レコードを検索。

前回のとはベンチマークスクリプトをちょっといじってみた (like 検索のみではなく単純一致の検索も追加)。結果は以下のように。

Pg(connect 0.05747) 
'create %'    0.01597 (select:fetch=0.01160:0.00437) 195 rows
'table a%'    0.00201 (select:fetch=0.00170:0.00031) 5 rows
'%text%'    4.03208 (select:fetch=4.02349:0.00859) 573 rows
'%integer%'    4.04652 (select:fetch=4.04606:0.00046) 16 rows
'computer'    0.00237 (select:fetch=0.00212:0.00025) 1 rows
'performance'    0.00166 (select:fetch=0.00142:0.00024) 1 rows

Pg(connect 0.01653)  (sorted) 
'create %'    0.01534 (select:fetch=0.01225:0.00309) 195 rows
'table a%'    0.00210 (select:fetch=0.00179:0.00031) 5 rows
'%text%'    4.04583 (select:fetch=4.03721:0.00862) 573 rows
'%integer%'    4.06391 (select:fetch=4.06345:0.00046) 16 rows
'computer'    0.00242 (select:fetch=0.00217:0.00025) 1 rows
'performance'    0.00171 (select:fetch=0.00147:0.00024) 1 rows

mysql(connect 0.01662) MyISAM
'create %'    0.00783 (select:fetch=0.00503:0.00280) 198 rows
'table a%'    0.00186 (select:fetch=0.00156:0.00030) 5 rows
'%text%'    2.69851 (select:fetch=2.69053:0.00798) 612 rows
'%integer%'    2.68792 (select:fetch=2.68748:0.00044) 16 rows
'computer'    0.00150 (select:fetch=0.00125:0.00025) 2 rows
'performance'    0.00132 (select:fetch=0.00109:0.00023) 1 rows

mysql(connect 0.00146) MyISAM (sorted) 
'create %'    0.01063 (select:fetch=0.00783:0.00280) 198 rows
'table a%'    0.00222 (select:fetch=0.00191:0.00031) 5 rows
'%text%'    2.73597 (select:fetch=2.72789:0.00808) 612 rows
'%integer%'    2.73082 (select:fetch=2.73039:0.00043) 16 rows
'computer'    0.00152 (select:fetch=0.00127:0.00025) 2 rows
'performance'    0.00134 (select:fetch=0.00110:0.00024) 1 rows

SQLite(connect 0.00795) 
'create %'    1.68071 (select:fetch=1.67791:0.00280) 198 rows
'table a%'    1.67695 (select:fetch=1.67664:0.00031) 5 rows
'%text%'    1.95743 (select:fetch=1.94950:0.00793) 612 rows
'%integer%'    1.93003 (select:fetch=1.92957:0.00046) 16 rows
'computer'    0.00107 (select:fetch=0.00085:0.00022) 1 rows
'performance'    0.00096 (select:fetch=0.00075:0.00021) 1 rows

SQLite(connect 0.00164)  (sorted) 
'create %'    1.68540 (select:fetch=1.68266:0.00274) 198 rows
'table a%'    1.66519 (select:fetch=1.66489:0.00030) 5 rows
'%text%'    1.95285 (select:fetch=1.94384:0.00901) 612 rows
'%integer%'    1.93351 (select:fetch=1.93306:0.00045) 16 rows
'computer'    0.00110 (select:fetch=0.00087:0.00023) 1 rows
'performance'    0.00100 (select:fetch=0.00079:0.00021) 1 rows

見づらいですが。おおざっぱにまとめると、

  • MySQL、SQLite は connect が速い
  • SQLite は like 検索で (前方一致でも) インデックスが有効になっていないような
  • ベタサーチでは、SQLite が最速
  • 単純一致検索でも SQLite > MySQL > PostgreSQL

PostgreSQL の 4倍、てことはないにしても、確かに速い。基本的なSQLは一通り使えるし、とにかくシンプルで軽快。 バックアップもファイル一つ取っておけば大丈夫(多分)。 スタンドアロンで使うなら (複数台に分散するような規模でなければ)、かなりいい感じではないかと。


powered by blosxom