注目★★★★★Hacker News
Django サイトで SQLite を本番運用、学んだ 4 つの落とし穴
30秒で把握
- 1Django/SQLite 本番サイトで ANALYZE 未実行により FTS5 クエリが 100 倍遅延、実行後に即座に高速化
- 2DELETE 操作の 5 秒超過でワーカータイムアウト多発、バッチ化・スケジュール保守で対応
- 3VACUUM INTO+restic/Litestream でバックアップ体制構築、複数 DB ファイル分割活用も有効
要約
Julia Evans は Django サイトの本番環境で SQLite を採用し、実運用で気づいた課題をまとめた。ANALYZE コマンドを実行すると FTS5 クエリが 5 秒から 0.05 秒に短縮されたほか、DELETE 操作が 5 秒を超えると他のワーカーがタイムアウトして落ちる問題に直面した。小規模サイトでも VACUUM INTO での定期バックアップ、複数の独立したデータベースファイル分割、ORM クエリの監視が必要と指摘している。
あなたへの影響
小~中規模の Django サイトを SQLite で運用するなら、ANALYZE の定期実行、DELETE 操作のバッチ化、バックアップ戦略 (restic または Litestream) を早期に導入すべき。
推奨:単一ライターの制限から逃げ場がないため、将来スケール時の移行計画も視野に入れる価値がある。