summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevron Rees <tripzero.kev@gmail.com>2013-03-16 17:43:40 -0700
committerKevron Rees <tripzero.kev@gmail.com>2013-03-16 17:43:40 -0700
commite5839600d5b74789d9a601f194326e9acab14bc6 (patch)
treeae6b8daea90132794ecae2534ac631e3b834c65e
parent85817b8a53ca3eeace22bce359554f1a2c41df52 (diff)
downloadautomotive-message-broker-e5839600d5b74789d9a601f194326e9acab14bc6.tar.gz
database logging speed improvements
-rw-r--r--examples/storagebin15360 -> 21733376 bytes
-rw-r--r--plugins/database/basedb.hpp5
-rw-r--r--plugins/database/databasesink.cpp20
3 files changed, 22 insertions, 3 deletions
diff --git a/examples/storage b/examples/storage
index c21b03bc..e01b877a 100644
--- a/examples/storage
+++ b/examples/storage
Binary files differ
diff --git a/plugins/database/basedb.hpp b/plugins/database/basedb.hpp
index 042b413f..49a84ae3 100644
--- a/plugins/database/basedb.hpp
+++ b/plugins/database/basedb.hpp
@@ -299,6 +299,11 @@ public:
}
+ void exec(string query)
+ {
+ q->execute(query);
+ }
+
protected:
void
diff --git a/plugins/database/databasesink.cpp b/plugins/database/databasesink.cpp
index bafa660a..965b4fa9 100644
--- a/plugins/database/databasesink.cpp
+++ b/plugins/database/databasesink.cpp
@@ -16,6 +16,8 @@ void * cbFunc(gpointer data)
throw std::runtime_error("Could not cast shared object.");
}
+ vector<DictionaryList<string> > insertList;
+
while(1)
{
DBObject* obj = shared->queue.pop();
@@ -40,7 +42,19 @@ void * cbFunc(gpointer data)
dict.push_back(four);
dict.push_back(five);
- shared->db->insert(dict);
+ insertList.push_back(dict);
+
+ if(insertList.size() > 100)
+ {
+ shared->db->exec("BEGIN IMMEDIATE TRANSACTION");
+ for(int i=0; i< insertList.size(); i++)
+ {
+ DictionaryList<string> d = insertList[i];
+ shared->db->insert(d);
+ }
+ shared->db->exec("END TRANSACTION");
+ insertList.clear();
+ }
delete obj;
}
@@ -69,7 +83,7 @@ int getNextEvent(gpointer data)
{
pbshared->routingEngine->updateProperty(obj->key, value, pbshared->uuid);
value->timestamp = obj->time;
- value->sequence = obj->sequence;
+ //value->sequence = obj->sequence;
}
if(++itr != pbshared->playbackQueue.end())
@@ -235,7 +249,7 @@ void DatabaseSink::startDb()
initDb();
-// thread = g_thread_new("dbthread", cbFunc, shared);
+ thread = g_thread_new("dbthread", cbFunc, shared);
}
void DatabaseSink::startPlayback()