SQLite3数据库的最大连接数是多少?
为什么我不能将它用于非常大的网站,例如拥有 300 万用户的网站?
http://sqlite.org/whentouse.html 解释了“另一个 RDBMS 可能工作得更好的情况”:
许多并发作家? → 选择客户端/服务器
如果许多线程和/或进程需要在同一时刻写入数据库(并且它们无法排队并轮流),那么最好选择支持该功能的数据库引擎,这始终意味着客户端/服务器数据库引擎.
SQLite 对于每个数据库文件一次仅支持一名写入者。但在大多数情况下,写入事务只需要几毫秒,因此多个写入者可以轮流进行。 SQLite 将处理比许多人想象的更多的写入并发量。尽管如此,客户端/服务器数据库系统,因为它们手头有一个长时间运行的服务器进程来协调访问,通常可以处理比 SQLite 更多的写入并发量。
不同系统下,这个值可能不同,python测试代码:
import sqlite3
import sys
# connect to multiple databases
def multi_connect(conn_num):
dbs = []
for i in range(0, conn_num):
try:
con = sqlite3.connect(str(i) + '.db')
except Exception as e:
print('connect to %d.db failed' % i)
sys.exit(-1)
# multiple connections to single database
def multi_connect2(conn_num):
db_name = 'x.db'
conns = []
for i in range(0, conn_num):
try:
conn = sqlite3.connect(db_name)
except Exception as e:
print('connect failed at %d' % i)
sys.exit(-1)
在ubuntu下,失败次数为1021,您可以在不同操作系统下测试。
对于同一进程,sqlite 中的并发连接数实际上没有预定义的限制。这取决于您的系统性能。 user647772给出的报价是关于使用相同sqlite DB的并发进程或应用程序的限制,对于同一进程中的并发线程无效。