diff --git a/plugins/symbol-db/symbol-db-engine-core.c b/plugins/symbol-db/symbol-db-engine-core.c
index b0961a7..a708061 100644
--- a/plugins/symbol-db/symbol-db-engine-core.c
+++ b/plugins/symbol-db/symbol-db-engine-core.c
@@ -5748,6 +5748,7 @@ sdb_engine_add_new_symbol_1st (SymbolDBEngine *dbe, const tagEntry *tag_entry,
  */
 
 static gboolean symboltrans = FALSE;
+static gint symbols_count = 0;
 
 static gint
 sdb_engine_add_new_symbol (SymbolDBEngine * dbe, const tagEntry * tag_entry,
@@ -5808,9 +5809,10 @@ sdb_engine_add_new_symbol (SymbolDBEngine * dbe, const tagEntry * tag_entry,
 		{
 			g_warning (error->message);
 			g_error_free (error);
-		}
-		
+		}		
 	}
+
+	symbols_count++;
 	
 	/* keep it at 0 if sym_update == false */
 	if (sym_update == FALSE)
@@ -6152,6 +6154,31 @@ sdb_engine_add_new_symbol (SymbolDBEngine * dbe, const tagEntry * tag_entry,
 	if (table_id > 0)
 		sdb_engine_add_new_tmp_heritage_scope (dbe, tag_entry, table_id);
 
+	if (symbols_count % 10000 == 0) 
+	{	
+		GError *error = NULL;
+		
+		gda_connection_commit_transaction (priv->db_connection, "symboltrans", &error);
+		if (error)
+		{
+			g_warning (error->message);
+			g_error_free (error);
+			error = NULL;
+			
+		}		
+		
+		gda_connection_begin_transaction (priv->db_connection, "symboltrans", 
+	    				GDA_TRANSACTION_ISOLATION_READ_UNCOMMITTED, &error);		
+
+		if (error)
+		{
+			g_warning (error->message);
+			g_error_free (error);
+			error = NULL;
+		}		
+		
+	}
+	
 	return table_id;
 }
 
