Use WAL, remove (and strip) SQLite3 shared-cache support
Signed-off-by: DL6ER <dl6er@dl6er.de>
This commit is contained in:
parent
7b59c6515c
commit
6c921e75ae
|
@ -24,6 +24,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
|
|||
# SQLITE_DEFAULT_MEMSTATUS=0: This setting causes the sqlite3_status() interfaces that track memory usage to be disabled. This helps the sqlite3_malloc() routines run much faster, and since SQLite uses sqlite3_malloc() internally, this helps to make the entire library faster.
|
||||
# SQLITE_OMIT_DEPRECATED: Omitting deprecated interfaces and features will not help SQLite to run any faster. It will reduce the library footprint, however. And it is the right thing to do.
|
||||
# SQLITE_OMIT_PROGRESS_CALLBACK: The progress handler callback counter must be checked in the inner loop of the bytecode engine. By omitting this interface, a single conditional is removed from the inner loop of the bytecode engine, helping SQL statements to run slightly faster.
|
||||
# SQLITE_OMIT_SHARED_CACHE: This option builds SQLite without support for shared cache mode. The sqlite3_enable_shared_cache() is omitted along with a fair amount of logic within the B-Tree subsystem associated with shared cache management. This compile-time option is recommended most applications as it results in improved performance and reduced library footprint.
|
||||
# SQLITE_DEFAULT_FOREIGN_KEYS=1: This macro determines whether enforcement of foreign key constraints is enabled or disabled by default for new database connections.
|
||||
# SQLITE_DQS=0: This setting disables the double-quoted string literal misfeature.
|
||||
# SQLITE_ENABLE_DBPAGE_VTAB: Enables the SQLITE_DBPAGE virtual table. Warning: writing to the SQLITE_DBPAGE virtual table can very easily cause unrecoverably database corruption.
|
||||
|
@ -31,7 +32,7 @@ set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR})
|
|||
# SQLITE_USE_URI=1: The advantage of using a URI filename is that query parameters on the URI can be used to control details of the newly created database connection.
|
||||
# HAVE_READLINE: Enable readline support to allow easy editing, history and auto-completion
|
||||
# SQLITE_DEFAULT_CACHE_SIZE=-16384: Allow up to 16 MiB of cache to be used by SQLite3 (default is 2000 kiB)
|
||||
set(SQLITE_DEFINES "-DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_DEFAULT_FOREIGN_KEYS=1 -DSQLITE_DQS=0 -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TEMP_STORE=2 -DSQLITE_USE_URI=1 -DHAVE_READLINE -DSQLITE_DEFAULT_CACHE_SIZE=16384")
|
||||
set(SQLITE_DEFINES "-DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_OMIT_DEPRECATED -DSQLITE_OMIT_PROGRESS_CALLBACK -DSQLITE_OMIT_SHARED_CACHE -DSQLITE_DEFAULT_FOREIGN_KEYS=1 -DSQLITE_DQS=0 -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_TEMP_STORE=2 -DSQLITE_USE_URI=1 -DHAVE_READLINE -DSQLITE_DEFAULT_CACHE_SIZE=16384")
|
||||
|
||||
# Code hardening and debugging improvements
|
||||
# -fstack-protector-strong: The program will be resistant to having its stack overflowed
|
||||
|
|
|
@ -60,7 +60,7 @@ void db_counts(unsigned long *last_idx, unsigned long *mem_num, unsigned long *d
|
|||
bool init_memory_database(void)
|
||||
{
|
||||
int rc;
|
||||
const char *uri = "file:memdb?mode=memory&cache=shared";
|
||||
const char *uri = "file:memdb?mode=memory";
|
||||
|
||||
// Try to open in-memory database
|
||||
rc = sqlite3_open_v2(uri, &memdb, SQLITE_OPEN_READWRITE, NULL);
|
||||
|
@ -81,6 +81,21 @@ bool init_memory_database(void)
|
|||
return false;
|
||||
}
|
||||
|
||||
// Change journal mode to WAL
|
||||
// - WAL is significantly faster in most scenarios.
|
||||
// - WAL provides more concurrency as readers do not block writers and a
|
||||
// writer does not block readers. Reading and writing can proceed
|
||||
// concurrently.
|
||||
// - Disk I/O operations tends to be more sequential using WAL.
|
||||
rc = sqlite3_exec(memdb, "PRAGMA journal_mode=WAL", NULL, NULL, NULL);
|
||||
if( rc != SQLITE_OK )
|
||||
{
|
||||
log_err("init_memory_database(): Step error while trying to set journal mode: %s",
|
||||
sqlite3_errstr(rc));
|
||||
sqlite3_close(memdb);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Create query_storage table in the database
|
||||
for(unsigned int i = 0; i < ArraySize(table_creation); i++)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue