From 1906cce6fcea88d07b55c0b9734da39675e17a4d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Thu, 20 Jun 2013 14:01:33 +0000 Subject: [PATCH] Increase SQLite's auto-checkpoint interval Common operations like instantiating a NixOS system config no longer fitted in 8192 pages, leading to more fsyncs. So increase this limit. --- src/libstore/local-store.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc index ab5ab70d0..29095e1ea 100644 --- a/src/libstore/local-store.cc +++ b/src/libstore/local-store.cc @@ -380,10 +380,10 @@ void LocalStore::openDB(bool create) sqlite3_exec(db, ("pragma main.journal_mode = " + mode + ";").c_str(), 0, 0, 0) != SQLITE_OK) throwSQLiteError(db, "setting journal mode"); - /* Increase the auto-checkpoint interval to 8192 pages. This + /* Increase the auto-checkpoint interval to 40000 pages. This seems enough to ensure that instantiating the NixOS system derivation is done in a single fsync(). */ - if (mode == "wal" && sqlite3_exec(db, "pragma wal_autocheckpoint = 8192;", 0, 0, 0) != SQLITE_OK) + if (mode == "wal" && sqlite3_exec(db, "pragma wal_autocheckpoint = 40000;", 0, 0, 0) != SQLITE_OK) throwSQLiteError(db, "setting autocheckpoint interval"); /* Initialise the database schema, if necessary. */