PostgreSQL tranzaksiya izolyatsiya darajalarini bilasizmi?
sobes.tech AI
AIdan javob
PostgreSQL'da, SQL standartiga muvofiq, to'rtta izolatsiya darajasi mavjud:
-
Read Uncommitted — eng past izolatsiya darajasi. Hali tasdiqlanmagan ma'lumotlarni (dirty reads) o'qishga imkon beradi. PostgreSQLda, aslida, dirty reads qo'llab-quvvatlanmaydi, shuning uchun u Read Committed kabi ishlaydi.
-
Read Committed — standart daraja. Transaktsiya faqat har bir alohida so'rovning boshlagan vaqtidagi tasdiqlangan ma'lumotlarni ko'radi. Transaktsiya ichidagi so'rovlar o'rtasida boshqa transaktsiyalar tomonidan amalga oshirilgan o'zgarishlar yuzaga kelishi mumkin.
-
Repeatable Read — transaktsiya boshlanganda olinadigan ma'lumotlar suratini ko'radi. Transaktsiya ichidagi barcha so'rovlar bir xil ma'lumotlarni ko'radi, hatto boshqa transaktsiyalar ularni o'zgartirsa va tasdiqlasa ham. Takrorlanmaydigan o'qishni (non-repeatable read) oldini oladi, ammo phantom o'qishlarga ruxsat beradi.
-
Serializable — eng qat'iy izolatsiya darajasi. Transaktsiyalarni to'liq serializatsiya qilishni kafolatlaydi, phantom o'qishlarni oldini oladi va ketma-ket bajarilish bilan teng bo'lgan xulq-atvorni ta'minlaydi.
Izolatsiya darajasini sozlash misoli:
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
-- SQL operatsiyalar
COMMIT;