![]() |
Datenbank: Firebird • Version: 2.1 • Zugriff über: UIB
Sinn von commitretaining
Hallo,
gibt es eigentlich einen Unterschied zwischen commitretaining und commit mit anschliessendem neuen Transaktionsstart? Oder ist das nur eine "abgekürzte Schreibweise"? Wenn ich sehr viele Aktionen in der Datenbank habe (meherere 100.000 beim Datenimport), sollte ich besser zwischendurch ca alle 1000 Aktionen ein commit mit anschliessendem neuen Transaction Start ausführen oder ein CommitRetaining? Wenn ich nichts dergleichen mache, wirkt sich das negativ auf die Performance aus? Und eine dazupassende zweite Frage: Wird eine Transaktion durch Rollback automatisch geschlossen, oder bleibt sie weiter aktiv? Das Rollback geht ja nur bis zum letzten CommitRetaining zurück? |
AW: Sinn von commitretaining
Zitat:
|
AW: Sinn von commitretaining
Kommt imho auf die Komponente an. Kennt diese SavePoints würde ich direkt diese verwenden
|
AW: Sinn von commitretaining
Mir ist schon der Unterschied zwischen commitretaining und commit/start transaction nicht wirklich klar. Worin unterscheidet sich jetzt ein savepoint von den beiden?
Wenn ich die Doku richtig verstehe, kann man innerhalb einer Transaktion mehrere Savepoints anlegen und dann ein Rollback zu einem ausgewählten Savepoint machen, statt die ganze Transaktion rückgängig zu machen. Das würde aber bedeuten, das die Transaktion insgesamt riesig wird, bei über 200.000 inserts. Wirkt sich das nicht negativ auf die Performance aus? Ich mache ja vor allem deshalb zwischen durch immer wieder commits, weil ich mir denke, dass die Transaktion irgendwann immer langsamer werden wird, je länger sie wird? Oder ist das nicht der Fall? |
AW: Sinn von commitretaining
Ja ein SavePoint ist eine "Teil"-Transaktion. SavePoints machen also nur Sinn, wenn sie wirklich ein Punkt darstellen, auf den man zurück will.
Der Unterschied zwicshen COMIIT unbd COMMIT RETAINING ist dass bei ersterem der Kontext geschlossen wird ( und u.U. dann auch die Datenmenge) und je nach Komponente ein neuer geöffnet ( DatSet wird dann nicht mehr sichbar geschlossen) und bei dem containing der vorhandene Kontext wiederverwendet wird ( was gewisse Nebeneffekte haben kann) |
AW: Sinn von commitretaining
Heikoadams, mkinzler,
danke für die Antworten :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz