From: Vsevolod Stakhov Date: Wed, 18 Nov 2015 17:05:26 +0000 (+0000) Subject: Add more tunes to sqlite X-Git-Tag: 1.1.0~533 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=265cdfde91800ef2963084f02dfde521c4f1b9ac;p=thirdparty%2Frspamd.git Add more tunes to sqlite --- diff --git a/src/libutil/sqlite_utils.c b/src/libutil/sqlite_utils.c index 0458a0a020..bf8210c714 100644 --- a/src/libutil/sqlite_utils.c +++ b/src/libutil/sqlite_utils.c @@ -248,11 +248,20 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const sqlite3 *sqlite; gint rc, flags, lock_fd; gchar lock_path[PATH_MAX], dbdir[PATH_MAX], *pdir; - static const char sqlite_wal[] = "PRAGMA journal_mode=\"wal\";", - exclusive_lock_sql[] = "PRAGMA locking_mode=\"exclusive\";", - fsync_sql[] = "PRAGMA synchronous=1;", - foreign_keys[] = "PRAGMA foreign_keys=\"ON\";", - enable_mmap[] = "PRAGMA mmap_size=268435456;"; + static const char sqlite_wal[] = + "PRAGMA journal_mode=\"wal\";" + "PRAGMA wal_autocheckpoint = 16;" + "PRAGMA journal_size_limit = 1536;", + exclusive_lock_sql[] = "PRAGMA locking_mode=\"exclusive\";", + + fsync_sql[] = "PRAGMA synchronous=\"NORMAL\";", + + foreign_keys[] = "PRAGMA foreign_keys=\"ON\";", + + enable_mmap[] = "PRAGMA mmap_size=268435456;", + + other_pragmas[] = "PRAGMA read_uncommitted=\"ON\";" + "PRAGMA cache_size=262144"; gboolean create = FALSE, has_lock = FALSE; flags = SQLITE_OPEN_READWRITE; @@ -307,6 +316,8 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const has_lock = TRUE; } + sqlite3_enable_shared_cache (1); + if ((rc = sqlite3_open_v2 (path, &sqlite, flags, NULL)) != SQLITE_OK) { #if SQLITE_VERSION_NUMBER >= 3008000 @@ -393,6 +404,12 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const sqlite3_errmsg (sqlite)); } + if ((rc = sqlite3_exec (sqlite, other_pragmas, NULL, NULL, NULL)) != + SQLITE_OK) { + msg_warn_pool ("cannot execute tuning pragmas: %s", + sqlite3_errmsg (sqlite)); + } + if (has_lock) { msg_debug_pool ("removing lock from %s", lock_path); rspamd_file_unlock (lock_fd, FALSE);