【发布时间】:2022-01-30 09:56:27
【问题描述】:
由于 SQLite 只能有一个写入线程但可以有多个读取,我想知道这个限制是如何应用的。
这是每个打开的 SQLite 连接,而不考虑数据库,还是每个 SQLite 数据库?例如,如果你将 PHP 或 Python 连接到 4 个 SQLite 数据库,写入限制仍然是 1 还是 4(每个数据库一个)?
最后我想知道是否应该将不同数据库中的一些数据分开以避免达到并发限制?
【问题讨论】:
由于 SQLite 只能有一个写入线程但可以有多个读取,我想知道这个限制是如何应用的。
这是每个打开的 SQLite 连接,而不考虑数据库,还是每个 SQLite 数据库?例如,如果你将 PHP 或 Python 连接到 4 个 SQLite 数据库,写入限制仍然是 1 还是 4(每个数据库一个)?
最后我想知道是否应该将不同数据库中的一些数据分开以避免达到并发限制?
【问题讨论】:
SQLite 执行单一顺序写入,如果多个线程和/或进程需要同时写入数据库,它将排队。
在遇到性能问题之前我不会考虑分片,即使那样我也可能会升级到客户端服务器数据库(postgresql 易于使用)。
您可以在https://www.sqlite.org/whentouse.html 阅读有关 sqlite 并发的更多信息。
【讨论】: