Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

http://sqlite.org/whentouse.html объясняет "ситуации, в которых еще может работать другая СУБД":

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

Ответ 2

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

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