Announcement

Collapse
No announcement yet.

Borland Builder / ADO: Performanceprobleme bei Refresh

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Borland Builder / ADO: Performanceprobleme bei Refresh

    Ein Problem plagt mich schon einige Jahre und zwar ist das die "Refresh" Funktion von ADOQueries (und ähnlichem). Diese ist ja eigentlich recht komfortabel, aktualisiert die Daten und stellt sicher, dass der Cursor an der gleichen Stelle bleibt. Bei 98% aller Kunden funktioniert dies auch einwandfrei, aber bei den restlichen 2% führt es zu minutemlangen "Laden" der Daten. Bei wenigen Kunden kommt sogar oft die Fehlermeldung "Verbindung zum Server verloren".
    Wenn ich bei diesen Kunden den Aufruf von Refresh() durch Requery() ersetze oder einfach die Query schließe und wieder öffne, dann geht es sehr schnell (nur ein paar Millisekunden), es liegt also nicht an der Abfrage an sich. Das Problem von Requery() und neu öffnen ist allerdings, dass die Position des Cursors verloren geht. Nun hab ich auch schon getestet es über Requery() und danach einem GotoBookmark() Befehl zu lösen, aber eben dieser GotoBookmark() Effekt erzeugt wieder das gleiche Problem wie Refresh(), das eben minutenlang gerechnet wird.
    Folglich blieb mir nur noch die Wahl zwischen: Cursor verlieren und in Kauf nehmen, dass es bei manchen Kunden ewig dauert oder gar nicht funktioniert, was beides sehr suboptimal ist. =/

    Hierzu muss ich noch sagen, dass einige der Kunden, bei denen es schnell ist, deutlich größere Datenbanken haben, daran kann es also nicht liegen.

    Habt ihr vielleicht noch eine Idee, wie man das Problem noch angehen könnte ohne die ganzen Programmstruktur zu ändern? Irgendeinen Index setzen (aber der Primärschlüssel hat ja sowieso einen Index und das GotoBookmark / Refresh sollte ja nichts anderes benutzen?) oder vielleicht eine Einstellung in den ADO-Komponenten ändern?

  • #2
    Verwendest Du das mit ODBC oder OLEDB?


    Wie auch immer, es hängen in der ganzen Kette diverse(!) Treiberschichten. Ich würde mir von den Problemkunden alle Versionsinfos von vorne bis hinten geben lassen. Angefangen bei oder mit MDAC comchecker bis zur OLEDB Version (notfalls mit eigenem Programm auslesen) und schließlich noch die tatsächlichen Connection String Settings.
    Dann mal schauen, ob man signifikante Unterschiede zu "normalen" Systemen findet.
    Bei MS OLEDB und Oracle weiß ich, dass beide OLEDB Provider für Oracle anbieten, wovon einer seit Jahren nicht weiterentwickelt wird. Ganz zu schweigen von Third Party Providern, von denen es einige gibt. Alles mal abklopfen.
    Gruß, defo

    Comment


    • #3
      Nur zur Info: Als Provider wird SQLOLEDB.1 benutzt.

      MDAC wird immer seltener mit installiert, da sie in den neuen Windows Systemen ja bereits im OS integriert ist.

      Habe schon befürchtet, dass es keine einfache Lösung dafür gibt.

      Comment

      Working...
      X