【メモ】 SQLiteのINSERTが遅いんだってことを、

特定のページに特化したアクセスログの記録を開始してから思い出した。だって、ページ表示がめっさ重いもんよ。なんてことだ。 トランザクション使えば、SQLiteのINSERT効率が上がること自体はわかってるんだけども、アクセスログってことは基本的に1プロセス(?)1クエリなのであまり効果がないような。ダメ元でやってみて多少マシになったけど(体感のみ、計測データ無し)、さすがにちょっと無理ぽ。そういう用途であんまり使われてない理由がようやくわかった気がする。 とはいえ、ログの利用を考えると生ログで置いておくのはちょっと無理があるのでまずは生ログで保存して、参照が必要な時間単位(仮に10分)でcron回してSQLiteに記録していくのがよさげ。その際はもちろん、トランザクション使って。 「MySQL使えば?」っていうもっともな話もあるんだけど、MySQLはMySQLである程度いっぱいいっぱいなのであんまり負荷掛けたくなく。なんとかSQLite絡めつつやってみることにする。

続きを読む

【メモ】 SQLite3でのAUTO INCREMENT。

SQLite2で自動的にインクリメント(autoincrement)されるフィールドを作るためには、そのフィールドに次のように設定してやれば実現できました。

SQLite2の場合
id    INTEGER    NOT NULL    PRIMARY KEY
SQLite3でも同様に設定してやれば、自動的にインクリメントされるフィールドを作成することが出来ます。
SQLite3の場合
id    INTEGER    NOT NULL    PRIMARY KEY

または

id    INTEGER    PRIMARY KEY
しかし、これらはあくまで「擬似的に」autoincrementを実現しているだけで、例えばMySQLのAUTO_INCREMENTととは動作が違うようです。SQLite3ではAUTOINCREMENTの指定をサポートしているので、MySQLのAUTO_INCREMENTと同様の動きをするフィールドを作成することが出来ます。設定は以下の通り。
SQLite3の場合(その2)
id    INTEGER    PRIMARY KEY    AUTOINCREMENT
違いは、「AUTOINCREMENT」キーの有る無しです。

続きを読む

さくらインターネットとxamppでPHPからSQLite3を使う

SQLiteでCREATE TABLEしてもどうもDEFAULR CURRENT_TIMESTAMPがきかないんでおかしいなーと思ってたら、CURRENT_TIMESTAMPはSQLite2ではサポートしてないそうです。そうなのか。じゃあSQLite3でやればいいじゃないと思ったんだけど、さくらインターネットの場合普通にSQLiteDatabaseとか使って接続するとSQLite2になっちゃう。じゃあどうするかっていうと…まぁ、PDO使えば良いんですね。SQLite3目的じゃなくても普通に使うと思いますけども。

さくらインターネットの場合
PDOを使って接続する

続きを読む

MT4@さくらインターネットがSQLiteで動きました。

先日上手く動かず、MySQLで入れたものの放置してあったMT4。 と思ったら、太鉄さんのところ(talk to oneself 2)にこんな記事が。

さくらインターネットに DBD::SQLite の最新版をインストールしてもらうように申請するのが筋なのでしょうが、それでは面白くないです。会社の同僚に勧められた通り、ローカルに DBD::SQLite の最新版をインストールして、MT4 を SQLite で使ってみることにします。
 
がーん。

続きを読む

MySQLからSQLiteに移行した件について

サーバが要らない、けど軽い、と噂になっていたSQLiteですが、 なかなか移行する機会が無くて(だって、3000エントリ以上あるんだもの) さてどうしたものか、と思っていたんですが。 このたびのレンタルサーバ(さくらインターネット)のMySQL絶不調を受け、遂に踏み切りました。 移行のメモと、使用感と、その参考までに。

続きを読む