SQLite3数据库的最大连接数是多少?

问题描述 投票:0回答:3

SQLite3数据库的最大连接数是多少?

为什么我不能将它用于非常大的网站,例如拥有 300 万用户的网站?

database sqlite
3个回答
44
投票

http://sqlite.org/whentouse.html 解释了“另一个 RDBMS 可能工作得更好的情况”:

许多并发作家? → 选择客户端/服务器

如果许多线程和/或进程需要在同一时刻写入数据库(并且它们无法排队并轮流),那么最好选择支持该功能的数据库引擎,这始终意味着客户端/服务器数据库引擎.

SQLite 对于每个数据库文件一次仅支持一名写入者。但在大多数情况下,写入事务只需要几毫秒,因此多个写入者可以轮流进行。 SQLite 将处理比许多人想象的更多的写入并发量。尽管如此,客户端/服务器数据库系统,因为它们手头有一个长时间运行的服务器进程来协调访问,通常可以处理比 SQLite 更多的写入并发量。


6
投票

不同系统下,这个值可能不同,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,您可以在不同操作系统下测试。


6
投票

对于同一进程,sqlite 中的并发连接数实际上没有预定义的限制。这取决于您的系统性能。 user647772给出的报价是关于使用相同sqlite DB的并发进程或应用程序的限制,对于同一进程中的并发线程无效。

© www.soinside.com 2019 - 2024. All rights reserved.