do ÂściÂągnięcia > pobieranie > ebook > pdf > download

[ Pobierz całość w formacie PDF ]
.5).Rysunek 12.5.Okno Locks/Object Current Activity.Zgodnoœæ blokadBlokady mog¹ byæ zgodne z innymi blokadami lub nie.Tabela 12.1 pokazujemacierz zgodnoœci blokad.Tabela 12.1 Zgodnoœæ blokadISSUIXSIXXIntent Shared (IS)YESYESYESYESYESNOShared (S)YESYESYESNONONOUpdate (U)YESYESNONONONOIntent Exclusive (IX)YESNONOYESNONOShared With Intent Exclusive (SIX)YESNONONONONOExclusive (X)NONONONONONOWarto zauwa¿yæ, ¿e blokady wy³¹czne (exclusive) nie s¹ kompatybilne z ¿adnymiblokadami.Po przemyœleniu wydaje siê to sensowne.Je¿eli dane s¹ zmieniane,nikt inny nie powinien w tym samym czasie zmieniaæ tych danych.Z drugiejstrony blokady wspó³dzielone s¹ elastyczne z uzasadnionych przyczyn.Je¿eliu¿ytkownik czyta dane, nie ma problemu, ¿eby te same dane czyta³ w tym samymczasie inny u¿ytkownik.Zakleszczenia (deadlocks)Zakleszczenie jest sytuacj¹, w której dwie transakcje popadaj¹ ze sob¹ wkonflikt i jedynym wyjœciem z tej sytuacji jest anulowanie jednej z transakcji.Najlepszym sposobem zrozumienia tego problemu jest analiza przyk³adu:Nale¿y utworzyæ dwie tabele przy pomocy Query Analyzera i wype³niæ je danymi:USE pubsGOCREATE TABLE tblChecking(intAcctNum INT NOT NULL,strLastName CHAR(30) NOT NULL,curBalance MONEY NOT NULL)GOCREATE TABLE tblSavings(intAcctNum INT NOT NULL,strLastName CHAR(30) NOT NULL,curBalance MONEY NOT NULL)GOINSERT tblChecking VALUES (1,'smith', $500.00)INSERT tblChecking VALUES (2,'Jones', $300.00)INSERT tblSavings VALUES (1,'smith', $100.00)INSERT tblSavings VALUES (2,'Jones', $200.00)GONale¿y otworzyæ drugie okno Query Analyzera (z menu plik wybraæ Connect).Wpierwszym oknie uruchomiæ kod:use pubsGOBEGIN TRANUPDATE tblCheckingSET curBalance = curBalance + $100.00WHERE intAcctNum = 1OdpowiedŸ systemu powinna byæ nastêpuj¹ca:(1 row(s) affected)W drugim oknie nale¿y uruchomiæ kod:USE pubsGOBEGIN TRANUPDATE tblSavingsSET curBalance = curBalance - $100.00WHERE intAcctNum = 2z tym samym wynikiem.Nastêpnie, w pierwszym oknie nale¿y uruchomiæ:UPDATE tblSavingsSET curBalance = curBalance - $100.00WHERE intAcctNum = 1Warto zauwa¿yæ, ¿e transakcja nadal jest wykonywana, podczas gdy inne okno j¹blokuje.Uruchamiaj¹c w trzecim oknie procedurê sp_lock mo¿na przegl¹dn¹ænastêpuj¹ce wyniki:spid dbid ObjId IndId Type Resource Mode Status------ ------ ----------- ------ ---- ---------------- -------- ------51 5 0 0 DB S GRANT51 5 773577794 0 TAB IX GRANT51 5 773577794 0 RID 1:141:0 X GRANT51 5 789577851 0 RID 1:143:1 U WAIT51 5 789577851 0 RID 1:143:0 X GRANT51 5 789577851 0 PAG 1:143 IX GRANT51 5 773577794 0 PAG 1:141 IX GRANT51 5 789577851 0 TAB IX GRANT54 5 789577851 0 PAG 1:143 IX GRANT54 5 789577851 0 TAB IX GRANT54 5 789577851 0 RID 1:143:1 X GRANT54 5 0 0 DB S GRANT55 1 85575343 0 TAB IS GRANTWarto zauwa¿yæ, ¿e jeden z procesów spid w kolumnie status ma s³owo WAIT,oznaczaj¹ce, ¿e proces czeka aby za³o¿yæ blokadê i nie mo¿e ruszyæ, dopóki innyproces (spid) nie zwolni swojej blokady w wymaganych zasobach.W drugim oknie nale¿y uruchomiæ kod:UPDATE tblCheckingSET curBalance = curBalance + $100.00WHERE intAcctNum = 2Powinien siê pojawiæ komunikat tego rodzaju:Server: Msg 1205, Level 13, State 50, Line 1Your transaction (Proced ID 54) was deadlocked on (lock) resources with antherprocess and has been chosen as the deadlock victim.Rerun your transaction.Teraz wykonane jest oryginalne zapytanie.Nale¿y uruchomiæ nastêpuj¹cy„czyszcz¹cy” kod w pierwszym oknie:COMMIT TRANGODROP TABLE tblCheckingDROP TABLE tblSavingsGOUnikanie zakleszczeñ jest bardzo istotne poniewa¿ gdy pojawi¹ siê zakleszczeniamarnowane s¹ czas i zasoby [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • klimatyzatory.htw.pl