Read Uncommitted — transactionga boshqa transaction hali commit qilmagan o‘zgarishlarni ko‘rishga ruxsat berishi mumkin bo‘lgan eng zaif standart isolation darajasi. U taqsimlangan tizimdagi aniq consistency, replication yoki fault-handling masalasini ifodalaydi. Kafolatlar faqat termin nomidan emas, protocol modeli, failure farazlari va implementatsiya hujjatidan aniqlanadi.
Qo‘llanish sohasi
Reader in-flight write’ni ko‘radi; writer rollback qilsa o‘qilgan qiymat hech qachon committed state bo‘lmagan bo‘ladi. Dirty read asosida qaror qilgan transaction noto‘g‘ri natija chiqarishi mumkin.
Read Uncommitted alohida algoritm yoki konfiguratsiya sifatida emas, client xulqi, storage persistence va tarmoq noaniqligi bilan birga ko‘riladi. Bir tugundagi muvaffaqiyat boshqa replica ham shu state’ni commit qilganini avtomatik anglatmaydi. Shu sabab acknowledgementning aniq ma’nosi va visible state chegarasi hujjatlashtiriladi.
Qaror jarayoni
Ba’zi MVCC database’lar Read Uncommitted so‘rovini amalda Read Committed kabi bajaradi, chunki uncommitted versionni ko‘rsatmaydi. Shuning uchun nomdan tashqari vendor semantikasi tekshiriladi.
Read Uncommitted implementatsiyasida version va epoch eski state’ni yangisidan ajratadi. Node qayta ishga tushganda identityni ehtiyotsiz qayta ishlatish delayed message yoki eski logning yangi sessionga aralashishiga sabab bo‘ladi. Persistent metadata va join protocol bu chegarani himoya qiladi.
Izchillik xususiyatlari
Moliyaviy yoki invariantga bog‘liq ishda bu daraja xavfli. Reportingda ham bir-biriga mos bo‘lmagan row versiyalari yig‘ilib, real statega to‘g‘ri kelmaydigan aggregate hosil qilishi mumkin.
Read Uncommitted dizaynida safety va liveness ajratiladi. Safety buzilishi qarama-qarshi commit yoki noto‘g‘ri qiymatga, liveness buzilishi esa tizimning oldinga siljimasligiga olib keladi. Timeoutni qisqartirish livenessni tezlashtirishi mumkin, biroq sekin tarmoqda false failure va keraksiz leader almashishini oshiradi.
Boshqaruv
Read Uncommitted laboratoriya sinovida bitta nazorat operatsiyasi bilan boshlanadi. Keyin acknowledgement yo‘qolishi, replica sekinlashishi, process pause va leader almashishi navbat bilan kiritiladi. Har hodisadan oldin va keyin committed state tekshiriladi. Test tugagach eski tugun qaytib kelganda yangi tarixni buzmasligi alohida tasdiqlanadi.
Read Uncommittedning formal xususiyati amaliy implementatsiyada buzilmasligi uchun optimizationlar ham tekshiriladi. Cache, batch, asynchronous apply, follower read va compaction ko‘rinadigan order yoki durabilityni o‘zgartirishi mumkin. Feature flag yoqilganda avvalgi consistency testi qayta bajariladi. Hardware clock, disk cache va virtualizatsiya kabi quyi qatlam farazlari ham protocolga ta’sir qiladi. Tizim bir komponent bergan kafolatni yuqori qatlamga avtomatik ko‘chirmaydi; butun request yo‘li bo‘yicha eng zaif bo‘g‘in aniqlanadi.
Read Uncommitted holatini kuzatishda configuration version, role yoki epoch, commit nuqtasi, queue va log ko‘rsatkichlari birlashtiriladi. Alert operator bajara oladigan tekshiruvga bog‘lanadi: qaysi node, qaysi key yoki transaction va qaysi vaqt oralig‘i ko‘rilishi aniq yoziladi. Aggregate dashboarddan keyin xom dalil bilan tasdiqlash noto‘g‘ri tashxisni kamaytiradi.
Read Uncommittedga oid bahoni qayta ishlab bo‘lishi uchun test topologiyasi, software versiyasi, fault injection va kutilgan invariant saqlanadi. Yakuniy natija taxmin yoki bitta log satriga emas, bir-birini tasdiqlovchi state, history va o‘lchovlarga asoslanadi. Qabul qilingan cheklovlar ham natija bilan birga yozilib, boshqa workloadga ko‘r-ko‘rona ko‘chirilmaydi.
Bog‘liq tushunchalar
dirty read, isolation level, rollback, Read Committed, transaction, MVCC