我已经了解SQLite很长时间了,我知道它发展很快,但是我从未在生产服务器中尝试过它。我无法找到一个可靠的估计,即它在失败之前可以处理多少流量。
有人对此有任何数字或文章吗?
我已经了解SQLite很长时间了,我知道它发展很快,但是我从未在生产服务器中尝试过它。我无法找到一个可靠的估计,即它在失败之前可以处理多少流量。
有人对此有任何数字或文章吗?
Answers:
不幸的是,我没有关于负载功能的任何数据,但是对一些性能限制因素有一些评论:
SQLite的速度受其所在磁盘的速度以及是否正在进行大量插入/更新(即写访问)的影响。写入锁定受磁盘旋转速度限制
交易是默认启动的,但如果你获得更好的性能,你开始并提交事务。以编程方式处理交易时,我的批量插入非常快
如果您通常只读取数据,那么根据我的经验,您将获得良好的性能。因此,SQLite可以用作存储数据库服务器读取(特别是远程读取或复杂查询)的缓存系统。
它使用的资源少于数据库服务器,因此这可能会影响站点性能,因为会为Web服务器和应用程序代码释放更多资源
如果您需要大量并发写入,那么数据库服务器(例如MySQL,Postgres)可能会更好地为您服务
正如Devrim所说,SQLite网站指出每天大约有10万用户。Trac系统需要写入,因此在这种情况下性能可能会降低
我有几点要补充这些好的答案。
当前版本的SQLite具有WAL(预写日志记录),因此读写可以同时进行。因此,先前答案中提到的传统单写作者限制不再存在。我还没有在生产中看到WAL,所以我无法评论它的扩展程度。
是否使用WAL,如果您的SQLite数据库是只读的(或已批量更新)并且适合RAM(您的操作系统具有足够的备用RAM来将其保留在缓冲区中),则它可以在生产Web应用程序上很好地扩展。我个人对它的性能,可扩展性和健壮性持怀疑态度,但是现在在投入生产9个月后,事实证明它可以很好地运行系统的最复杂部分。
Sqlite非常适合嵌入应用程序中,这就是它的设计目的,但是最肯定的是它并不是“快速”。我将它用于我自己的几个应用程序,纯粹是为了方便,只有两个文件可以复制到另一台机器上,以提供完整的应用程序。使用相同的结构,索引等针对MySQL进行的测试表明,即使对于小型数据库,Sqlite的运行速度也相当慢。我希望性能差异会随着数据库大小的增加而增加,尽管我不能肯定地说,因为我只将它用于小于100MB的数据库。
Sqlite不是传统的客户端/服务器数据库应用程序。它本质上是一个嵌入在另一个应用程序中的库。它是为单用户桌面应用程序设计的。您绝对不想在多用户环境中尝试将其用作某种独立的MySQL / PostgreSQL / MS-SQL替代品,因为整个数据库在写入时被锁定。即使负载很轻,您也将要处理争用问题,这会破坏性能。