【问题标题】:SQLite writing limit is per database?SQLite 写入限制是每个数据库?
【发布时间】:2022-01-30 09:56:27
【问题描述】:

由于 SQLite 只能有一个写入线程但可以有多个读取,我想知道这个限制是如何应用的。

这是每个打开的 SQLite 连接,而不考虑数据库,还是每个 SQLite 数据库?例如,如果你将 PHP 或 Python 连接到 4 个 SQLite 数据库,写入限制仍然是 1 还是 4(每个数据库一个)?

最后我想知道是否应该将不同数据库中的一些数据分开以避免达到并发限制?

【问题讨论】:

    标签: php linux database sqlite


    【解决方案1】:

    SQLite 执行单一顺序写入,如果多个线程和/或进程需要同时写入数据库,它将排队。

    在遇到性能问题之前我不会考虑分片,即使那样我也可能会升级到客户端服务器数据库(postgresql 易于使用)。

    您可以在https://www.sqlite.org/whentouse.html 阅读有关 sqlite 并发的更多信息。

    【讨论】:

    • 我已经使用了许多其他数据库解决方案,例如 MSQL、PostgreSQL 和 MariaDB。我正在尝试为不依赖于集中式数据库服务器的东西设计一种新方法,因此 SQLite 适合我需要在系统之间传输数据库的目的。我不打算将数据库共享给许多用户,而是每个用户共享一个数据库。因此我的问题。如果每个用户都有自己的 SQLite 数据库,我应该考虑哪些限制。我知道那个链接,但它并没有真正回答这个关于并发的特定问题。
    • 好的,每个sqlite文件都是一个数据库,每个数据库只能有1个并发写入进程,无论连接的用户数如何。此外,如果有多个写入事务,这不是世界末日,因为它们只会排队。所以,我想考试问题是亚秒级延迟对您的读者有多重要?
    • 谢谢,延迟在这里并不重要,如果查询最终被执行,他们可以等待,我认为这是真的,因为你说他们被放在队列中。我想知道队列默认过期还有多少时间。我认为这回答了我的问题。那么,每个数据库都有自己独立的写入限制,而不是针对整个平台或连接器(PHP、Python 等)?
    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 1970-01-01
    相关资源
    最近更新 更多