开启 WAL 模式

PRAGMA journal_mode=WAL;

读写不互斥,读多写少的博客场景收益明显。

只读连接

多个进程以只读方式打开同一数据库,避免锁竞争:

conn = sqlite3.connect(f"file:{path}?mode=ro", uri=True)

索引

  • 给频繁查询的字段建索引:created_at、slug、published
  • 组合查询用复合索引:(published, created_at DESC)

查询优化

  • 列表页只取必要字段,避免 SELECT *
  • 分页用 LIMIT/OFFSET 加覆盖索引
  • 单条查询尽量走主键或唯一索引

结论

个人博客量级(几千篇文章)下,SQLite 配合 WAL 与索引完全够用,没必要引入 MySQL。