Announcement

Collapse
No announcement yet.

Commit oer Rollback bei Lesezugriff

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

  • Commit oer Rollback bei Lesezugriff

    Hallo #,

    jede DB-Aktion findet ja im Rahmen einer Transaktion statt,
    wenn ich keine selber starte, erfolgt das automatisch.

    Ich erinnere mich, mal gelesen zu haben, dass ein Rollback
    in der DB schneller geht als ein Commit,
    falls keine Daten geändert worden sind.
    Ich meine hier speziell Firebird (MGA).

    Greife ich also nur lesend zu,
    nimmt man dann ein Rollback ??


    Transe.StartTransaction;
    try
    Select
    finally
    Transe.RollBack;
    end;

    oder Commit

    Transe.StartTransaction;
    try
    Select
    finally
    Transe.Commit;
    end;



    Heiko

  • #2
    Originally posted by Heiko Luettge View Post
    Greife ich also nur lesend zu,
    nimmt man dann ein Rollback ??
    Ist technisch egal weil firebird intern ein Änderungsflag mitführt und ein Rollback eh in ein commit umwandelt, wenn nichts geschrieben wurde.

    Das hat nämlich Vorteile bei der OIT Oldest Interesting Transaction, ab der die Kopie der lokalen Transaktionsinventorypage für jede Transaktion gestartet wird. OIT bedeutet im Prinzip die älteste Transaktion, deren Zustand nicht commited ist. Und wenn dann nun eine Transaktion rollback wäre, die das eigentlich nicht sein müsste, weil eh nix geschrieben wurde, dann wär das unnötig. Daher dieser Weg. Weitere Details kann man in IBExpertLive nachlesen, ich hab das in einer Session mal ziemlich genau erklärt.

    Gruß
    Holger
    www.ibexpert.com

    Comment

    Working...
    X