Schlösser treten auf dem IBM DB2-Server jedes Mal, wenn Sie eine Abfrage , einfügen, aktualisieren oder löschen . Tabellen haben einen " LOCKSIZE "-Parameter , die Verriegelung beeinträchtigen können. Die Tabelle der Einstellung " LOCKSIZE ANY" ermöglicht DB2 , um die Größe des Schlosses wählen , in der Regel den Erwerb Seite Schleusen. Die SQL-Abfrage -Anweisungen können Verriegelung durch Setzen eines " Isolation Level " am Anfang der Transaktion auswirken. Auch wenn es ein bestimmtes Schloss gewährt , kann DB2 fördern oder eskalieren die Verriegelung , daher müssen Sie verstehen, wie DB2 Verriegelungsgriffe beim Schreiben Datenbank-Anwendungen. Programmierer können die Sperre Ebene der Datenbank-Performance mit dem "LOCK TABLE" Befehl zu verbessern , jedoch. Anleitung
1
sperren die gesamte Tabelle im gemeinsamen Modus oder exklusiven Modus . Execute " LOCK TABLE IN EXCLUSIVE MODE myTable " (ersetzen Sie " myTable " mit dem Namen des DB2-Tabelle ), um die Sperre für die gesamte Tabelle zu halten, bis die Transaktion abgeschlossen ist. Dieser Modus verhindert, dass andere Benutzer auf die Tabelle zugreifen , bis Sie die Verriegelung zu lösen.
2
Execute " LOCK TABLE myTable IN SHARE MODE " Nur-Lese- Zugriff auf die Tabelle während der Transaktion zu ermöglichen. Dieser Modus hält die Daten konsistent trotzdem erlauben , um es anzuzeigen. Die "LOCK TABLE" Befehl kann die Leistung verbessern und verhindern, dass " DEADLOCKS " durch die Schaffung einer Sperre für die gesamte Tabelle anstelle von mehreren einzelnen Zeilensperrungen .
3
loslassen lock " mit RELEASE ( COMMIT ) "oder " RELEASE ( DEALLOCATE ) "--- Ihre zwei Optionen , wenn Sie die execute" LOCK TABLE "-Anweisung als statische SQL . " RELEASE ( COMMIT ) " wird die Sperre nach der Ausführung eines " Commit "-Anweisung. "RELEASE ( DEALLOCATE ) " wird die Sperre , wenn die Anwendung beendet .
4
die Verriegelung zu lösen , wenn Sie die "LOCK TABLE "-Anweisung als dynamische SQL mit "RELEASE ( COMMIT ) " ausführen . Wenn Sie Caching , hält DB2 vorbereitete Anweisungen im Speicher nach einem " COMMIT " , daher müssen Sie die Sperre freigeben oder führen eine " COMMIT " nach den vorbereiteten Anweisungen werden nicht mehr im Speicher , um die Sperre zu befreien
< br . >