Forum: Datenbanken
Delphi
by mkinzler,
13. Okt 2014
Was wird da emuliert? Es wird halt ein cimmitReatining ausgeführt, welches eine Commit eines Savepointes ( Teiltranskation) und nicht ein endgültiger (harter) Commit der (Gesamt-)Transaktion ist.
Forum: Datenbanken
Delphi
by mkinzler,
13. Okt 2014
Interessnat ist, das sein Programm am Anfang, genau das gemacht hat: sich auf das autocommit verlassen.
Den Scheiß mit der expliziten Transaktionssteuerung kam von mir.
Aber ich sehe langsam ein, daß ich keine Ahnung von nix habe und ziehe meinen Vorschlag zurück.
Forum: Datenbanken
Delphi
by mkinzler,
9. Okt 2014
Die Beschränkung der Pro bezieht sich auf die mitgelieferten dbExpress-Treiber. Mit anderen Fremdomponenten, was AnyDAC ja war ( hat sich mit Integration als FireDAC geänder) tritt diese Beschränkung nicht auf.
Forum: Datenbanken
Delphi
by mkinzler,
9. Okt 2014
Die Datnsätze sollten direkt beim Einfügen in der Datenbank landen, nur für andere Verbindungen (wenn nicht dirty read). Durch einen Commit, solten diese für andere Transaktionskontexte sichtbar sein ( andere Clients/andere Datenbankverbindungen).
Ich kenne jetzt AnyDAC/FireDAC nicht im Detail, ist aber bei den Komponenten, die ich kenne alle so.
Forum: Datenbanken
Delphi
by mkinzler,
9. Okt 2014
Wenn AutoCommit auf True steht, wird je nach Bibliothek entweder die aktuelle Transaktion per Commit abgeschlossen oder ein SavePoint erzeugt. Der explizite Commit beendet dann alle Teiltransaktionen ( Savepoints), bei vielen Statements sind das dann viele.
Schalte mal das Autocommit ab und verwende explizite Transaktionen.
...
Forum: Datenbanken
Delphi
by mkinzler,
9. Okt 2014
Erst mal sollte man feststellen, was den genau so lange dauert. Hast Du mal alle anderen Verbindungen zur Datenbank/Connection getrennt?
Der eigentlich Commit sollte schnell gehen.