SET TRANSACTION ISOLATION LEVEL, reagiert nicht, nicht mal ne Fehlermeldung.

gutschy

Aktiver Benutzer
Beiträge
32
Hallo Leute,

in dem Tutoriel das ich gerade beacker steht etwas von TRANSACTION ISOLATION LEVEL, da gibt es wohl 4 zur Auswahl. Wenn ich jetzt diese testweise verstellen will komme ich leider nicht weiter, auch nicht als MySQL root.

So sieht es im Moment aus:
Code:
mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
Und das probiere ich gerade:
Code:
mysql> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

mysql> SELECT @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| SERIALIZABLE   |
+----------------+
Nur das ich keine Veränderung erreiche, also bei der SELECT Anweisung nur das selbe wie beim ersten Eintrag rauskommt.

Hab ich was übersehen? Und welche Vorteile würde es mir bringen wenn ich die Datenbank auf 'Read uncommitted' einstellen würde. Würde sich da bei Abfragen die Geschwindigkeit erhöhen. Was ich realisieren möchte sind sehr einfach Abfragen und das je schneller je besser, weil Webanwendung. Geht eigentlich nur um Adressen nach Postleizahlen oder Orten sortiert. Ich könnte mir Vorstellen das in diesem Fall die Sicherheit nicht unbedingt so einen Stellenwert hat, zumal es nur um Abfragen geht.

Gruss,

Gutschy
 
Werbung:
Du hast doch den Modus von REPEATABLE-READ auf SERIALIZABLE erfolgreich umgestellt.

Ohne mich den den Eigenheiten von MySQL näher auseinander zu setzen gibt es Unterschiede in der Konsistenz der Datensätze sowie vermutlich in den Kosten der Abfrage.

Für deine Webanwendung kannst du auf die Einstellung verzichten und beim Standard-Modus bleiben. Sortiert wird einfach mit einem ORDER BY. Wichtig sind Transaktionen wenn du sicherstellen musst, dass mehrere zusammenhängende Anweisungen wie eine atomare Anweisung ausgeführt werden.

Gruß
Hony
Nachtrag:
Im Falle einer Webanwendung kannst du ggf. mit Prepared Statements die Geschwindigkeit verbessern, da der Optimizer der Datenbank schon Vorarbeit leisten kann. Zusätzlich bieten Diese auch einen bessern Schutz gegen SQL-Injektions.

Nachtrag 2:
Informiere dich bitte über Premature Optimization
 
Zuletzt bearbeitet:
Hi Hony%,

habe leider das Posting ein wenig unübersichtlich gestaltet. Das zweite Code Beispiel war direkt aus dem Tutorial rauskopiert und sollte nur die Absicht verdeutlichen.

Bei meinem Versuch als MySQL root erreich ich nur das:
Code:
mysql> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)

Leider muß ich schon wieder zu einem Termin, auf deinen weiteren Vorschläge kann ich erst morgen eingehen.
 
Bei meinem Versuch als MySQL root erreich ich nur das:

Ich selbst arbeite nicht mit MySQL und kann das daher auch nicht testen. Nach Dokumentation sieht der Befehl so aus:
Code:
SET [SESSION | GLOBAL] TRANSACTION ISOLATION LEVEL
                       {READ UNCOMMITTED | READ COMMITTED
                        | REPEATABLE READ | SERIALIZABLE}
Außerdem hängt das Ganze wohl vom Tabellentyp InnoDB ab.

Für gewöhnlich ist die Standardeinstellung aber völlig in Ordnung. Und für deinen Anwendungszweck vermutlich eh überflüssig.
 
Werbung:
Zurück
Oben