dedlfix: DB-Abfrage bei Rechteverwaltung

Beitrag lesen

Hi!

Und damit das nicht zu Unfällen führt, muss man dafür sorgen, dass in der Zeit kein anderer Prozess auf den Datenbestand zugreifen kann.
Und was ist, wenn das Script (aus welchen Grund auch immer) abgebrochen wird?

In welcher Hinsicht genau? Statements können natürlich nur soweit abgearbeitet werden, wie das Programm kommt. Eine gesperrte Tabelle bleibt aber nicht zurück, denn noch bestehende Sperren werden am Ende der Verbindung aufgehoben, und die Verbindung stirbt auf jeden Fall am Scriptende. Transaktionen sind hier auf alle Fälle sehr zu empfehlen.

Ich müsste dann ja eine InnoDB verwenden, ist die nicht langsamer?

Die Geschwindigkeitsunterschiede werden sicher nicht großartig über das Grundrauschen kommen. Ansonsten gibt es dazu sicher irgendwo im Netz einen Vergleich.

Dazu kann ich mich nicht festlegen. Das hängt auch von der Tiefe der Verschachtelungen ab.
Theoretisch könnten auch 15 Kategorien ineinander verschachtelt werden.
Allerdings gibt es aber ab einer gewissen Tiefe keinen sind mehr, also könnte ich das einschränken, falls das was bringt.

Jedes Level musst du extra mit der Information aus der vorigen Abfrage befragen. Diese Rekursion bleibt beim Parent-Ansatz immer erhalten. Du kannst lediglich bei sehr begrenzter Tiefe die Rekursion in einem Schritt vornehmen, indem du pro Level mindestens eine zusätzliche Subquery oder Self-Join einbaust. Das wird schnell unübersichtlich, weswegen es sich empfiehlt, das nicht weiter als bis 3 Verschachtlungen zu treiben. Rein technisch könnte man das bis zu den Limits von MySQL und PHP treiben.

Lo!