[tracker/rss-enclosures] libtracker-data: Change SQLite page and cache size



commit 757d7deec67dcbd709b951e8e78af0f69a3f7bad
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]