sqlalchemy操作sqlite在高并发的时候容易锁死有什么好的解决办法嘛?


目前使用flask+sqlite做的一个小型应用。在访问量高的时候出现502,查日志发现大量的“database is locked”

flask sqlalchemy sqlite

rdcvgtf 11 years, 10 months ago

首先检查一下你的SQL语句是不是用上了该用的索引。

如果没有,尽量优化它。

如果用了还不行,说明sqlite本身性能已经不能满足要求了。

如果只是读被锁的话,可以通过添加一个缓存层(如memcached)来解决。

如果是写被锁的话(sqlite的并发写性能是挺弱的),在对数据一致性要求不高的场合,可以考虑将写操作缓存,多个写操作(再加上个时间限制)合并,以提高数据库的吞吐量(许多基于sqlite的论坛什么的就有这种机制)。

如果还是不行,你就只能考虑换其他性能更高的数据库产品了。

youova answered 11 years, 10 months ago

Your Answer