Browse Source

Add more tunes to sqlite

tags/1.1.0
Vsevolod Stakhov 8 years ago
parent
commit
265cdfde91
1 changed files with 22 additions and 5 deletions
  1. 22
    5
      src/libutil/sqlite_utils.c

+ 22
- 5
src/libutil/sqlite_utils.c View File

@@ -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);

Loading…
Cancel
Save