SQLiteについていくつか学ぶ ノート
Julia Evans 日本語

SQLiteについていくつか学ぶ

著者は、ウェブサイトでDjangoとSQLiteを使用した経験を共有しています。当初、著者はSQLiteが小規模サイトの本番環境に適していると考えていましたが、その複雑さを過小評価していました。クエリパフォーマンスにとってANALYZEコマンドの重要性が大きな学びであり、これによりクエリ時間が劇的に短縮されました。ANALYZEがない場合、クエリは5秒かかりましたが、それを使用するとミリ秒に短縮されました。ANALYZEコマンドは、より良い意思決定のためにクエリプランナーに統計情報を提供します。データベースのクリーンアップ操作も課題となりました。大規模なDELETE操作は5秒以上かかる可能性があり、他のワーカーのタイムアウトやクラッシュを引き起こしました。著者の回避策は、クリーンアップを小さなバッチで実行することであり、Postgresのようなデータベースのマルチライター機能を高く評価しています。アプリケーションのデータベースサイズが小さいため、Django ORMクエリの最適化にはまだ焦点を当てていません。SQLiteのバックアップは、resticを使用し、最近では増分バックアップのためにlitestreamを使用しています。どちらの方法もAWSへのアップロードを伴い、著者はこれを面倒だと感じています。また、SQLiteではテーブルを複数のデータベースファイルに分割できることにも言及しており、以前はこれが役立つテクニックだと感じていました。全体として、著者は、最近になってようやくANALYZEを発見したように、使用しているテクノロジーの基本的な機能を学ぶのに時間がかかることに面白さを感じています。