开启 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。