2010-05-06 26 views
27

Ho letto le loro domande frequenti sui limiti, parlano di molti limiti eccetto il limite dell'intero database.esiste un limite alle dimensioni di un database SQLite?

+0

Vedere anche [numero massimo di righe in una tabella di sqlite] (http: // stackoverflow.com/questions/1546947/maximum-number-of-rows-in-a-sqlite-table) – nawfal

+0

Si prega di dare un'occhiata al proprio doc http://www.sqlite.org/limits.html. E potrebbe essere anche questo http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems#Limits – VivekDev

+1

Inoltre [SQLite può gestire gigabyte di dati?] (Https://www.quora.com/Can-SQLite-handle-gigabytes -di-dati) e http://stackoverflow.com/q/3160987/632951 e http://stackoverflow.com/q/784173/632951 per le limitazioni pratiche. – Pacerier

risposta

36

Questo è abbastanza facile dedurre dalla pagina implementation limits:

Un file di database SQLite è organizzato come pagine. La dimensione di ogni pagina è una potenza di 2 tra 512 e SQLITE_MAX_PAGE_SIZE. Il valore predefinito per SQLITE_MAX_PAGE_SIZE è 32768.

...

Il parametro SQLITE_MAX_PAGE_COUNT, che normalmente è impostato su 1073741823, è il numero massimo di pagine consentite in un unico file di database. Un tentativo di inserire nuovi dati che causerebbe un aumento del file di database superiore a questo restituirà SQLITE_FULL.

Così abbiamo 32768 * 1073741823, che è 35,184,372,056,064 (35 000 miliardi bytes)!

È possibile modificare SQLITE_MAX_PAGE_COUNT o SQLITE_MAX_PAGE_SIZE nell'origine, ma questo naturalmente richiederà una build personalizzata di SQLite per l'applicazione. Per quanto ne so, non c'è modo di impostare un limite a livello di codice diverso da quello in fase di compilazione (ma sarei felice di essere smentito).

+4

solo per aggiornare i limiti di oggi (2014) in base alla pagina Limiti di implementazione (http://www.sqlite.org/limits.html): il limite è ora intorno a 140 terabyte (dimensione massima della pagina = 65536 e limite di 2.147.483.646 pagine per database) – laurent

+0

Dovrai anche vivere con i limiti del tuo sistema operativo su cartelle e dimensioni del file, ecc. – ZuLu

18

Ha new limits, ora il limite di dimensione del database è 128TB:

Ogni database è costituito da una o più "pagine". All'interno di un singolo database, ogni pagina ha le stesse dimensioni, ma diversi database possono avere dimensioni di pagina che sono due potenze comprese tra 512 e 65536, comprese. La dimensione massima di un file di database è 2147483646 pagine. Alla dimensione massima della pagina di 65536 byte, questo si traduce in una dimensione massima del database di circa 1,4e + 14 byte (140 terabyte o 128 tebibytes o 140.000 gigabyte o 128000 gibibyte).

Questo limite superiore non è verificato poiché gli sviluppatori non hanno accesso all'hardware in grado di raggiungere questo limite. Tuttavia, i test verificano che SQLite si comporti correttamente e in modo corretto quando un database raggiunge la dimensione massima del file system sottostante (che di solito è molto inferiore alla dimensione massima teorica del database) e quando un database non è in grado di crescere a causa dell'esaurimento dello spazio su disco.

0

Il numero massimo di byte in una stringa o BLOB in SQLite è definito dalla macro del preprocessore SQLITE_MAX_LENGTH. Il valore predefinito di questa macro è 1 miliardo (1 miliardo o 1.000.000.000).

L'implementazione attuale supportano solo una stringa o BLOB di lunghezza fino a 231-1 o 2147483647

L'impostazione predefinita per SQLITE_MAX_COLUMN è 2000. È possibile cambiare al momento della compilazione di valori grande come 32767. Sul Dall'altra parte, molti progettisti di database esperti sostengono che un database ben normalizzato non avrà mai bisogno di più di 100 colonne in una tabella.

SQLite non supporta join contenenti più di 64 tabelle.

Il numero massimo teorico di righe in una tabella è 264 (18446744073709551616 o circa 1,8e + 19). Questo limite è irraggiungibile poiché verrà raggiunta prima la dimensione massima del database di 140 terabyte.

Dimensione massima DB: 140 terabyte

Si prega di verificare l'URL per ulteriori informazioni: https://www.sqlite.org/limits.html

0

Anche se questa è una vecchia questione, ma mi permetta di condividere le mie scoperte per le persone che raggiungono questa domanda.

Anche se la documentazione di Sqlite indica che la dimensione massima del file di database è ~ 140 terabyte ma il sistema operativo impone le proprie restrizioni sulla dimensione massima del file per qualsiasi tipo di file.

Ad es. se si utilizza il disco FAT32 su Windows, la dimensione massima del file che potrei ottenere per sqLite era 2 GB. (Secondo il sito di Microsoft, il limite per il sistema FAT 32 è 4GB ma la mia dimensione db sqlite restava limitata a 2 GB). Mentre su Linux, ero in grado di raggiungere 3 GB (dove mi sono fermato, potrebbe aver raggiunto più dimensioni)

Problemi correlati