DB-Willi: php, SQL, Multiuser - SESSION oder nicht ?

Beitrag lesen

Hallo Rolf,

Ein Zähler ist bestimmt sicherer, der sollte dann aber BIGINT sein, oder die +1 Operation muss mit MOD gegen Überlauf gesichert werden.

Da verwechselst Du jetzt aber ID und Conflict Counter?

Im einfachsten Fall hat jede Tabelle ihre eigene Spalte für einen Conflict-Counter und somit jede Row einen eigenen Wert dafür. Dass eine Row mehr Updates erfährt, als es maximal Rows gibt, habe ich noch nicht erlebt.

Was ich in meinem eigenen Text noch vergaß: wenn man mehr als eine Table updaten muss, dann MUSS das ganze in einer Transaction laufen, um bei einer Kollision alles zurücksetzen zu können.

Das kommt darauf an, ob DM-Statements auf verbundene Tabellen komplett serialisiert (für den Prozess exklusiv gesperrt) werden vom DBMS, oder nur die DM-Statements auf jede Tabelle separat setialisiert (ExLock) werden.

Transaktionen benötigt man eigentlich nur, wenn mehrere voneinander unabhängige Datenmanipulationen zu einem logischen Vorgang zusammengefasst werden sollen, der vollständig ungestört abgearbeitet werden muss, damit die Daten konsistent bleiben.

Commit
DB-Willi