[c#,SQLite] out of Memory

Passer

Erfahrenes Mitglied
Hallo,

ich habe grade einen kleinen Lasttest auf eine SQLite DB mittels eines C# Programms und über das Tool SQLLiteSpy gemacht.
Vorgehen:
1) Ich lasse das C# Programm laufen, es werden laufend Daten in die DB geschrieben.
2) Ich führe recht häufig (durch Drücken von F9) folgende Anweisungen über den SQLiteSpy auf die DB aus:
Code:
INSERT INTO LogFiles(LogFileName) VALUES('hello1');
INSERT INTO LogFiles(LogFileName) VALUES('hello2');
INSERT INTO LogFiles(LogFileName) VALUES('hello3');

Das C# Programm macht folgendes:
Code:
  SQLiteDataBaseWrapper sqlLiteClient;
            sqlLiteClient = new SQLiteDataBaseWrapper();
            sqlLiteClient.OpenDatabase(s_DatabaseFileName);
            sqlLiteClient.ExecuteNonQuery("PRAGMA locking_mode = NORMAL\n");
            for (int i = 0; i < 1000; i++)
            {
              
                Thread.Sleep(500);
                sqlLiteClient.ExecuteNonQuery(
                    "INSERT INTO LogFiles(LogFileName) VALUES('test"+i+"');\n");
                Console.WriteLine("Loop "+i);
         
            }
            sqlLiteClient.CloseDatabase();

Dass dabei "irgendwas" passiert habe ich erwartet. Im Spy bekomme ich ab und an eine Meldung, dass die DB locked ist. Dafür habe ich ja auch Verständnis, da wahrscheinlich grad von dem anderen Programm eingetragen wird.
Allerdings bekomme ich seitens des C# Programms folgende Meldung:
Unbehandelte Ausnahme: System.Exception: Error with executing non-query:
"INSERT INTO LogFiles(LogFileName) VALUES('test22');
"!
out of memory
Die Meldung ergibt sich aus
Code:
sqlite3_exec(this.database, queryPointer, IntPtr.Zero, IntPtr.Zero, out error);
...
  throw new Exception("Error with executing non-query:\n \"" + query + "\"!\n" +
                                    PointerUtil.PointerToString(sqlite3_errmsg(error)) );


Leider finde ich keinen Grund für diese Meldung. Ist sie einfach falsch oder gibt es eine Möglichkeit bei Sekundärbelastung der DB durch eine andere Anwendung die SQL-Anweisung in eine Art Queue zu schieben?

MfG
Christoph
 
Zurück