Ma'lumotlar bazalaridagi tranzaksiya izolyatsiya darajalarini bilasizmi?
sobes.tech AI
AIdan javob
SQL standarti to'rt izolyatsiya darajasini belgilaydi: Read Uncommitted, Read Committed, Repeatable Read, Serializable.
-
Read Uncommitted: Eng past daraja. Transaksiya hali tasdiqlanmagan (ya'ni, boshqa bir transaksiya tomonidan bajarilgan va hali
COMMITqilinmagan) ma'lumotlarni o'qishi mumkin. Bu "iflos" o'qishlarga (dirty reads) olib keladi. -
Read Committed: Transaksiya faqat o'z boshlanishidan yoki davomida tasdiqlangan ma'lumotlarni ko'radi. "Iflos" o'qishlarni oldini oladi, lekin takrorlanmaydigan o'qishlar (non-repeatable reads) va fantom o'qishlarni (phantom reads) ruxsat beradi.
- Takrorlanmaydigan o'qishlar: Bir xil transaksiyada bir xil o'qish turli ma'lumotlarni qaytarishi mumkin, chunki boshqa bir transaksiya ularni o'zgartirib, tasdiqlagan.
- Fantomlar:
WHEREsharti bilan so'rov bajarilganda, ikkinchi transaksiya shartga mos satrlarni qo'shadi yoki o'chiradi, va birinchi transaksiyada shu so'rovni takrorlash boshqacha satrlar to'plamini qaytaradi.
-
Repeatable Read: Transaksiya faqat o'z boshlanishidan oldin tasdiqlangan ma'lumotlarni ko'radi. Bir xil satrlarni takroriy o'qishlar bir xil ma'lumotlarni qaytarishini kafolatlaydi. "Iflos" va takrorlanmaydigan o'qishlarni oldini oladi. Fantomlarni ruxsat beradi.
// Repeatable Read misoli // Transaksiya 1 // BEGIN TRANSACTION; // SELECT COUNT(*) FROM users WHERE status = 'active'; // Masalan, 100 // Transaksiya 2 (bir vaqtning o'zida bajarilmoqda) // BEGIN TRANSACTION; // INSERT INTO users (name, status) VALUES ('Yangi foydalanuvchi', 'active'); // COMMIT; // Transaksiya 1 // SELECT COUNT(*) FROM users WHERE status = 'active'; // Hali ham 100 (fantom) // COMMIT; -
Serializable: Eng yuqori izolyatsiya darajasi. Parallellik bilan bajarilayotgan transaksiyalar, ularning ketma-ket bajarilishiga teng bo'lishini kafolatlaydi. "Iflos" o'qishlar, takrorlanmaydigan o'qishlar va fantomlarni oldini oladi. Bu blokirovkalar sababli ishlash tezligini pasaytirishi mumkin.
Turli DBMSlarda, izolyatsiya darajalarining o'ziga xos amalga oshirilishi va xususiyatlari bo'lishi mumkin, shuningdek, qo'shimcha darajalar ham mavjud. Masalan, MySQL InnoDBda, standart Repeatable Read hisoblanadi.