Beim gestrigen Vortrag zum Thema "Snapshot Isolation" kamen ein paar Themen zur Sprache zu denen wir nicht mehr alle Details zusammen bekamen. Hier ein paar Schnipsel zum Thema "Lock Escalation". Eine sehr gute und kompakte Sammlung von Infos findet man im Artikel "Lock Escalation in SQL2005" von Sunil Agarwal.
Eine Lock Escalation von Row-Locks auf Table-Locks wird ausgelöst, wenn
- die Zahl der gehaltenen Sperren die Schwelle von 5000 überschreitet oder
- der für Sperren genutzten Speicher 40% des aktuellen Cache überschreitet (wenn sp_configure-Option "locks" = 0) oder
- der für Sperren genutzte Speicher 40% des für Sperren konfigurierten Speichers überschreitet.
Gestern lernte ich, dass der Schwellwert von 5000 am SQL-Server-2008 konfigurierbar sei. Das klingt gut.
Zudem sprachen wir auch über Möglichkeiten, wie man gezielt verhindern kann, das die Sperren eskaliert werden. Auch das findet man im oben genannten Artikel sehr gut erklärt.