저자는 웹사이트에 Django와 함께 SQLite를 사용한 경험을 공유하고 있습니다. 처음에는 SQLite가 소규모 사이트의 프로덕션 환경에 적합하다고 생각했지만, 그 복잡성을 과소평가했습니다. 중요한 학습 내용은 쿼리 성능에 ANALYZE 명령이 중요하다는 것이었으며, 이는 쿼리 시간을 극적으로 단축시켰습니다. ANALYZE가 없을 때 쿼리는 5초가 걸렸지만, ANALYZE를 사용하면 밀리초 단위로 줄어들었습니다. ANALYZE 명령은 쿼리 플래너에게 더 나은 의사 결정을 위한 통계를 제공합니다.데이터베이스 정리 작업 또한 어려움을 안겨주었습니다. 대규모 DELETE 작업은 5초 이상 걸릴 수 있으며, 이는 다른 워커들의 타임아웃과 충돌을 유발했습니다. 저자의 해결책은 정리 작업을 작은 배치로 수행하는 것이며, Postgres와 같은 데이터베이스의 다중 쓰기 기능을 높이 평가합니다. 그들은 애플리케이션의 데이터베이스 크기가 작기 때문에 아직 Django ORM 쿼리 최적화에 집중하지 않았습니다.SQLite 백업은 restic을 사용했으며, 최근에는 증분 백업을 위해 litestream을 사용했습니다. 두 방법 모두 AWS에 업로드하는 과정을 포함하며, 저자는 이 과정이 지루하다고 생각합니다. 또한, SQLite는 여러 데이터베이스 파일에 걸쳐 테이블을 분할할 수 있다는 점을 언급하며, 이 기법이 이전에 도움이 되었다고 말합니다. 전반적으로 저자는 자신이 사용하는 기술의 기본적인 기능을 배우는 데 시간이 오래 걸리는 것이 재미있다고 생각하며, 최근에야 ANALYZE를 발견했습니다.
ANALYZE명령이 중요하다는 것이었으며, 이는 쿼리 시간을 극적으로 단축시켰습니다.ANALYZE가 없을 때 쿼리는 5초가 걸렸지만,ANALYZE를 사용하면 밀리초 단위로 줄어들었습니다.ANALYZE명령은 쿼리 플래너에게 더 나은 의사 결정을 위한 통계를 제공합니다.데이터베이스 정리 작업 또한 어려움을 안겨주었습니다. 대규모DELETE작업은 5초 이상 걸릴 수 있으며, 이는 다른 워커들의 타임아웃과 충돌을 유발했습니다. 저자의 해결책은 정리 작업을 작은 배치로 수행하는 것이며, Postgres와 같은 데이터베이스의 다중 쓰기 기능을 높이 평가합니다. 그들은 애플리케이션의 데이터베이스 크기가 작기 때문에 아직 Django ORM 쿼리 최적화에 집중하지 않았습니다.SQLite 백업은restic을 사용했으며, 최근에는 증분 백업을 위해litestream을 사용했습니다. 두 방법 모두 AWS에 업로드하는 과정을 포함하며, 저자는 이 과정이 지루하다고 생각합니다. 또한, SQLite는 여러 데이터베이스 파일에 걸쳐 테이블을 분할할 수 있다는 점을 언급하며, 이 기법이 이전에 도움이 되었다고 말합니다. 전반적으로 저자는 자신이 사용하는 기술의 기본적인 기능을 배우는 데 시간이 오래 걸리는 것이 재미있다고 생각하며, 최근에야ANALYZE를 발견했습니다.