2016-12-15 5 views
1

Zum Beispiel ein Benutzer führt Abfrage wie folgt:Mehrere gleichzeitig angefordert Abfragen Ausführungssequenz

UPDATE table SET column = 100; 

Und zweitens Benutzer:

UPDATE table SET column = 200; 

und lässt sagen, dass diese beiden Abfragen angefordert werden genau gleichen Zeit, gleiche Sekunden, gleiche Nanosekunden (oder minimale Zeitmesseinheit, die für diese DB ist), welche Abfrage wird dann zuerst ausgeführt und welche eine Sekunde?

Wird die Datenbank in diesem Fall Abfragen Reihenfolge nur zufällig wählen?

p.s. Ich markiere keine konkrete Datenbank, ich denke, dass dieser Mechanismus für alle wichtigen RDBMS ähnlich ist. Oder vielleicht nicht?

+0

Was ist deine Motivation? –

+0

Verstehen, wie Mechanismus "Wählen" in diesem Fall funktioniert – RIKI

+1

Ich würde die Auswahl nicht "zufällig" nennen (weil das eine ganz besondere Bedeutung in Statistiken hat). Ich könnte es "unbestimmt" oder "willkürlich" nennen. –

Antwort

2

RDBMS implementieren eine Reihe von Eigenschaften abgekürzt (und genannt) ACID. Wikipedia explains the concept.

Grundsätzlich sperren ACID-kompatible Datenbanken die Daten auf einer bestimmten Ebene (Tabellen-, Seiten- und Zeilensperren sind typisch). Im Prinzip kann nur eine Schreibsperre für das gleiche Objekt zur gleichen Zeit erfasst werden. Daher sperrt die Datenbank die Zeile für eine der Transaktionen willkürlich.

Was passiert mit der anderen Transaktion? Das hängt davon ab, aber eines von zwei Dingen sollte passieren:

  • Die Transaktion wartet, bis die Sperre verfügbar ist. Also "am Ende" wird es den Wert zuweisen (das Schloss verlieren, den Krieg gewinnen;).
  • Die Transaktion wird "Timeout", weil die entsprechenden Zeile (n) nicht verfügbar sind.
  • Ihr Fall ist etwas komplizierter, weil alle Zeilen in einer Tabelle betroffen sind Am Ende sollten jedoch alle Zeilen in einer ACID-kompatiblen Datenbank denselben Wert haben.

    Ich sollte beachten, dass wichtige Datenbanken (in der Regel) ACID-konform sind. Obwohl sie Sperren und Transaktionen und ähnliche Mechanismen haben, können und müssen die Details zwischen den Datenbanken variieren.

    1

    Üblicherweise werden die DML-Operationen durch den Erwerb von DML getan sperrt, mit Hilfe derer die Operationen Atom und konsistente hergestellt werden. In diesem Fall erhält eine der Abfragen die DML-Sperre und wird ausgeführt, und dann wird die zweite ähnlich ausgeführt. was man zuerst geht und zweitens ist nicht als solches bekannt.

    +0

    DML-Sperren klingen so, als wären sie datenbankspezifisch, insbesondere Oracle. Der Mechanismus existiert in anderen Datenbanken, aber die Terminologie kann unterschiedlich sein. –