SQLite 不适合分布式写入。
要有高的写并发,就得利用 WAL ,尽可能缓冲多点事务,再落盘写入。
而官方说,WAL 模式要求所有进程在同一主机上,不能在网络文件系统上工作:
> All processes using a database must be on the same host computer; WAL does not work ofer a network filesystem. This is because WAL requires all processes to share a small amount of memory and processes on separate host machines obviously cannot share memory with each other.
@wwd179 #12
单机上使用的话,利用好 WAL ,加上外部互斥锁(或者一个进程专门处理写请求),可以实现很高的并发。
这两天我测试过,在电视盒子上(单核 Nginx 默认页压测 1W QPS ,性能不及 6 年前骁龙 636 千元机一半),
Python 的 FastAPI + SQLite + 去年本站被爬的千万数据:
- 200 模拟发帖回帖 + 全文索引 / 秒
- 1100 获取整帖(包括回帖者信息) / 秒 |