guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[no subject]


From: Clément Lassieur
Date: Fri, 20 Jul 2018 09:21:30 -0400 (EDT)

branch: master
commit 6f8dc0b6169fa43a340377e3a95a0352cfc2148a
Author: Clément Lassieur <address@hidden>
Date:   Thu Jul 19 12:48:44 2018 +0200

    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(-)

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:
   ;; <https://www.sqlite.org/wal.html>.
+
+  ;; 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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]