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)からはダメ。 データベースファイルのパーミッションは問題ないよう設定してもダメ。 結局、データベースファイルが置いてあるディレクトリのパーミッションを上げたら解決した。 腑に落ちない。 もしかしたら更新時は一時ファイルを作るのかもしれないな。 ただ、それだったらエラー吐いて欲しい。 リンク † |