Thema: Delphi Firebird Embedded

Einzelnen Beitrag anzeigen

tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#32

Re: Firebird Embedded

  Alt 27. Okt 2009, 07:05
Commit vs. CommitRetaining hat nicht wirklich was mit einem fehlenden Transaktionslog/MGA/Datensatzversionierung zu tun. CommitRetaining macht ein Commit behält allerdings den aktuellen Transaktions-Kontext inkl. der Transaction Inventory Page (TIP) usw ... bei. Dadurch, dass der Transaktionskontext nicht verloren geht, werden z.B. auch die Datenmengen nicht geschlossen. Gut zu sehen bei der Verwendung von datensensitiven Steuerelementen. CommitRetaining steht allerdings in einem direkten Zusammenhang mit schlechterer Performance, da dies die Transaktion quasi noch aktiv beläßt (da ja der Transaktionskontext nicht beendet wird => CURRENT_TRANSACTION ist z.B. auch noch die selbe ...). Dadurch kann auch die OAT nicht weiterlaufen und man bekommt bei ständiger Verwendung von CommitRetaining ein Performanceproblem (langlaufende Transaktion), da ja bei jedem Transaktionstart die Transaktion sich die aktuelle TIP merken muss usw. Wenn die OAT nicht weiterlaufen kann, kann dies die OIT natürlich auch nicht machen. Ein Sweepintervall hilft hir auch nicht, weil ja das Sweepintervall über OAT-OIT definiert ist. (das Thema schreit irgendwie nach einem Artikel *g*).

Darum, CommitRetaining bzw. Autocommit, da dies ja in der Regel CommitRetaining verwendet, mit Maßen genießen und die Transaktionen mit regelmäßigem Hard Commit beenden.
  Mit Zitat antworten Zitat