Rolf B: php, SQL, Multiuser - SESSION oder nicht ?

Beitrag lesen

Hallo DB-Willi,

verwexeln

Nein, ich denke nicht. Wenn der Conflict Counter ein Bigint ist (64-bit), dann ist man wohl auf der sicheren Seite. Bei einem normalen Int (32-bit) sollte man mit 2 Milliarden auf der sicheren Seite sein, aber 640k RAM genügten ja auch für alle Zeiten. Lieber den MOD reinprogrammieren, und wenn das System dann irrtümlich etwas länger online ist, keine Überraschung erleben. Ich bin da eher defensiv eingestellt.

Transaktionen ...

Den "Das kommt darauf an" Abschnitt kapiere ich nicht. "DM Statements auf verbundene Tabellen komplett serialisiert" - was soll das sein? Sprichst Du von foreign keys? Table A enthält Fremdschlüssel aus Table B - warum sollte das DBMS Table A sperren wenn ich in B ein Nichtschlüsselattribut ändere (oder umgekehrt)?

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.

Entweder drückst Du Dich mistverständlich aus, oder es ist wirklich Mist. Unabhängige Datenmanipulationen kann ich auch unabhängig voneinander durchführen, aber dann müssen sie es auch wirklich sein.

Wenn ich nach einem Edit Updates in mehr als einer Row durchführen muss (vor allem, wenn diese Rows in mehreren Tabellen stehen), dann habe ich ja gerade eine Abhängigkeit zwischen den DM Statements. Sie müssen entweder alle gelingen, oder keins. Und darum ist die Transaktion nötig. Wenn ich 3 Updates mache, dürfen die Daten aus dem 1. Update für andere Anwender nicht sichtbar werden (das I in ACID), bevor der 2. und 3. Update gelungen sind. Und wenn im 2. oder 3. Update auffällt, dass der conflict counter verändert wurde, dann müssen alle Updates dieses Speichervorgangs, die vorher passiert sind, zurückgenommen werden (das C in ACID).

Wenn ein User den SAVE Button drückt, dann erwartet er eine vollständige Speicherung. Und wenn es dabei zum Fehler kommt, dann würde zumindest ich erwarten, dass es im System keine Änderung gegeben hat (von Log-Einträgen mal abgesehen) - das A in ACID.

Rolf

--
sumpsi - posui - obstruxi