Rolf b: Rechteverwaltung, Update & Select binden

Beitrag lesen

Natürlich machen Transaktionen - bzw. schon die Transaktionsfähigkeit - eine DB langsamer. InnoDB ist deutlich behäbiger als MyISAM. Wenn eine Transaktion einen Lock setzt, müssen andere warten, bis der Lock freigegeben wird. Deshalb auch die Überlegungen zum Isolation Level, bzw. man muss auch genau gucken welche Rows durch ein SQL Statement gelockt werden, damit nicht zu viel gesperrt wird.

Du musst aber nicht jedes Statement in eine Transaktion einschließen. Solange Du nicht mehrere Statements zu einer Unit-Of-Work zusammenschließen musst, oder ein "ganz oder gar nicht" garantieren musst, lässt Du sie weg. Sperren anderer Statements werden trotzdem beachtet. Die Transaktion gibt dir nur die Rollbackfähigkeit und eine längere Lebensdauer von gesetzten Sperren bis zum Transaktionsende.

Sobald Du COMMIT oder ROLLBACK gemacht hast, ist die Transaktion zu Ende und die folgenden Befehle laufen wieder normal.

Wenn Du Logging in eine Datenbank durchführst, empfehle ich Dir übrigens eine MyISAM Tabelle. Die sind deutlich flinker und ich wüsste nicht, warum man transaktional loggen sollte. Jeder INSERT in die Log-Table steht doch für sich - oder?

Rolf