見出し画像

機能追加(7)VACUUM

 テストで単語データを千個単位で入れたり消したりしているうちに、SQLiteのDBファイルのサイズがだんだん大きくなってきてしまいました。
 auto_vacuum という機能があるようで
SQLで "PRAGMA auto_vacuum = FULL" を実行してみました。
だけど、ファイルサイズ小さくならない。どうやら、auto_vacuumは少し空き領域ができたからと言って、すぐに動作するわけではないようです。
 すぐ効果を見たかったのでVACUUMコマンドを用意して、モデルのイニシャライザ中で一回実行しておくようにしました。

    def vacuum(self):
        with sqlite3.connect(self.mydb) as con:
            cur = con.cursor()
            #cur.execute("PRAGMA auto_vacuum = FULL") auto_vacuum はすぐには動作しない
            cur.execute("VACUUM")
            con.commit()

これで最初の頃のサイズに戻りました。

この記事が気に入ったらサポートをしてみませんか?