Каково максимальное количество соединений для базы данных SQLite3?
Почему я не могу использовать его для очень больших сайтов, например, с 3 миллионами пользователей?
Каково максимальное количество соединений для базы данных SQLite3?
Почему я не могу использовать его для очень больших сайтов, например, с 3 миллионами пользователей?
http://sqlite.org/whentouse.html объясняет "ситуации, в которых еще может работать другая СУБД":
SQLite использует блокировки чтения/записи для всего файла базы данных. Это означает, что если какой-либо процесс читается из любой части базы данных, все другие процессы не могут писать какую-либо другую часть базы данных. Аналогично, если какой-либо один процесс записывает в базу данных, всем другим процессам препятствует чтение любой другой части базы данных. Для многих ситуаций это не проблема. Каждое приложение быстро выполняет свою базу данных и движется дальше, и блокировка не длится более нескольких десятков миллисекунд. Но есть некоторые приложения, для которых требуется больше concurrency, и этим приложениям может потребоваться найти другое решение.
В другой системе это значение может отличаться, код проверки 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, касается ограничения одновременных процессов или приложений с использованием одного и того же SQL-блока sqlite, недействительного для одновременных потоков в одном и том же процессе.