SQLite的可扩展性如何?

我最近阅读这个问题关于 SQLite vs MySQL和答案指出,sqlite不能很好地缩放和官方网站 sort-of confirms this,但是。

sqlite的可扩展性以及它的最高限制是什么?

昨天我发布了一个小网站*来跟踪您的代表,为所有访问者使用共享的sqlite数据库。不幸的是,即使有适度的负载,它放在我的主机,它运行相当缓慢。这是因为每次有人查看页面时,整个数据库都被锁定,因为它包含更新/插入。我很快就切换到MysqL,虽然我没有太多时间来测试它,它似乎比sqlite可扩展性。我只记得慢页面加载,偶尔得到一个数据库锁定的错误时,试图执行从sqlite的shell查询。也就是说,我从sqlite运行另一个网站很好。区别是网站是静态的(即我是唯一可以更改数据库的网站),因此它适用于并发读取。道德的故事:只使用sqlite的网站,其中数据库的更新很少(少于每个页面加载)。

编辑:我只是意识到,我可能不公平的sqlite – 我没有索引sqlite数据库中的任何列,当我从网页上提供它。这部分导致了我经历的减速。然而,数据库锁定的观察 – 如果你有特别繁重的更新,sqlite性能将不匹配MysqL或Postgres。

一个编辑:自从我发布了这差不多3个月前,我有机会密切检查sqlite的可扩展性,有一些技巧,它可以是相当可扩展。正如我在我的第一次编辑中提到的,数据库索引大大减少了查询时间,但这是更多的关于数据库的一般观察,而不是关于sqlite。但是,还有另一个技巧可以用来加速sqlite:transactions.每当你必须做多个数据库写入,将它们放在一个事务中。而不是每次发出写入查询时写入(和锁定)文件,写入只会在事务完成时发生一次。

我提到我在第一段中发布的网站已经切换回sqlite,它运行相当顺利,一旦我在几个地方调整我的代码

*该网站已不再可用

相关文章

SQLite架构简单,又有Json计算能力,有时会承担Json文件/RES...
使用Python操作内置数据库SQLite以及MySQL数据库。
破解微信数据库密码,用python导出微信聊天记录
(Unity)SQLite 是一个软件库,实现了自给自足的、无服务器...
安卓开发,利用SQLite实现登陆注册功能