Tranzaksiya. Tranzaksiyalarni qayta tiklash.
Reja:
Tranzaksiya nima?
Tranzaksiyalarni qo`llash
Tranzaksiya xususiyatlari
Transact-SQL tranzaksiya operatorlari va instruksilari
Tranzaksiya jurnali
Blokirovkalar(qulflar)
Blokirovka rejimi
O`zaro blokirovkalar
Izolyatsiya darajalari
Tranzaksiya nima?
Ma`lumotlar bazasidagi ma`lumotlar odatda ko'plab amaliy dasturlar (dasturlar) tomonidan ishlatiladi. Bir nechta amaliy dasturlar bir vaqtning o`zida bir xil ma`lumotlarni o`qish va yozish operasiyalarini bajaradigan holat - bir vaqtda konkurent(parallel) murojaat qilish deb ataladi. Har bir ma`lumotlar bazasini boshqarish tizimida parallel murojaatlardan kelib chiqadigan muammolarni hal qilish uchun boshqaruv mexanizmi bo'lishi kerak.
Ko'p sonli faol foydalanuvchi dasturlariga bir-biriga to'sqinlik qilmaydigan tarzda xizmat ko`rsatadigan ma`lumotlar bazasida yuqori darajadagi parallel murojaat qilish imkoniyati mavjud.
Tranzaksiyalarni qo`llash
Tranzaksiya ma`lumotlar bazasi tizimida ma`lumotlar mutanosibligini(muvofiqligini) ta'minlashi uchun va ma`lumotlarni o`qish va yozish operasiyalarini birlashtirish uchun foydalanadigan Transact-SQL instruksiyalari ketma-ketligini belgilaydi. Tranzaksiyalarning ikki turi mavjud:
Yashirin tranzaksiya- har qanday bitta INSERT, UPDATE yoki DELETE operatorlarini tranzaksiya birligi sifatida aniqlaydi.
Aniq tranzaksiya odatda Transact-SQL instruksiyalari to’plami bo'lib, ularning boshlanishi va oxiri BEGIN TRANSACTION, COMMIT va ROLLBACK kabi operatorlar bilan ko`rsatiladi.
Tranzaksiya tushunchasini misol bilan yaxshiroq tushunib olaylik. Masalan, SampleDb ma`lumotlar bazasida "Vasiliy Frolov" xodimiga yangi tabel raqami berilishi kerak. Ushbu raqam bir vaqtning o`zida ikki xil jadvalda o`zgartirilishi kerak. Jumladan, bir vaqtning o`zida "Employee" jadvalidagi qatorni va "Works_on" jadvalidagi tegishli qatorlarni yangilashingiz kerak. Agar siz ushbu jadvallarning faqat bittasidagi ma`lumotlarni yangilasangiz, "SampleDb" ma`lumotlari mutanosibligi buziladi, chunki "Employee" jadvalidagi birlamchi kalit qiymatlari va "Works_on" jadvalidagi mos keladigan tashqi kalit qiymatlari mos kelmaydi. Ushbu operasiyani Transact-SQL operatorlari orqali amalga oshirish quyidagi misolda keltirilgan:
USE SampleDb;
-- tranzaksiyaning boshlanishi
BEGIN TRANSACTION
UPDATE Employee
SET Id = 14568
WHERE Id = 10102
IF (@@error <> 0)
-- tranzaksiyani bekor qilish, agarda xatolik mavjud bo’lsa
ROLLBACK
UPDATE Works_on
SET EmpId = 14568
WHERE EmpId = 10102
IF (@@error <> 0)
ROLLBACK
-- tranzaksiyaning tugashi
COMMIT
Misolda qayta ishlangan ma`lumotlarning mutanosibligini faqat UPDATE ning ikkala operatori bajarilgan taqdirda yoki ikkalasi ham bajarilmagan taqdirda ta'minlanishi mumkin. Har bir UPDATE operatorining muvaffaqiyatli bajarilgani @@error global o`zgaruvchisi yordamida tekshiriladi. Agar xatolik yuz bersa, bu o`zgaruvchi manfiy qiymatga o'rnatiladi va hozirgacha bajarilgan barcha tranzaksiya operatorlari amallari ROLLBACK operator orqali bekor qilinadi.
Dostları ilə paylaş: |