Какое максимальное количество подключений для базы данных sqlite3? - PullRequest
19 голосов
/ 26 января 2012

Какое максимальное количество соединений для базы данных sqlite3?

Любой. Почему я не могу использовать его для очень больших веб-сайтов? Предположим, 3 миллиона пользователей?

Ответы [ 3 ]

25 голосов
/ 26 января 2012

http://sqlite.org/whentouse.html объясняет «ситуации, когда другая СУБД может работать лучше»:

SQLite использует блокировки чтения / записи для всего файла базы данных.Это означает, что если какой-либо процесс читает из какой-либо части базы данных, все другие процессы не могут записывать любую другую часть базы данных.Точно так же, если какой-либо один процесс записывает в базу данных, все другие процессы не могут читать любую другую часть базы данных.Для многих ситуаций это не проблема.Каждое приложение выполняет свою работу с базой данных быстро и движется дальше, и никакая блокировка не длится более нескольких десятков миллисекунд.Но есть некоторые приложения, которые требуют большего количества параллелизма, и эти приложения, возможно, должны искать другое решение.

5 голосов
/ 25 марта 2015

В разных системах это значение может отличаться, код теста 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, его можно протестировать под разными ОС.

3 голосов
/ 17 ноября 2015

На самом деле нет предопределенного ограничения на количество одновременных подключений в sqlite для одного и того же процесса. Это зависит от производительности вашей системы. Цитата user647772 касается ограничения количества одновременных процессов или приложений, использующих одну и ту же базу данных sqlite, недопустимо для одновременных потоков в одном и том же процессе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...