Hvordan lage Låser i DB2

Hvordan lage Låser i DB2


Låser oppstå på IBM DB2-tjener hver gang du utfører en spørring, sette inn, oppdatere eller slette. Tabeller har en "låsstørrelse" parameter som kan påvirke låsing. Tabellen innstilling av "låsstørrelse NOEN" lar DB2 for å velge størrelsen på låsen, vanligvis anskaffe side låser. SQL-spørringen uttalelser kan påvirke låsing ved å sette en "isolasjonsnivå" i begynnelsen av transaksjonen. Selv når det gir en bestemt lås, kan DB2 fremme eller eskalere låse; Derfor må du forstå hvordan DB2 håndterer låsing når du skriver databaseapplikasjoner. Programmerere kan sette låsen nivå for å forbedre ytelsen database med "LOCK TABLE" kommandoen, men.

Bruksanvisning

1 Lås hele tabellen i delt modus eller eksklusiv modus. Execute "LOCK TABLE MyTable i eksklusiv modus" (bytt ut "MyTable" med navnet på DB2-tabell) for å holde låsen på hele tabellen før transaksjonen er fullført. Denne modusen hindrer andre brukere får tilgang til bordet før du slipper låsen.

2 Execute "LOCK TABLE MyTable i aksje MODE" for å tillate kun lesetilgang til bordet i løpet av transaksjonen. Denne modusen holder dataene konsistente samtidig slik at brukerne kan se den. Den "LOCK TABLE" -kommandoen kan forbedre ytelsen og forhindre "vranglås" ved å lage en lås på hele tabellen i stedet for flere individuelle radlåsinger.

3 Åpne låsen med "RELEASE (COMMIT)" eller "RELEASE (DEALLOCATE)" --- dine to alternativer når du utfører "LOCK TABLE" statement som statisk SQL. "RELEASE (COMMIT)» vil åpne låsen etter henrettelsen av en "COMMIT" statement. "RELEASE (DEALLOCATE)» vil åpne låsen når programmet avsluttes.

4 Slipp låsen når du utfører "LOCK TABLE" statement som dynamisk SQL med "RELEASE (COMMIT)". Hvis du bruker caching, holder DB2 preparerte uttalelser i minnet etter en "COMMIT"; derfor må du deallocate låsen eller utføre en "COMMIT" etter de preparerte uttalelser er ikke lenger i minnet for å frigjøre låsen.

Hint

  • Du kan ikke bruke en "COMMIT" i en lagret prosedyre hvis det prosedyre er i kallet kjede av en brukerdefinert funksjon eller en utløser.