Lås förekommer på IBM DB2 -servern varje gång du utför en sökning , infoga, uppdatera eller ta bort . Tabeller har en " LOCKSIZE " parameter som kan påverka låsning . Dukningen av " LOCKSIZE NÅGON " låter DB2 att välja storlek på låset , oftast förvärva sida lås . SQL-fråga uttalanden kan påverka låsningen genom att sätta en " isolering nivå " i början av transaktionen . Även när den beviljar ett visst lås , kan DB2 främja eller trappa upp låsningen , därför måste du förstå hur DB2 hanterar låsning när du skriver databasapplikationer . Programmerare kan ställa in låset för att förbättra databasens prestanda med " LOCK TABLE " kommandot , dock . Instruktioner
1
Lås hela tabellen i delat läge eller exklusivt läge . Kör " LOCK TABLE mytable i exklusivt läge " ( ersätt " mytable " med namnet på DB2 tabellen ) för att hålla låset på hela bordet tills transaktionen är klar . Detta läge förhindrar att andra användare från att komma åt tabellen tills du släpper låset .
2
Execute " LOCK TABLE mytable av aktie- MODE" för att tillåta skrivskyddad åtkomst till tabellen under transaktionen . Detta läge håller data konsekvent och samtidigt tillåta användare att visa den . Den " LOCK TABLE " kommandot kan förbättra prestanda och förhindra " låsningar " genom att skapa ett lås på hela tabellen istället för flera individuella lås rad .
3
Frigör låset med " RELEASE ( COMMIT ) " eller " RELEASE ( DEALLOCATE ) " --- dina två alternativ när du kör " lOCK TABLE " uttalande som statisk SQL . " RELEASE ( COMMIT ) " kommer att släppa låset efter genomförandet av en " COMMIT " uttalande . " RELEASE ( DEALLOCATE ) " kommer att frigöra låset när programmet avslutas .
4
Frigör låset när du kör " LOCK TABLE " uttalande som dynamisk SQL med " RELEASE ( COMMIT ) " . Om du använder caching , håller DB2 förberedda uttalanden i minnet efter en " COMMIT " , därför måste du deallokera låset eller exekvera ett " COMMIT " efter de förberedda uttalanden inte längre i minnet för att frigöra låset
Addera