Foydalanuvchilarni boshqarish. Foydalanuvchilar


Umumiy blokirovka(shared lock)



Yüklə 44,52 Kb.
səhifə8/13
tarix13.12.2022
ölçüsü44,52 Kb.
#74230
1   ...   5   6   7   8   9   10   11   12   13
Narziyev Asomiddin databaza lab2

Umumiy blokirovka(shared lock)
Faqat o`qish uchun resursni (sahifa yoki qator) zaxiraga oladi. Boshqa jarayonlar shu tarzda qulflangan resursni o`zgartira olmaydi, biroq, boshqa tomondan, bir nechta jarayonlar parallel bitta resursda umumiy blokirovkaga ega bo'lishi mumkin. Boshqacha qilib aytganda, bir nechta jarayonlar birgalikda blokirovka qilingan resursni o`qishi mumkin.
Monopol blokirovka (exclusive lock)
Tranzaksiyada monopol foydalanish uchun sahifa yoki qatorni qulflaydi. Ushbu turdagi blokirovkalar resurslarni o`zgartiradigan DML instruksiyalar (INSERT, UPDATE va DELETE) tomonidan qo`llaniladi. Monopol blokirovkaga ega bo'lgan resursda (sahifa yoki qator) boshqa hech qanday blokirovka o'rnatilishi mumkin emas.
O`zgatirish blokirovkasi (update lock)
Resursda faqat boshqa o`zgarish blokirovkasi yoki monopol blokirovka bo'lmasa o'rnatilishi mumkin. Shu bilan bir qatorda, ushbu turdagi blokirovka ochiq blokirovkalar o'rnatilgan resurslarda o'rnatilishi mumkin. Bunday holda, o`zgartirish blokirovkasi resursga boshqa umumiy qulfni joylashtiradi. Agar resursni o`zgartiradigan tranzaksiya ishga tushsa va resursda boshqa qulflar bo'lmasa, o`zgartirish blokirovkasi monopol blokirovkaga aylantiriladi. Resursda faqat bitta o`zgartirish blokirovkasi bo'lishi mumkin.
O`zaro blokirovkalar
O`zaro blokirovkalar (Deadlock) - bu bir vaqtning o`zida ikkita tranzaksiya bir-birini blokirovka qiladigan maxsus parallel murojaat muammosi. Xususan, birinchi tranzaksiya boshqa tranzaksiya murojaat qilmoqchi bo’lgan ma`lumotlar bazasi ob`yektini bloklaydi va aksincha. (Umuman olganda, Deadlock ga bir nechta tranzaksiyalar sabab bo'lishi mumkin.) Quyidagi misolda ikkita tranzaktsiyaning o`zaro blokirovkasi holati ko`rsatilgan:
USE SampleDb;

BEGIN TRANSACTION BEGIN TRANSACTION


UPDATE Works_on UPDATE Employee
SET Job = 'Menedjer' SET DepartamentNumber = 'd2'
WHERE EmpId = 25348 WHERE Id = 28559
AND ProjectNumber = 'p2'
WAITFOR DELAY '00:00:10' WAITFOR DELAY '00:00:10'

UPDATE Employee DELETE FROM Works_on


SET LastName = 'Frolova' WHERE EmpId = 25348
WHERE Id = 28559 AND ProjectNumber = 'p2'
COMMIT COMMIT


Yüklə 44,52 Kb.

Dostları ilə paylaş:
1   ...   5   6   7   8   9   10   11   12   13




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin