Ich bin kein großartiger VB-Programmierer, aber ich habe die Aufgabe, eine VB6-Desktop-Anwendung zu pflegen/zu verbessern, die Sybase ASE als Back-End verwendet. Diese App hat ungefähr 500 Benutzer.So lösen Sie Sybase-Tabellensperren (VB6)?
Kürzlich habe ich Funktionalität zu dieser Anwendung hinzugefügt, die eine zusätzliche Einfügung/Aktualisierung auf eine einzelne Zeile in der Datenbank ausführt, wobei das Schlüsselfeld die Transaktionsnummer ist und das Feld indiziert ist. Die Tabelle, die aktualisiert wird, enthält im Allgemeinen etwa 6000 Datensätze, da Datensätze nach Abschluss der Transaktionen gelöscht werden. Nach der Bereitstellung funktionierte die App gut anderthalb Tage, bevor die Benutzer eine langsame Leistung meldeten.
Schließlich verfolgten wir das Leistungsproblem zu einer Tabellensperre in der Datenbank und mussten auf die vorherige Version der App zurücksetzen. Der erste Tag der Nutzung war am Montag, was im Allgemeinen ein sehr schwerer Tag für die Systemnutzung ist, weshalb ich verwirrt bin, warum das Problem an diesem Tag nicht aufgetreten ist.
In dem Code, der vorhanden war, gibt es einen Aufruf, eine Sybase-Transaktion zu starten. Innerhalb der Block zwischen BeginTrans und CommitTrans gibt es einen Aufruf an eine DLL-Datei, die die Datenbank aktualisiert. Ich habe meinen neuen Code in einem Klassenmodul in der DLL abgelegt.
Ich bin verwirrt, warum eine einzelne Einfügung/Aktualisierung zu einer einzelnen Reihe solch ein Problem verursachen würde, besonders da das System vor der Änderung in Ordnung gewesen ist. Ist es möglich, dass ich hier ein größeres Problem aufgedeckt habe? Oder dass ich nur meinen Ansatz überdenken muss?
Vielen Dank für alle, die sich in einer ähnlichen Situation befinden und Ratschläge geben können.
Ist es Deadlocking? Oder muss anderer Code nur lange auf die Freigabe warten? –