2012-12-17 13 views
5

Secondo http://www.sqlite.org/threadsafe.html ci sono tre diverse modalità di threading quando si lavora con sqlite: thread singolo, multi-threaded e serializzato. Se configurato su serializzato e multi-threaded, vengono utilizzati i mutex (a seconda della modalità in cui vengono utilizzati più o meno) e in i mutex in modalità single-threading non vengono utilizzati affatto.sola lettura accesso solo per sqlite3 da più thread

Supponendo che il database verrà utilizzato solo per le query (accesso in sola lettura) è possibile utilizzare la modalità a thread singolo mentre si accede ancora da thread diversi? O ci sono risorse globali che devono essere protette?

Inoltre, è possibile utilizzare l'adattatore ADO.NET predefinito System.Data.Sqlite nello stesso modo?

+0

Vorrei ampliare la domanda: mi chiedo se c'è qualche differenza di prestazioni tra multi-thread e serializzato? Se l'accesso è di sola lettura, sono equivalenti, giusto? – Fabian

risposta

3

La libreria SQLite ha molte strutture dati interne che vengono modificati anche per un file di database di sola lettura (cache, le dichiarazioni compilate, set di risultati, etc.), quindi è necessario mai accedere a una connessione a thread singolo da più filettature.

ADO.NET non fornisce garanzie di sicurezza per i thread, quindi neither does System.Data.SQLite.

Problemi correlati