]> git.sesse.net Git - nageru/blobdiff - db.cpp
Speed up the database writes a bit, especially when I/O is busy.
[nageru] / db.cpp
diff --git a/db.cpp b/db.cpp
index c999a1d01780109d3abf20bf42afbc38a36bffa0..c3e647cf46343885360c58007da9d970aabe80af 100644 (file)
--- a/db.cpp
+++ b/db.cpp
@@ -4,17 +4,20 @@
 
 using namespace std;
 
-DB::DB(const char *filename)
+DB::DB(const std::string &filename)
 {
-       int ret = sqlite3_open(filename, &db);
+       int ret = sqlite3_open(filename.c_str(), &db);
        if (ret != SQLITE_OK) {
-               fprintf(stderr, "%s: %s\n", filename, sqlite3_errmsg(db));
+               fprintf(stderr, "%s: %s\n", filename.c_str(), sqlite3_errmsg(db));
                exit(1);
        }
 
        sqlite3_exec(db, R"(
                CREATE TABLE IF NOT EXISTS state (state BLOB);
        )", nullptr, nullptr, nullptr);  // Ignore errors.
+
+       sqlite3_exec(db, "PRAGMA journal_mode=WAL", nullptr, nullptr, nullptr);  // Ignore errors.
+       sqlite3_exec(db, "PRAGMA synchronous=NORMAL", nullptr, nullptr, nullptr);  // Ignore errors.
 }
 
 StateProto DB::get_state()
@@ -67,7 +70,7 @@ void DB::store_state(const StateProto &state)
        }
 
        sqlite3_stmt *stmt;
-       ret = sqlite3_prepare(db, "INSERT INTO state VALUES (?)", -1, &stmt, 0);
+       ret = sqlite3_prepare(db, "INSERT INTO state VALUES (?)", -1, &stmt, 0);
        if (ret != SQLITE_OK) {
                fprintf(stderr, "INSERT prepare: %s\n", sqlite3_errmsg(db));
                exit(1);