Index: src/libchcore/TSQLiteSerializer.cpp
===================================================================
diff -u -N -r30297d6aab17483da8e7b8323b4d17ff1a9f78d6 -r5693271a6736f524997e3951fc7b7b6323bc6447
--- src/libchcore/TSQLiteSerializer.cpp	(.../TSQLiteSerializer.cpp)	(revision 30297d6aab17483da8e7b8323b4d17ff1a9f78d6)
+++ src/libchcore/TSQLiteSerializer.cpp	(.../TSQLiteSerializer.cpp)	(revision 5693271a6736f524997e3951fc7b7b6323bc6447)
@@ -22,6 +22,9 @@
 #include "TCoreException.h"
 #include "ErrorCodes.h"
 #include "TSQLiteTransaction.h"
+#include "TSQLiteStatement.h"
+#include "TSimpleTimer.h"
+#include "SerializerTrace.h"
 
 BEGIN_CHCORE_NAMESPACE
 
@@ -34,6 +37,9 @@
 	if(!m_spDatabase || !m_spSchema)
 		THROW_CORE_EXCEPTION(eErr_InvalidArgument);
 
+	// initialize db params
+	SetupDBOptions();
+
 	m_spSchema->Setup(m_spDatabase);
 }
 
@@ -55,16 +61,42 @@
 
 void TSQLiteSerializer::Flush()
 {
+	DBTRACE0(_T("   ## Serializer::Flush() - started\n"));
+
 	TSQLiteTransaction tran(m_spDatabase);
 
+	TSimpleTimer timer(true);
+
 	for(ContainerMap::iterator iterContainer = m_mapContainers.begin(); iterContainer != m_mapContainers.end(); ++iterContainer)
 	{
 		iterContainer->second->Flush();
 	}
 
+	unsigned long long ullFlushGatherTime = timer.Checkpoint(); ullFlushGatherTime;
+
 	tran.Commit();
 
+	unsigned long long ullFlushCommitTime = timer.Checkpoint(); ullFlushCommitTime;
+	DBTRACE2(_T("   ## Serializer::Flush() - container flushes: %I64u ms, transaction commit: %I64u ms\n"), ullFlushGatherTime, ullFlushCommitTime);
+
 	m_mapContainers.clear();
+
+	unsigned long long ullFlushClearTime = timer.Stop(); ullFlushClearTime;
+	DBTRACE(_T("   ## Serializer::Flush() - container clearing: %I64u ms\n"), ullFlushClearTime);
 }
 
+void TSQLiteSerializer::SetupDBOptions()
+{
+/*
+	TSQLiteStatement tStatement(m_spDatabase);
+	tStatement.Prepare(_T("PRAGMA JOURNAL_MODE=WAL"));
+	TSQLiteStatement::EStepResult eResult = tStatement.Step();
+	if(eResult != TSQLiteStatement::eStep_HasRow)
+		THROW_CORE_EXCEPTION(eErr_CannotSetDatabaseOptions);
+
+	TString strResult = tStatement.GetText(0);
+	if(strResult != _T("wal"))
+		THROW_CORE_EXCEPTION(eErr_CannotSetDatabaseOptions);*/
+}
+
 END_CHCORE_NAMESPACE