SQLite 服务端优化备忘

SQLite 服务端优化备忘

💡 原文中文,约3400字,阅读约需8分钟。
📝

内容提要

在服务端使用 SQLite 时,建议采用 WAL2 模式以提升并发性能。通过调整连接数、缓存和事务模式可改善读写效率。虽然 SQLite 适合小型项目,但在数据量大时性能有限,需关注表结构修改和索引统计问题。

🎯

关键要点

  • 在服务端使用 SQLite 时,建议采用 WAL2 模式以提升并发性能。
  • 通过调整连接数、缓存和事务模式可改善读写效率。
  • SQLite 适合小型项目,但在数据量大时性能有限。
  • SQLite 默认使用全局锁,导致并发写时可能出现 SQLITE_BUSY 错误。
  • 建议为读写设置不同的连接对象,写连接并发数设为1,读连接并发数设为 CPU 核数。
  • 开启 WAL 日志可以实现并行读写,建议默认开启。
  • WAL2 模式解决了 WAL 模式下日志文件无限增长的问题。
  • 可以通过设置 synchronous 为 NORMAL 和增加 cache_size 来进一步提升性能。
  • 使用事务时应注意事务模式,建议使用 BEGIN IMMEDIATE 或 BEGIN CONCURRENT。
  • SQLite 的并发性能有限,考虑对数据文件进行分片处理以提升性能。
  • 修改大数据文件的表结构会非常慢,需留心。
  • SQLite 不支持 TIMESTAMP 类型,建议使用整数时间戳保存和查询。
  • SQLite 不会根据索引保存统计数据,导致 COUNT 操作耗时。
  • SQLite 是单机数据库,缺乏网络访问、权限管理、数据备份和分布式高可用等特性。
➡️

继续阅读