From 6f8dc0b6169fa43a340377e3a95a0352cfc2148a Mon Sep 17 00:00:00 2001 From: Clément Lassieur Date: Thu, 19 Jul 2018 12:48:44 +0200 Subject: database: Use SQLite in Multi-thread mode. This disables mutexing on database connection and prepared statement objects, thus making us responsible for serializing access to database connections and prepared statements. It may result in a performance improvement. * src/cuirass/database.scm (db-init, db-open): Pass the SQLITE_OPEN_NOMUTEX flag to SQLITE-OPEN. --- src/cuirass/database.scm | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/cuirass/database.scm b/src/cuirass/database.scm index 72acb15..df41d75 100644 --- a/src/cuirass/database.scm +++ b/src/cuirass/database.scm @@ -189,7 +189,8 @@ database object." (format (current-error-port) "Removing leftover database ~a~%" db-name) (delete-file db-name)) (let ((db (sqlite-open db-name (logior SQLITE_OPEN_CREATE - SQLITE_OPEN_READWRITE)))) + SQLITE_OPEN_READWRITE + SQLITE_OPEN_NOMUTEX)))) (db-load db schema) (db-set-schema-version db (latest-db-schema-version)) db)) @@ -215,8 +216,14 @@ database object." ;; Use "write-ahead log" mode because it improves concurrency and should ;; avoid SQLITE_LOCKED errors when we have several readers: ;; . + + ;; SQLITE_OPEN_NOMUTEX disables mutexing on database connection and prepared + ;; statement objects, thus making us responsible for serializing access to + ;; database connections and prepared statements. (set-db-options (if (file-exists? db) - (db-upgrade (sqlite-open db SQLITE_OPEN_READWRITE)) + (db-upgrade + (sqlite-open db (logior SQLITE_OPEN_READWRITE + SQLITE_OPEN_NOMUTEX))) (db-init db)))) (define (db-close db) -- cgit v1.2.3