民芸的プログラミング 〜ソフトウェア開発日記〜

アクセスカウンタ

zoom RSS SQLiteの面白さ(21) こういうのは苦手っぽい

<<   作成日時 : 2008/07/01 23:59   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 3 / トラックバック 0 / コメント 0

色々とテストしていると、SQLite の苦手な処理もいくつか見えてきた。機能が少なすぎて大規模開発に向かないというのは最初から分かっていたことだから、最初からそういう用途に使わなければいいとして、単なる軽量アプリとして考えても弱点っぽいものがある。

PCを起動して、一発目のクエリーがどうしても遅い。いくらインデックスを使っても、結局のところそのインデックスはディスクから読み込むわけで、その時間がどうしてもかかってしまう。二発目以降のクエリーは、インデックスがPCのキャッシュに収まってしまうせいか、一発目と比較すると嘘のように速い。
これはOSやPCのキャッシュシステム・能力の問題であり、SQLite自体の問題とは違うという見方もできる。原理的にはMySQLなどでも同じことだ。しかし、MySQLなどは基本的にサーバーでプロセスが起動しっぱなしになっているものだ。それに対してSQLiteは単なるライブラリであり、日に何度も電源がOFFになるクライアント上でプログラムが動作する。「一発目の遅いクエリー」をそれぞれのユーザーが日に何度も体験してしまうわけで、どうしても「MySQLよりも遅い」印象を受けてしまう。
このあたり、プログラミングでカバーしてやる必要があるだろう。ユーザーがクエリーを使う前に、どこかバックグラウンドでこっそりクエリーを走らせておいて、事前にインデックスをキャッシュに読み込ませておくなどの対策が考えられる。

また、私が実業務に使っている環境では、Sambaサーバーで共有したネットワークドライブ上にSQLiteのdbファイルを置いているわけだが、これはあくまで、参照専用のデータベースとして使用しているからこそできる芸当だ。更新が必要となると、おそらく、排他制御がうまくいかなくなって、DB破損(MS Accessでもよくおこるやつ)の可能性が出てくるだろう。この対策に関しては、しっかりとSQLiteのソースコードを確認する必要がある。

SQLiteは手軽であるが、使いこなしにはそれなりのノウハウが必要になる。手軽イコール簡単というわけではないということだ。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 3
なるほど(納得、参考になった、ヘー) なるほど(納得、参考になった、ヘー)
驚いた

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
SQLiteの面白さ(21) こういうのは苦手っぽい 民芸的プログラミング 〜ソフトウェア開発日記〜/BIGLOBEウェブリブログ
文字サイズ:       閉じる