Django SQLite 生产配置

主要观点:Django 中默认的 SQLite 配置不适合生产环境,可通过调整一些设置来提高并发性能。
关键信息

  • PRAGMA journal_mode=WAL;设置在某些网络文件系统上可能会损坏数据库,使用时需注意。
  • 在 Django 5.1 及更新版本中,可在settings.py中调整DATABASESOPTIONS来优化 SQLite,无需指定PRAGMA foreign_keys = ONtimeout可替代PRAGMA busy_timeout
  • 在 Django 5.0、4.2 或更旧版本中:

    • 启用WAL journal mode可提升性能,只需在数据库上运行sqlite3 db.sqlite3 'PRAGMA journal_mode=WAL;'一次。
    • 使用IMMEDIATE事务可避免数据库锁定错误,但会降低事务性能,需创建自定义DatabaseWrapper并在settings.py中使用。
    • 可微调一些 SQLite 设置,如mmap_sizejournal_size_limitcache_size,Rails 7.1 中已采用默认值。

    重要细节:不同版本的 Django 调整 SQLite 配置的方式不同,在使用时需根据版本进行相应设置,以确保 SQLite 数据库能处理中小规模网站的常见负载,且在写操作不繁重的情况下运行良好。

阅读 23
0 条评论