目前使用flask+sqlite做的一个小型应用。在访问量高的时候出现502,查日志发现大量的“database is locked”
首先检查一下你的SQL语句是不是用上了该用的索引。
如果没有,尽量优化它。
如果用了还不行,说明sqlite本身性能已经不能满足要求了。
如果只是读被锁的话,可以通过添加一个缓存层(如memcached)来解决。
如果是写被锁的话(sqlite的并发写性能是挺弱的),在对数据一致性要求不高的场合,可以考虑将写操作缓存,多个写操作(再加上个时间限制)合并,以提高数据库的吞吐量(许多基于sqlite的论坛什么的就有这种机制)。
如果还是不行,你就只能考虑换其他性能更高的数据库产品了。
欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。 温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。