SQLite 是不是适合网站使用

Posted

技术标签:

【中文标题】SQLite 是不是适合网站使用【英文标题】:Is SQLite suitable for web site usageSQLite 是否适合网站使用 【发布时间】:2011-04-21 12:38:30 【问题描述】:

我在 SQLite 3 中有一个 50MB 大小的数据库。所有 db 对象都通过 Web 服务访问。 SQLite 对于大约 500 个并行用户的并发在线使用来说是一个不错的选择吗?

注意:用户将使用相同的表但不同的行。每个用户只能查看/更新/删除他的数据。

【问题讨论】:

平行是什么意思?同时在线,否则数据库会有 500 个文件句柄? 【参考方案1】:

SQLite 通常可以很好地用作中低流量网站的数据库引擎(也就是说,所有网站的 99.9%)。当然,SQLite 可以处理的网络流量取决于网站使用其数据库的程度。一般来说,任何每天点击量少于 100K 的网站都可以使用 SQLite。 10 万次点击/天的数字是保守估计,而不是硬性上限。 SQLite 已被证明可以处理 10 倍的流量。

(Source)

【讨论】:

这里有人真正尝试过***.com/questions/54998/how-scalable-is-sqlite 每天 10 万次点击等于每秒 1.15 次点击(假设每天工作 8 小时,3-4 次)。一个拥有 500 个并发用户的网站每秒的点击量将达到 100-500 次。 @tster - 听起来不错。我只是提供数据,而不是提供意见。 +1 为您的第一条评论中的链接。 OP 应该检查一下。【参考方案2】:

根据***,如果对数据库有任何并发​​访问,SQLLite 将fail a write。仅这一点就让我认为它不适用于 500 个并发用户。

除非几乎没有任何更新。我认为 500 个并发用户肯定足以保证一个成熟的 DBMS。

注意,看起来***的文章是错误的(在***上很常见)。无论如何,如果这 500 个用户要更新很多,我仍然会厌倦 500 个并发用户和 0 个并发写入。虽然 Nifle 引用的线程中的数字听起来不错,但这些数字很可能来自旨在使 sqllite 看起来不错的测试。我怀疑您是否会在所有查询、所有表大小、所有缓存状态等方面获得相同的里程数。

【讨论】:

如果启用事务并正确使用锁,Sqlite 不会失败。这是由一个体面的 ORM 正确和透明地完成的,但它也是一种很好的做法。【参考方案3】:

我在 VPS 和本地 Pi 计算机上运行一些 Web 服务器,这些都使用 mysql 或 MariaDB 在 Ubuntu Linux 上运行

对于 Web 服务器,您必须具有事务管理以确保来自多个用户的写入正常运行

SqLite 适用于低使用率的单实例数据库,您可能会遇到数据完整性问题、写入失败和其他问题

SqLite 不适合 Web 服务器

您还必须了解网络安全以及跨站点脚本和 SQL 注入攻击等问题,否则您的网站可能会在几天内遭到破坏

我建议你安装一个本地 Web 服务器套件,在 Windows 上称为 WAMP,在 Linux 上称为 LAMP,意思是 Windows(Linux)、Apache、MySQL、php PHPMyAdmin 是用于 Web 服务器上的数据库管理的出色工具,通常包含在 WAMP、LAMP 设置中 对于任何学习网络托管的人来说,这始终是一个很好的起点

【讨论】:

【参考方案4】:

MySQL 是 Web 服务器的更好选择。 大多数服务器上默认不安装 SQLite,而通常安装 MySQL。 MySQL 有事务管理,适合多并发写入。

【讨论】:

显然 SQLite 比 MySQL、postgresql、Oracle 更简单......它只是一个 200kb 的库。事实上 sqlite 它不存在你错了,事实上 sqlite 的端口数量实际上优于 MySQL 或其他数据库引擎。考虑到每台服务器都需要一个系统管理员来配置所需的软件,因此默认情况下未安装的事实并不重要。那是恕我直言。

以上是关于SQLite 是不是适合网站使用的主要内容,如果未能解决你的问题,请参考以下文章

“找不到适合 jdbc:sqlite 的驱动程序”问题。我究竟做错了啥?

找不到适合 jdbc:sqlite 的驱动程序

快速入门:用Python做SQLite数据库开发(适合初学)

量大,sqlite数据库写入数据慢,有啥办法吗

交叉编译SQLite3

微信为什么使用 SQLite 保存聊天记录?(来长长见识了!)