Entwickler-Ecke

Datenbanken - Programm wird sehr langsam nachdem ich speichere...


Aya - Sa 21.09.02 18:52
Titel: Programm wird sehr langsam nachdem ich speichere...
Hi,

Ich hab nen problem mit nem Programm von mir.. Ich hab da nen paar Datenbanken und wenn ich darin etwas speichere mach ich das auf diese Art:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
    Query.Close;
    Query.SQL.Clear;
    Query.SQL.Add('INSERT INTO DB1 (...) VALUES (...)');
    Query.ExecSQL;
    Query.SQL.Clear;
    Query.SQL.Add('INSERT INTO DB2 (...) VALUES (...)');
    Query.ExecSQL;
    Query.SQL.Clear;
    Query.SQL.Add('INSERT INTO DB3 (...) VALUES (...)');
    Query.ExecSQL;
    Query.SQL.Clear;
    Query.SQL.Add('INSERT INTO DB0 (...) VALUES (...)');
    Query.ExecSQL;
    Query.Close;


und wenn ich das sagen wir 20x hintereinander mache, wird das programm extrem langsam... wenn ich das Prog dann neustarte ist's wieder schnell wie immer... hat wer ne Idee woran das liegen kann??

Au'revoir,
Aya


tommie-lie - Sa 21.09.02 20:20

Hallo,

Ich habe es mittlerweile aufgegeben dir die richtige Schreibweise der französischen Verabschiedung beizubringen...

Ich kenne mich zwar nicht mit den SQL-Befehlen aus, aber Datenbanken habe die seltsame Eigenschaft im Speicher abgewicklet zu werden. Zumindest die meisten. Ich weiß nicht, wie groß deine Datensätze sind, und wiviel RMA du hast, aber wenn die Dinger groß werden und der Speicher knapp, kann es durchaus zu Performance-Einbußen kommen. Vor allem weiß ich nicht, was die Funktionen, die du aufrufst, so alles in den Speicher schreiben.
Eine evtl. Möglichkeit wäre es vielleicht, die Datenbank in eine Datei zu schreiben, den RAM zu löschen (also die Datenbank freigeben) und danach die DB wieder aus der Datei zu lesen. Damit emulierst du quasi einen Neustart des Programmes, zumindest was die DB betrifft. Sicherlich gibt es dafür auch eine SQL-Funktion. Schau mal in der SQL-Hilfe nach.
Der Prozess an sich ist zwar auch langsam (im Vergleich), aber dafür wird wahrscheinlich ein darauffolgendes Suchen oder Lesen schneller gehen.

Tschüß
Thomas


bis11 - So 22.09.02 16:24

Hi,

hast Du es schonmal so probiert ?


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
    Query.Close; 
    Query.SQL.Clear; 
    Query.SQL.Add('INSERT INTO DB1 (...) VALUES (...)'); 
    Query.SQL.Add('INSERT INTO DB2 (...) VALUES (...)'); 
    Query.SQL.Add('INSERT INTO DB3 (...) VALUES (...)'); 
    Query.SQL.Add('INSERT INTO DB0 (...) VALUES (...)'); 
    Query.ExecSQL; 
    Query.Close;


Oder mit einer Schleife ?


tommie-lie - So 22.09.02 16:52

Wenn das klappen würde, wäre doch die ausführung der Speicheraktionen langsam.
Aya beschreibt doch, daß es nach dem Speichern langsam wird.
Oder irre ich mich da?


LCS - Mo 23.09.02 07:20

Hi
es wäre mal ganz interresant zu wissen, welche DB du verwendest und wie du auf sie zugreifst (BDE, ADO usw.)

Gruss Lothar