-mavzu. Tranzaksiyalarni boshqarishda so‘rovlar yaratish va

87
PI (“Dirtyread" - "Yomon o'qish"): T1 tranzaksiya qatomi yaratadi.
Keyin T2 tranzaksiya T1 COMMIT amalini bajarmasdan bu qatomi
o'qiyi. Shundan so'ng T1 ROLLBACK amalini bajarsa, T2
tranzaksiya umuman mavjid bo'lmagan qatomi o'qigan bo'lib chiqadi.
P2 (“Non-repeaiableread” - “Takrorlanmaidigan o'qish"): T1
tranzaksiya qatomi o'qiydi. Shundan so'ng T2 tranzaksiya bu
buyruqlar qatorini o'zgartiradi yoki
olib tashlayda va COMMITni
bajaradi. Shundan so'ng T1 shu qatomi yana o'qishga harakat qiladi,
ammo bu qator birinchi holatdagi qator emas yoki olib tashlangani
uchun topolmaydi.
РЗ ("Phantom" - "Fantom"): T1 tranzaksiya biror-bir shartni
qanoatlantiradigan N qatomi o'qiydi. Shundan so'ng T2
tranzaksiya
bu qatorlar ichidan bir yoki bir nechta qator shartlarini generatsiya
qiladi. Agar shu ishlardan keyin T1 o'qishni qaytarsa, u butunlay
boshqa qatorlarga ega bo'ladi,
To‟rtala himoyalanish daragalari P1, P2
va
P3
hodisalarga
nisbatan quyidagicha ta‟sirga ega:
Himoyalanish PI
P2
Р3
READUNCOM
Mumkin
Mumkin
Mumkin
READCOMMIT
Mumkin
Mumkin
Mumkin
REPEATABLE
Mumkin
Mumkin
Mumkin
SERIALIZABL
Mumkin
Mumkin
Mumkin
MB bilan ish jarayonida ma‟lumotlar butligi muhim o‟rin tutadl.
Ma‟lumotlar
butligi deganimizda, ma‟lumotlaming to'g‟riligi va
mazmunan qarma-qarshi ma‟noga ega emasligi tushuniladi. Masalan,
“O'qituvchi” jadvalidagi har bir o'zgarish “Yuklama” jadvalida ham
qayd etilishi kerak. 0„qituvchining “Yuklama" jadvalida qayd etilmasligi
ma‟lumotlar butligining buzilishiga olib keladi.
Ko‟pchilik hollarada MBning ma‟lumotlari
butligini
saqlashni tashkillashtirish uchun tranzaksiyalardan foydalanishadi.
Umuman olganda tranzaksiya - bu mantiqan bo'linmaydigan ish birligi.
Bu jarayonda:
yoki tranzaksiyaga kiruvchi barcha amallar MBda aks etadi;
yoki bu amallar umuman bajarilmaydi.
88
Tranzaksiyaning bu
xususiyati butlik
shartining
buzilmasligini ta‟minlaydi.
Ko„pgina MBBTda tranzaksiyalaming ikkita modeli ishlatiladi:
Tranzaksiyalaming avtomatik bajarilish modeli.
Tranzaksiyalaming bajarilishini boshqarish modeli.
Tranzaksiyalaming avtomatik bajarilish modelida, tranzaksiya avtomatik
ravishda ishga tushadi va quyidagi usullardan biri bilan tugaydi:
COMMIT yo‟riqnomasi bilan, bunda MBdagi o'zgarishlar doimiy
bajariladigan bo'ladi va yangi tranzaksiya COMMIT buyrug‟idan so'ng
boshlanadi.
ROLLBACK yo‟riqnomasi bilan, bunda tranzaksiyada bajarilgan barcha
o'zgarishlar bekor bo'ladi va
yangi tranzaksiya ROLLBACK
buyrug‟idan so'ng boshlanadi.
Tranzaksiyalaming bajarilishini boshqarish modeli SUBD Sysbase
dasturida qo‟llanilib, quyidagi yoriqnomalardan foydalaniladi:
BEGIN TRANSACTION yo‟riqnomasi, tranzaksiyaning boshlanishini
bildiradi.
COMMIT
TRANSACTION
yo‟riqnomasi,
tranzaksiyaning
muvaffaqiyatli tuganini bildiradi. Bunda yangi tranzaksiya avtomatik
ravishda ishga tushmaydi.
SAVE TRANSACTION yo‟riqnomasi, bunda tranzaksiya ichida saqlash
nuqtasi tashkillashtiradi va saqlangan saqlash nuqtasiga nom berish
imkoniyati yaratiladi.
ROLLBACK yo‟riqnomasi, bunda barcha tranzaksiyadagi amallar bekor
qilinadi va MB holati tranzaksiyadan oldingi holatga qaytariladi.
Shunday qilib, tranzaksiya - bu MBga tugallangan murojaat bo'lib
quyidagi to'rtta shartning bajarilishini kafolatlaydi:
Bo'linmaslik (atomarnost) - tranzaksiya boshi va oxiriga ega bo'lgan
boTinmas blok. Bu blok yoki to‟liqligicha
bajariladi, yoki umuman
bajarilmaydi;
Kelishuvchanlik - tranzaksiya tugaganidan so'ng, hamma ob‟yektlar
kelishganlik holatini saqlab qoladi;
Himoyalanganlik - har bir tranzaksiya jarayoni boshqa tranzaksiya
ishiga ta‟sir ko'rsatmaydi.
Doimiylik - tranzaksiya jarayonida bajarilgan barcha o'zgarishlar
doimiylik xarakteriga ega.
SQL tilida tranzaksiya jarayoniga misol.
89
SQL tilida har bir tranzaksiya bitta to'liq jarayonni bajarishiga
tushuncha hosil qildik. Ana shunday jarayonga misol keltiramiz:
“Ta'minlovchilar” jadvalidagi Sx raqamini Sy raqamiga o'zganirish
lozim bo'lsin. Sx va Sy - berilgan aniq parametr.
TRANEX: PROC OPTIONS (MAIN); /* tranzaksiyaga misol*/ EXEC
SQL WNENEVER SQLERROR GO TO UNDO; GET LIST (SX,SY);
EXEC SQL UPDATE S
SET TA‟MINLOVCHI RAQAMI = SY WHERE TA‟MINLOVCHI
RAQAMI = SX;
EXEC SQL UPDATE SP
SET TA‟MINLOVCHI RAQAMI = SY WHERE TA‟MINLOVCHI
RAQAMI = SX;
EXEC SQL COMMIT;
GO TO FINISH;
UNDO: EXEC SQL ROLLBACK; FINISH: RETURN;
END TRANEX;
Misolimizdan ko‟rinib
turibdiki, bu tranzaksiya jarayonida ikkita
jadval ustuda o‟zgarishlar amalga oshirilayapti. Demak, tranzaksiya
deganimizda bitta amalni emas, balki amallar
ketma-ketligini tushunish
lozim.