LOCKING
Als Locking bezeichnet man das Sperren von Daten im Mehrbenutzerbetrieb. In SQL2003 wird das LOCKING im Allgemeinen automatisch für die DML-Anweisungen INSERT, UPDATE, DELETE ausgelöst. Die DQL-Anweisung SELECT sperrt nur, wenn ausdrücklich die FOR-UPDATE-Klausel programmiert wird. Die Anweisungen COMMIT und ROLLBACK heben die Sperren auf den beteiligten Tabellen auf. Leider sind die LOCK-Einstellungen, bis auf die FOR-UPDATE-Klausel, nicht standardisiert, sie hängen vom jeweiligen Datenbanksystem ab.
Neben den LOCK-Typen XLOCK und SLOCK findet man z.B. unter Oracle-SQL noch eine feinere Abstufung:
<LOCK Anweisung (Oracle)> ::=
LOCK TABLE Tabellenname IN <Lockmodus> [NOWAIT];
<Lockmodus> ::= { ROW SHARE | ROW EXCLUSIVE | SHARE | EXCLUSIV }
Neben Tabellen können auch Sichten gesperrt werden, was zur Konsequenz hat, dass automatisch alle Tabellen der Sichtdefinition vom System gesperrt werden.
Außerdem kann eine Transaktion auch auf verschiedenen 'LOCK-Ebenen' sperren. Unterschieden wird je nach Datenbanksystem:
- Locken der ganzen Datenbank,
- Locken einer Tabelle,
- Locken einer Seite einer Tabelle,
- Locken eines Tupels einer Tabelle oder
- Locken eines einzelnen Feldes
Die feinste Sperrgranularität, die bei Oracle implementiert ist, ist das Sperren eines Tupels/Datensatzes. Das Sperren von Spalten ist äußerst selten implementiert.
Je nach Art des Datenbankzugriffs (mehr lesende oder schreibende Zugriffe) gibt es verschiedene Lock-Verfahren:
siehe auch 2-Phasen-Sperrprotokoll
Quellen:
- Quellen/Standards in http://www.wiscorp.com/SQLStandards.html und http://www.jcc.com/sql.htm
- INCITS/ISO/IEC 9075-1-2008. Part 1 "SQL/Framework", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
- INCITS/ISO/IEC 9075-1-2008. Part 2 "SQL/Foundation", ISO International Organization for Standardization / INCITS InterNational Committee for Information Technology Standards, 2008
- Adams, Ralf: "SQL - Eine Einführung mit vertiefenden Exkursen", Hanser, München, 2012, ISBN 978-3-446-43200-0
- Elmasri, Ramez/Navathe, Shamkant B.: "Grundlagen von Datenbanksystemen" , Pearson Studium, München, 2002, ISBN 3-8273-7021-3
- Faeskorn-Woyke, Heide/Bertelsmeier, Birgit/Riemer, Petra/Bauer, Elena: "Datenbanksysteme - Theorie und Praxis mit SQL2003, Oracle und MySQL", Pearson Education, München, 2007, ISBN 978-3-8273-7266-6
- Kemper, Alfons/Eickler, André: "Datenbanksysteme", Oldenbourg, München, 2009, 978-3-486-59018-0
- Melton, Jim/Simon, Alan R.: "SQL: 1999 - Understanding Relational Language Components", Morgan Kaufmann, San Francisco, 2001, ISBN 1558604561
- Oracle® Database Object-Relational Developer's Guide 11g Release 2 (11.2), E11822-03, http://download.oracle.com/docs/cd/E11882_01/appdev.112/e11822.pdf
- Oracle® Database PL/SQL Language Reference 11g Release 2 (11.2), E10472-06, http://download.oracle.com/docs/cd/E11882_01/appdev.112/e10472.pdf
- Oracle® Database SQL Language Reference 11g Release 2 (11.2), E17118-03, August 2010, http://download.oracle.com/docs/cd/E11882_01/server.112/e17118.pdf
- Saake, Gunter/Sattler, Kai-Uwe/Heuer, Andreas: "Datenbanken - Konzepte und Sprachen", mitp-Verlag, Redline GmbH, Heidelberg, 2007, ISBN 3-8266-1664-2
- Sieben, Jürgen: "Oracle® SQL - Das umfassende Handbuch", Galileo Press, 2012, ISBN 978-3-8362-1875-7
- Vossen, Gottfried: "Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme", Oldenbourg, München, 2008, ISBN 978-3-486-27574-2
Kategorie: Transaktionen, L