diff options
author | Kevron Rees <tripzero.kev@gmail.com> | 2013-03-16 17:43:40 -0700 |
---|---|---|
committer | Kevron Rees <tripzero.kev@gmail.com> | 2013-03-16 17:43:40 -0700 |
commit | e5839600d5b74789d9a601f194326e9acab14bc6 (patch) | |
tree | ae6b8daea90132794ecae2534ac631e3b834c65e | |
parent | 85817b8a53ca3eeace22bce359554f1a2c41df52 (diff) | |
download | automotive-message-broker-e5839600d5b74789d9a601f194326e9acab14bc6.tar.gz |
database logging speed improvements
-rw-r--r-- | examples/storage | bin | 15360 -> 21733376 bytes | |||
-rw-r--r-- | plugins/database/basedb.hpp | 5 | ||||
-rw-r--r-- | plugins/database/databasesink.cpp | 20 |
3 files changed, 22 insertions, 3 deletions
diff --git a/examples/storage b/examples/storage Binary files differindex c21b03bc..e01b877a 100644 --- a/examples/storage +++ b/examples/storage 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() |