2012-01-26 16 views
12

¿Cuál es la conexión máxima para la base de datos sqlite3?¿Cuál es la conexión máxima para la base de datos sqlite3?

Cualquiera ¿Por qué no puedo usarlo para sitios web muy grandes Supongamos que 3 millones de usuarios?

+7

sqlite no permite el acceso simultáneo de escritura (es decir, solo una transacción de escritura puede estar en curso a la vez), por lo que no debe utilizarse para sitios web con cargas de trabajo pesadas de escritura. –

+2

@DanD. esto debería ser la respuesta – TMS

Respuesta

15

http://sqlite.org/whentouse.html explica "Las situaciones donde otro RDBMS puede funcionar mejor":

SQLite utiliza bloqueos de lectura/escritura en el archivo de base de datos. Eso significa que si cualquier proceso está leyendo desde cualquier parte de la base de datos, se impide que todos los demás procesos escriban cualquier otra parte de la base de datos. De forma similar, si cualquier proceso está escribiendo en la base de datos, se impide que todos los demás procesos lean cualquier otra parte de la base de datos. Para muchas situaciones, esto no es un problema. Cada aplicación hace que su base de datos trabaje rápidamente y se mueva, y ningún bloqueo dura más de unas pocas docenas de milisegundos. Pero hay algunas aplicaciones que requieren más concurrencia, y esas aplicaciones pueden necesitar buscar una solución diferente.

4

bajo diferentes sistemas, este valor puede ser diferente, el código de prueba de pitón:

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) 

Bajo ubuntu, el recuento no es 1021, puede probar bajo diferentes sistemas operativos.

+0

cuáles fueron los resultados de su prueba. 1021 conexiones a múltiples bases de datos o a una sola base de datos? –

2

En realidad, no existe un límite predefinido para el número de conexiones concurrentes en sqlite para el mismo proceso. Esto depende del rendimiento de su sistema. La cita dada por el usuario647772 es sobre el límite de procesos concurrentes o aplicaciones que usan la misma base de datos sqlite, no válida para hilos concurrentes en el mismo proceso.

Cuestiones relacionadas