SERIALIZABLE izolyasiya darajasi SERIALIZABLE izolyatsiya darajasi eng qat'iy hisoblanadi, chunki u yuqorida keltirilgan paralellik muammolarining to'rttasini ham oldini oladi. Ushbu daraja tegishli operasiya tomonidan o`qilgan ma`lumotlarning butun maydoniga blokirovka o'rnatadi. Shuning uchun, ushbu izolyatsiya darajasi boshqa tranzaksiyani birinchi tranzaksiya to’liq bajarilguncha yoki bekor qilincuncha yangi qatorlar qo'shilishiga to'sqinlik qiladi.
Tranzaksiya 1
Tranzaksiya 2
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
--SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
BEGIN TRAN;
SELECT * FROM Table1
WAITFOR DELAY '00:00:10'
SELECT * FROM Table1
COMMIT;
BEGIN TRAN;
INSERT INTO Table1 (Value)
VALUES(100)
COMMIT TRAN;
Natija REPEATABLE READ:
— birinchi SELECT ID: 1; Value: 1
— ikkinchi SELECT ID: 1; Value: 1
ID: 2; Value: 100
Darrov bajariladi
Natija SERIALIZABLE:
— birinchi SELECT ID: 1; Value: 1
— ikkinchi SELECT ID: 1; Value: 1
“Tranzaksiya 1”-ni tugashini kutadi
REPEATABLE READ: izolyasiya darajasi qo’llanilganda fantom o’qish hodisasi sodir bo’lmoqda, ya’ni tranzaksiyada aynan bir xil kriteriyali o’qishlar (select) turli yozuvlar to’plamini qaytarmoqda, chunki boshqa tranzaksiya orqali ushbu kriteriyaga mos keladigan yangi yozuvni qo’shmoqda. REPEATABLE READ: izolyasiya darajasi esa insert-dan himoya qilmasdi.