PHPからSQLiteを使ってみようと思ったんだけど、そもそも最初のDB作成など、DBの基本的な管理作業も必要なので、SQLiteそのものをインストールした。

インストール

portinstall databases/sqlite3

データベース作成

sqlite3 blog.db

こんだけ…

SQLiteのinsertが遅いという噂

 実験してみた。

 まず、PostgreSQL、SQLite両方にtestと言うデータベースを作成し、それぞれにitemsテーブルを作る。

create table items ( id int, name varchar(50) );

 で、別途1,000行のinsert文を書いたファイルを用意した。  最初はトランザクションを使わないものを使い、次にinsert1文毎にトランザクションを使うものを使った。

 結果。

<< without Tx >>
postgresql
0.009u 0.217s 0:03.51 5.9%  548+1356k 0+0io 0pf+0w
sqlite3
0.029u 1.800s 0:11.05 16.4% 57+1701k 0+11152io 0pf+0w

<< with Tx >>
postgresql
0.004u 0.859s 0:05.95 14.2% 516+1326k 0+0io 0pf+0w
sqlite3
0.066u 1.769s 0:12.60 14.4% 55+1637k 0+11177io 0pf+0w

PostgreSQLとSQLiteの差は大きいけど、トランザクションを使うかどうかの差はよく分からない。強いて言うなら、PostgreSQLの方がトランザクション利用による遅延が大きい。

こんな結果でいいのかな。

SELECT はできるけど UPDATE/INSERT/DELETE できない

PHP から PDO 経由で使っている際に、読み出し(SELECT)はできるけど、更新系の処理が何もできないことがあった。

更新系のSQLをCLIから渡すと更新されるが、PHP(http)からはダメ。

データベースファイルのパーミッションは問題ないよう設定してもダメ。

結局、データベースファイルが置いてあるディレクトリのパーミッションを上げたら解決した。 腑に落ちない。

もしかしたら更新時は一時ファイルを作るのかもしれないな。

ただ、それだったらエラー吐いて欲しい。

リンク


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS