[tracker] libtracker-data: Change SQLite page and cache size
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker] libtracker-data: Change SQLite page and cache size
- Date: Tue, 28 Sep 2010 15:52:04 +0000 (UTC)
commit 28f4672c3f4a88f1382ebef4258f576dcb5254ae
Author: Jürg Billeter <j bitron ch>
Date: Tue Sep 28 17:48:22 2010 +0200
libtracker-data: Change SQLite page and cache size
Increase page size from 1 KB to 8 KB. Keep cache size at 2 MB by
default (2000 pages => 250 pages). Increase cache size during updates
to 16 MB (2000 pages) to reduce writes on disk.
src/libtracker-data/tracker-data-update.c | 5 +++++
src/libtracker-data/tracker-db-manager.c | 4 ++--
src/libtracker-data/tracker-db-manager.h | 3 +++
3 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 1f613e1..da97371 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -2214,6 +2214,8 @@ tracker_data_begin_transaction (GError **error)
iface = tracker_db_manager_get_db_interface ();
+ tracker_db_interface_execute_query (iface, NULL, "PRAGMA cache_size = %d", TRACKER_DB_CACHE_SIZE_UPDATE);
+
tracker_db_interface_start_transaction (iface);
if (!in_journal_replay) {
@@ -2271,6 +2273,8 @@ tracker_data_commit_transaction (GError **error)
tracker_db_interface_end_db_transaction (iface);
+ tracker_db_interface_execute_query (iface, NULL, "PRAGMA cache_size = %d", TRACKER_DB_CACHE_SIZE_DEFAULT);
+
g_hash_table_remove_all (update_buffer.resources);
g_hash_table_remove_all (update_buffer.resources_by_id);
g_hash_table_remove_all (update_buffer.resource_cache);
@@ -2563,6 +2567,7 @@ tracker_data_rollback_transaction (void)
tracker_data_update_buffer_clear ();
tracker_db_interface_execute_query (iface, NULL, "ROLLBACK");
+ tracker_db_interface_execute_query (iface, NULL, "PRAGMA cache_size = %d", TRACKER_DB_CACHE_SIZE_DEFAULT);
tracker_db_journal_rollback_transaction ();
if (rollback_callbacks) {
diff --git a/src/libtracker-data/tracker-db-manager.c b/src/libtracker-data/tracker-db-manager.c
index 5664a4e..00a0a1c 100644
--- a/src/libtracker-data/tracker-db-manager.c
+++ b/src/libtracker-data/tracker-db-manager.c
@@ -128,8 +128,8 @@ static TrackerDBDefinition dbs[] = {
"meta.db",
"meta",
NULL,
- 2000,
- TRACKER_DB_PAGE_SIZE_DONT_SET,
+ TRACKER_DB_CACHE_SIZE_DEFAULT,
+ 8192,
FALSE,
FALSE,
0 },
diff --git a/src/libtracker-data/tracker-db-manager.h b/src/libtracker-data/tracker-db-manager.h
index 6c2f98d..db369d3 100644
--- a/src/libtracker-data/tracker-db-manager.h
+++ b/src/libtracker-data/tracker-db-manager.h
@@ -30,6 +30,9 @@ G_BEGIN_DECLS
#error "only <libtracker-data/tracker-data.h> must be included directly."
#endif
+#define TRACKER_DB_CACHE_SIZE_DEFAULT 250
+#define TRACKER_DB_CACHE_SIZE_UPDATE 2000
+
#define TRACKER_TYPE_DB (tracker_db_get_type ())
typedef enum {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]