#shortBlog
Isolation ma'lumotlar omborini go'zal tamoyillaridan biri deb bilaman. Bir nechta tranzaksiya bir-birini blok qilib qo'ymasligi uchun ajoyib yechimlar qilingan. Sezganingizdek Pessimistic Locking va Optimistic Locking mexanizmlari haqida gap ketayabdi.
Pessimistic Locking
Tranzaksiya A obyektni o'qishi yoki yozishidan oldin. Unga (Lock) qulf qo'yadi. Agar Tranzaksiya B o'sha obyektni ustida biror ish qilmoqchi bo'lsa, uni tugashini va qulfni olib tashlashini kutishi kerak bo'ladi. Bu yechimni yomon tomoni, agar ko'p tranzaksiyalar bir-birini kutib qolsa (Deadlock), tizim qotib qolishi mumkin.
Optimistic Locking
Multi-Version Concurrency Control mehanizmi yuqoridagi muammoni yanada yaxshiroq yechish uchun qilingan. Men uni Time Travel deb atayman. Nega unday? Chunki biz multi dimension olamda yashaybamiz (quantum physics aytishi bo'yicha). Bu yechimdagi go'zallik, DB barcha tranzaksiyalar qilgan o'zgarishlarni saqlab boradi. Qachonki Tranzaksiya A boshlansa, DB hozirgi holatidan "Snapshot" oladi. Tranzaksiya B ham boshlanib, biror qiymatni o'zgartirsa, u ham o'zidagi versiyani o'zgartirgan bo'ladi. Tranzaksiya A ga hech qanday zarar o'tmaydi. Read qilayotganlar ham, Write qilayotganlar ham bir-birini blok qilmaydi.
Bu ikkisi ham trade-off. Pessimistic Locking'da tizimni qotirib qo'yishingiz mumkin bo'lsa, Optimistic Locking'da juda ko'p xotira ishlatishni boshlaysiz. Undan tashqari Timestamp Ordering, 2PL, SSI, DCC, Token-Based / Lease-Based kabi yechimlar ham bor. O'rganishni maslahat beraman. System Design intervyularda o'qigan kitoblaringiz emas, texnik bilmlaringiz va ularni ishlata olishingiz ko'proq azq otadi.
Post #560
6.18K