Teil 5: MySQL 4 - Einplanungsmodifikatoren und Locking

SQL-Optimierung: Manuelles Priorisieren und Sperren

Einplanungsstrategie

In der folgenden Beschreibung nennen wir einen Client, der eine Suche ausführt (z.B. SELECT), Leser; ein Client, der eine Operation zur Manipulation der Tabelle ausführt (DELETE, INSERT, REPLACE oder UPDATE), ist hingegen ein Schreiber.

Grundsätzlich kann die Einplanungsstrategie von MySQL wie folgt zusammengefasst werden:

  • Schreibanforderungen sollen in der Reihenfolge ausgeführt werden, in der sie ankommen.

  • Schreiboperationen haben eine höhere Priorität als Leseoperationen.

Bei MyISAM- und ISAM-Tabellen wird die Einplanungsstrategie mithilfe von Tabellensperren implementiert. Immer wenn ein Client auf eine Tabelle zugreift, muss dafür eine Sperre angefordert werden. Das kann explizit mit LOCK TABLES erfolgen, aber normalerweise fordert der Sperrmanager des Servers automatisch Sperren an, wenn sie gebraucht werden. Nachdem der Client seine Arbeit mit einer Tabelle abgeschlossen hat, kann die Sperre freigegeben werden. Eine explizit angeforderte Sperre wird mit UNLOCK TABLES freigegeben. Der Server gibt die von ihm angeforderten Sperren automatisch frei.