Sobes.tech
Senior

PostgreSQL tranzaksiya izolyatsiya darajalarini bilasizmi?

sobes.tech AI

AIdan javob

PostgreSQL'da, SQL standartiga muvofiq, to'rtta izolatsiya darajasi mavjud:

  1. 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.

  2. 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.

  3. 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.

  4. 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;