我应该使用SQLite而不是MySQL吗?

Sil*_*ian 2 mysql sqlite performance

我需要改进PHP-MySQL Web应用程序,它只使用MySQL进行REPL操作(以及一些搜索功能).我使用过的99%的应用程序从未使用过高级MySQL功能,如复制,跨表约束,锁定等.

根据我的理解,我应该使用SQLite.

如果我这样做,有什么实际好处吗?我会看到显着的(> 100ms)速度提升吗?我是否应该预计超过1,000,000行的表存在问题?

Eug*_*eck 6

对此没有全面的答案,但有一个要点需要考虑:一个非常好的经验法则是,你的并发度越高,你从MySQL中获得的利润就越多,反之亦然.

这意味着在数据库请求永远不会并发的情况下,您可能会通过使用SQlite看到加速,但我怀疑它将在100毫秒的数量级.

这背后的原因是(非常粗略):

在数据库服务器环境中,例如MySQL,PostgreSQL,MS SQL,Oracle和朋友,专用进程(或一组进程)专门接触数据库文件 - 这是专用的重要部分.这意味着,并发问题可以在进程中解决.

在基于文件的数据库中,例如SQlite,MS Access(Jet Engine)和朋友,多个进程将在不知道彼此的情况下触及数据库文件 - 这意味着必须通过将它们写入数据库或帮助程序来解决并发问题文件(S).这通常要慢得多且不太稳健.作为交换,数据库客户端(Web应用程序)和数据库服务器(正在进行中)之间的通信开销不存在.

编辑

评论之后我想更清楚,我说的是并发写入,而不是并发读取.并发读取不变的数据集并不是一个难题 - 它根本不需要任何锁定.