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

* インストール [#e0d159ab]

 portinstall databases/sqlite3


* データベース作成 [#u8660fca]

 sqlite3 blog.db

こんだけ…

* SQLiteのinsertが遅いという噂 [#ja258a78]

 実験してみた。

 まず、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 できない [#d0eccdda]

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

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

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

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

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

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


* リンク [#c3c959ab]

- [[本家:http://www.sqlite.org/]]

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