Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

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

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von gutschy, 28 Januar 2014.

  1. gutschy

    gutschy Aktiver Benutzer

    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
     
  2. Hony%

    Hony% Datenbank-Guru

    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: 28 Januar 2014
  3. gutschy

    gutschy Aktiver Benutzer

    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.
     
  4. Hony%

    Hony% Datenbank-Guru

    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.
     
  5. gutschy

    gutschy Aktiver Benutzer

    Nachdem ich den Rest vom Tut. gelesen habe stimme ich dir da zu.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden