3. Tranzaksiya xususiyatlari. Tranzaksiyani yakunlash usullari
Har xil xususiyatlarga ko'ra tasniflanishi mumkin bo'lgan turli xil operatsiyalar modellari mavjud, shu jumladan tranzaksiya tuzilishi, tranzaksiya ichidagi parallellik, davomiylik va boshqalar.
Hozirgi vaqtda operatsiyalarning quyidagi turlari ajratiladi: yassi yoki klassik operatsiyalar, zanjirli operatsiyalar va ichki o'zaro operatsiyalar.
Yassi operatsiyalar atomiklik, mustahkamlik, izolyatsiya va chidamlilikning klassik xususiyatlari bilan tavsiflanadi.
· Atomlik xususiyati bitimning yaxlit bajarilishi yoki umuman bajarilmasligida ifodalanadi.
· Muvaffaqiyatlilik xususiyati tranzaktsiya davom etayotganda ma'lumotlarning bir izchil holatdan boshqa izchil holatga o'tishini ta'minlaydi - tranzaksiya ma'lumotlarning o'zaro izchilligini buzmaydi.
· Izolyatsiya xususiyati ma'lumotlar bazasiga kirish uchun raqobatlashayotgan tranzaktsiyalar jismoniy jihatdan ketma-ket, bir-biridan ajratilgan holda qayta ishlanishini anglatadi, lekin foydalanuvchilarga ular parallel ravishda bajarilayotgandek ko'rinadi.
· Uzoq umr ko'rish xususiyati shuni anglatadiki, agar tranzaksiya muvaffaqiyatli yakunlangan bo'lsa, unda kiritilgan ma'lumotlar o'zgarishlari hech qanday sharoitda, hatto keyingi xatolar bo'lsa ham yo'qolmaydi.
Tranzaktsiyani bajarish uchun ikkita variant mavjud:
· agar barcha bayonotlar muvaffaqiyatli bo'lsa va tranzaksiya davomida apparat yoki dasturiy ta'minotda nosozliklar ro'y bermasa, tranzaktsiya amalga oshiriladi. (Majburiyat - bu tranzaktsiyani bajarish paytida kiritilgan ma'lumotlar bazasidagi o'zgarishlarni diskka yozish). Agar tranzaktsiya amalga oshirilmasa, bu o'zgarishlar orqaga qaytarilishi va ma'lumotlar bazasi tranzaksiya boshlangan paytdagi holatga qaytarilishi mumkin. Tranzaksiyani amalga oshirish bitimning barcha natijalari doimiy bo'lishini anglatadi. Ular joriy tranzaksiya amalga oshirilgandan keyingina boshqa tranzaktsiyalarga ko'rinadi.
· Agar tranzaktsiyani bajarishda nosozlik yuzaga kelsa, ma'lumotlar bazasini asl holatiga qaytarish kerak. Tranzaksiyani qaytarish - bu SQL bayonotlari orqali kiritilgan barcha ma'lumotlar o'zgarishlarini joriy kutilayotgan tranzaktsiyaning tanasiga qaytaradigan harakat.
4. OperatorlarTranzaksiyaSQLtranzaktsiyalar bilan ishlash
ANSI / ISO operatorlari aniqlangan MAVJAT QILING va ORTAGA OLISH, standartda tranzaktsiyaning boshlanishi ma'lumotlarni o'zgartirishning birinchi operatori tomonidan bevosita ko'rsatilgan; Operator MAVJAT QILING tranzaksiyaning muvaffaqiyatli yakunlanishini bildiradi, operatsiya natijalari tashqi xotiraga yoziladi; operator operatsiyani tugatganida ORTAGA OLISH bitim natijalari bekor qilinadi. Tranzaktsiya boshlangan dasturning muvaffaqiyatli yakunlanishi tranzaksiyaning muvaffaqiyatli yakunlanishini anglatadi (go'yo operatorMAVJAT QILING ), muvaffaqiyatsiz tugallanish - tranzaktsiyani bekor qiladi (go'yo operator ishlatilgandek).ORTAGA OLISH ). Ushbu modelda ma'lumotlarning holatini o'zgartiruvchi har bir bayonot tranzaksiya hisoblanadi. Ushbu model tijorat DBMSning birinchi versiyalarida amalga oshirilgan. Keyinchalik SYBASE ma'lumotlar bazasida kengaytirilgan tranzaksiya modeli joriy etildi.
Kengaytirilgan tranzaksiya modelida (masalan, SQL SERVER ma'lumotlar bazasida) bir qator qo'shimcha operatsiyalar taqdim etiladi:
· operator OMONTAJNI BOSHLASH tranzaktsiyaning boshlanishi haqida xabar beradi;
· operator OMONTAJNI BAJARISH operatsiya muvaffaqiyatli yakunlanganligi haqida xabar beradi. Ushbu operator, shuningdek, ANSI / ISO standart modelidagi COMMIT tranzaktsiyani amalga oshirish paytida ma'lumotlar bazasiga kiritilgan barcha o'zgarishlarni tuzatadi;
· operator Tranzaksiyani SAQLASH tranzaksiya ichida ushbu bayonotni bajarish vaqtida saqlangan ma'lumotlar bazasining oraliq holatiga mos keladigan saqlash nuqtasini yaratadi. Operatorda Tranzaksiyani SAQLASH saqlash nuqtasi nomi bo'lishi mumkin, shuning uchun tranzaktsiyani amalga oshirish jarayonida bir nechta oraliq holatlarga mos keladigan bir nechta saqlash nuqtalari saqlanishi mumkin;
· operator ORTAGA OLISH 2 ta modifikatsiyaga ega. Agar u qo'shimcha parametrsiz ishlatilsa, u parametrga ega bo'lsa, butun tranzaksiyani orqaga qaytarish operatori sifatida talqin etiladi. ortga qaytarish n, u holda operatsiyani n saqlash nuqtasiga qisman orqaga qaytarish operatori sifatida talqin qilinadi.
Saqlash nuqtalari uzoq va murakkab tranzaktsiyalarda foydali bo'lib, muayyan bayonotlar tomonidan kiritilgan o'zgarishlarni bekor qilish imkoniyatini beradi.
Ko'pgina hollarda siz chaqirilgan parametrni o'rnatishingiz mumkin AVTOKOMIT , bu barcha bajarilgan buyruqlarni avtomatik ravishda eslab qoladi va xatoga olib kelgan harakatlar har doim avtomatik ravishda bekor qilinadi. Odatda bu rejim quyidagi buyruq bilan o'rnatiladi:
SET AVTOKOMIT ON ;
va so'rovlarni normal muloqot oynasiga qaytarish:
SET AVTOKOMIT O'CHIRIB ;
Bundan tashqari, o'rnatish mumkin AVTOKOMIT , ma'lumotlar bazasi ma'lumotlar bazasi ro'yxatdan o'tganda avtomatik ravishda amalga oshiradi.Agar foydalanuvchi sessiyasi g'ayritabiiy tarzda tugatilgan bo'lsa - masalan, tizimda xatolik yuz bergan bo'lsa, joriy tranzaksiya avtomatik ravishda o'zgarishlarni orqaga qaytaradi. Yagona tranzaktsiyalarda, ayniqsa, bir-biriga bog'liq bo'lmagan ko'plab buyruqlar mavjud bo'lgan tarzda ishni tashkil qilish tavsiya etilmaydi. Bu o'zgarishlar bekor qilinganda juda ko'p harakatlar, shu jumladan zarur bo'lgan va xatolarga olib kelmaydigan harakatlar bajarilishiga olib kelishi mumkin. Tranzaktsiya bitta buyruq yoki bir-biriga yaqin bo'lgan bir nechta buyruqlardan iborat bo'lganda eng yaxshi variant.
Trigger aniq belgilangan tranzaksiya sifatida bajariladi, shuning uchun trigger ichida tranzaksiyani boshqarish buyruqlariga ruxsat beriladi. Xususan, agar siz yaxlitlik cheklovlarining buzilishini aniqlasangiz, buyruqni ishlatishingiz kerak ORTAGA BERISH TRANAKSIYASI ... Trigger muvaffaqiyatli tugallansa, siz buyruqdan foydalanishingiz mumkin MAVJAT QILING TRANAKSIYA .
Buyruqni bajarish ORTAGA BERISH TRANAKSIYASI yoki MAVJAT QILING TRANAKSIYA tetikni buzmaydi, shuning uchun turli shartlar bajarilganda tranzaksiyani bir necha marta orqaga qaytarishga urinishlarni diqqat bilan kuzatib borishingiz kerak.
Tranzaksiyaga misol:
TRANNI BOSHLASH
Hisobni YANGILASH
SET balansi = balans - 100
Agar @@ xato = 0 bo'lsa
BOSHLASH
ORTAGA BERISH TRAN
QAYTISH
OXIRI
karta_hisobini YANGILASH
SET balansi = balans + 100
QAYERDA account_number=@s _hisob
Agar @@ xato = 0 bo'lsa
BOSHLASH
ORTAGA BERISH TRAN
QAYTISH
OXIRI
TRANNI QILISh
Buyruq BOSHLASH TRAN serverga tranzaksiya boshlanishi haqida xabar beradi. Bu shuni anglatadiki, server buyruqni olishdan oldinMAVJAT QILING TRAN barcha o'zgarishlar vaqtinchalik. Shuning uchun, agar birinchi yangilanishdan keyin server ishdan chiqsa, tranzaksiya orqaga qaytariladi. Tranzaksiya tugamaguncha hech qanday jarayon ma'lumotlarga kira olmaydi.
Do'stlaringiz bilan baham: |