Transaktionen mit InnoDB Tabellen in Mysql
Unter Transaktionen versteht man die Bündelung von mehreren Datenbankoperationen
die in einem Mehrbenutzersystem (wie MySQL) ohne unererwünschte Einflüsse anderer Datenbankoperationen
als eine Einheit ausgeführt werden.
Eine Transaktion hat folgende Eigenschaften:
- Atomicity
Sie ist nicht weiter zerlegbar
- Consitency
Nach dem Beenden einer Transaktion hinterlässt sie einen konsistentet Datenbasis
- Isolation
parallel ausgeführte ransaktionen beinflussen sich nicht gegenseitig
- Durability
Die Wirkung einer abgeschlossen Transaktion muss in der DB bleiben
MySQL kann nur mit dem InnoDB Tabellen Typ Transaktionen durchführen.
Eine Transaktion wird mit:- Begin eingeleitet.
- Mit Comit abgeschlossen.
- Mit Rollback verworfen.
- Mit Hilfe von SET wird Autocomit abgeschaltet.
SET AUTOCOMIT = 0
- Ebenso kann mit SET der sog. Transaction Level gesetzt werden. Über diesen kann die Isolation der Datensätze festgelegt werden, dh. Wie weit Read/Update etc. das Locking der DB beeinflussen.
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED| REPEATABLE READ | SERIALIZABLE}
Sperren von Tabellen
In allen Tabellentypen bietet MySQL noch die Möglichkeit komplette Tabellen und nicht nur Datensätze zu sperren. D.h. ein Prozess kann eine Tabelle für andere Prozesse sperren, so das nur dieser Daten Manipulieren kann.
Die Sperrung erfolgt mittels: LOCK TABLES tbl_name {READ | [READ LOCAL]
Die Freigabe mittels UNLOCK TABLES
|