Əməliyyatlar və onlara nəzarət mexanizmləri

Əməliyyatlar

Tranzaksiya verilənlər üzərində başlanğıcı və sonu olan əməliyyatlar ardıcıllığıdır.

Tranzaksiya oxu və yazma əməliyyatlarının ardıcıl icrasıdır. Əməliyyatın sonu ya dəyişikliklərin saxlanması (öhdəliyin) və ya dəyişikliklərin ləğvi (geri qaytarılması) ola bilər. Verilənlər bazası ilə əlaqədar olaraq, əməliyyat bir sorğu kimi qəbul edilən bir neçə sorğudan ibarətdir.

Əməliyyatlar ACID xüsusiyyətlərinə cavab verməlidir

Atomluq. Əməliyyat ya tamamilə tamamlanır, ya da heç tamamlanmır.

Ardıcıllıq. Əməliyyatı tamamlayarkən məlumatlara qoyulan məhdudiyyətlər (məsələn, verilənlər bazasında məhdudiyyətlər) pozulmamalıdır. Ardıcıllıq sistemin bir düzgün vəziyyətdən digər düzgün vəziyyətə keçməsini nəzərdə tutur.

İzolə. Paralel olaraq həyata keçirilən əməliyyatlar bir-birinə təsir etməməlidir, məsələn, başqa bir əməliyyat tərəfindən istifadə edilən məlumatları dəyişdirməlidir. Paralel əməliyyatların yerinə yetirilməsinin nəticəsi, əməliyyatların ardıcıl olaraq yerinə yetirildiyi kimi olmalıdır.

Davamlılıq. Təhlil edildikdən sonra dəyişikliklər itirilməməlidir.

Əməliyyat jurnalı

Jurnal əməliyyatlar tərəfindən edilən dəyişiklikləri saxlayır, sistem nasazlığı halında məlumatların atomikliyini və sabitliyini təmin edir

Jurnal məlumatların əməliyyat tərəfindən dəyişdirilməsindən əvvəl və sonra malik olduğu dəyərləri ehtiva edir. Öncədən yazmaq jurnalı strategiyası başlanğıcdan əvvəl əvvəlki dəyərlər və əməliyyat başa çatdıqdan sonra yekun dəyərlər haqqında jurnal girişinin əlavə edilməsini tələb edir. Sistemin qəfil dayanması halında verilənlər bazası jurnalı tərs qaydada oxuyur və əməliyyatlarla edilən dəyişiklikləri ləğv edir. Kəsilmiş əməliyyatla qarşılaşdıqdan sonra verilənlər bazası onu icra edir və bu barədə jurnalda dəyişikliklər edir. Uğursuzluq zamanı vəziyyətdə olan verilənlər bazası jurnalı irəli ardıcıllıqla oxuyur və əməliyyatlar tərəfindən edilən dəyişiklikləri qaytarır. Beləliklə, artıq edilmiş əməliyyatların sabitliyi və kəsilmiş əməliyyatın atomikliyi qorunur.

Uğursuz əməliyyatların sadəcə təkrar icrası bərpa üçün kifayət deyil.

Misal. İstifadəçinin hesabında 500 dollar var və istifadəçi onu bankomatdan çıxarmaq qərarına gəlir. İki əməliyyat davam edir. Birincisi balans dəyərini oxuyur və balansda kifayət qədər vəsait varsa, istifadəçiyə pul verir. İkincisi, balansdan tələb olunan məbləği çıxarır. Tutaq ki, sistem çökdü və birinci əməliyyat uğursuz oldu, amma ikincisi uğursuz oldu. Bu halda, sistemi müsbət balansla ilkin vəziyyətinə qaytarmadan istifadəçiyə yenidən pul buraxa bilmərik.

İzolyasiya səviyyələri

Təhlükəli Oxuyun

Dirty Read problemi əməliyyatın başqa bir əməliyyatın ara nəticəsini oxuya bilməsidir.

Misal. İlkin balans dəyəri $0-dır. T1 balansınıza $50 əlavə edir. T2 balans dəyərini oxuyur ($50). T1 dəyişiklikləri rədd edir və çıxır. T2 səhv balans məlumatları ilə icraya davam edir.

Həll yolu, əməliyyat tərəfindən dəyişdirilmiş məlumatların oxunmasını qadağan edən sabit məlumatları oxumaqdır (Oxuyun). Əgər A əməliyyatı müəyyən verilənlər toplusunu dəyişibsə, B əməliyyatı bu məlumatlara daxil olarkən A əməliyyatının tamamlanmasını gözləməyə məcbur olur.

Təkrarlanan oxu

İtirilmiş Yeniləmələr problemi. T1 dəyişiklikləri T2 dəyişikliklərinin üstündə saxlayır.

Misal. İlkin balans dəyəri $0-dır və iki əməliyyat eyni vaxtda balansı doldurur. T1 və T2 $ 0 balansını oxuyur. T2 sonra $200-a $0 əlavə edir və nəticəni saxlayır. T1 $100-a $0 əlavə edir və nəticəni saxlayır. Yekun nəticə 100 dollar əvəzinə 300 dollardır.

Təkrarlanmayan oxu problemi. Eyni verilənləri təkrar oxumaq fərqli dəyərləri qaytarır.

Misal. T1 $0 balans dəyərini oxuyur. T2 sonra balansa $50 əlavə edir və bitir. T1 məlumatları yenidən oxuyur və əvvəlki nəticə ilə uyğunsuzluq tapır.

Təkrarlanan oxuma ikinci oxunuşun eyni nəticəni qaytaracağını təmin edir. Bir əməliyyat tərəfindən oxunan məlumatlar əməliyyat tamamlanana qədər digərlərində dəyişdirilə bilməz. Əgər A əməliyyatı müəyyən verilənlər toplusunu oxuyubsa, B əməliyyatı bu məlumatlara daxil olarkən A əməliyyatının tamamlanmasını gözləməyə məcbur olur.

Sifarişli oxu (Seriallaşdırıla bilər)

Phantom Reads problemi. Müəyyən bir şərt əsasında məlumatları seçən iki sorğu fərqli dəyərlər qaytarır.

Misal. T1 balansı $0-dan çox, lakin $100-dən az olan bütün istifadəçilərin sayını tələb edir. T2, 1 ABŞ dolları balansı olan istifadəçidən 101 dolları kəsir. T1 sorğunu yenidən göndərir.

Sifarişli oxu (Seriallaşdırıla bilər). Əməliyyatlar tamamilə ardıcıl olaraq həyata keçirilir. Sorğunun şərtlərinə uyğun gələn qeydləri yeniləmək və ya əlavə etmək qadağandır. Əgər A əməliyyatı bütün cədvəldən məlumat tələb edibsə, A əməliyyatı tamamlanana qədər bütün cədvəl digər əməliyyatlar üçün dondurulur.

Planlayıcı

Paralel əməliyyatlar zamanı əməliyyatların yerinə yetirilməli olduğu sıranı təyin edir.

Müəyyən bir izolyasiya səviyyəsini təmin edir. Əgər əməliyyatların nəticəsi onların ardıcıllığından asılı deyilsə, bu cür əməliyyatlar kommutativdir (Permutable). Müxtəlif verilənlər üzərində oxu əməliyyatları və əməliyyatlar kommutativdir. Oxu-yazma və yazma-yazma əməliyyatları kommutativ deyil. Planlaşdırıcının vəzifəsi paralel əməliyyatlar tərəfindən yerinə yetirilən əməliyyatları bir-birindən ayırmaqdır ki, icra nəticəsi əməliyyatların ardıcıl icrasına bərabər olsun.

Paralel işlərə nəzarət mexanizmləri (Concurrency Control)

Optimist konfliktləri aşkar edib həll etməyə, pessimist münaqişələrin yaranmasının qarşısını almağa əsaslanır.

Optimist yanaşmada, bir çox istifadəçinin ixtiyarında olan məlumatların surətləri var. Redaktəni tamamlayan ilk şəxs dəyişiklikləri saxlayır, digərləri isə dəyişiklikləri birləşdirməlidir. Optimist alqoritm münaqişənin baş verməsinə imkan verir, lakin sistem münaqişədən xilas olmalıdır.

Pessimist yanaşma ilə məlumatları ilk tutan istifadəçi başqalarının məlumatı qəbul etməsinə mane olur. Münaqişələr nadirdirsə, optimist strategiya seçmək müdrikdir, çünki bu, daha yüksək səviyyəli paralellik təmin edir.

Kilidlənir

Əgər bir tranzaksiyada məlumat kilidlənibsə, digər əməliyyatlar məlumatlara daxil olarkən onun kilidi açılana qədər gözləməlidir.

Blok verilənlər bazasında, cədvəldə, cərgədə və ya atributda üst-üstə düşə bilər. Paylaşılan Kilid eyni məlumatlara bir neçə əməliyyat tərəfindən tətbiq edilə bilər, bütün əməliyyatları (o cümlədən onu tətbiq edən) oxumağa imkan verir, dəyişdirilməsi və eksklüziv ələ keçirilməsini qadağan edir. Eksklüziv Kilid yalnız bir əməliyyatla tətbiq edilə bilər, tətbiq edilən əməliyyatın istənilən hərəkətinə icazə verir, başqalarının hər hansı hərəkətini qadağan edir.

Çıxmaz, əməliyyatların qeyri-müəyyən müddətə davam edən gözlənilən vəziyyətdə sona çatdığı bir vəziyyətdir.

Misal. Birinci tranzaksiya ikincinin tutduğu məlumatların buraxılmasını, ikincisi isə birincinin tutduğu məlumatların buraxılmasını gözləyir.

Çıxış probleminin optimist həlli dalana dirənməyə imkan verir, lakin sonra dalana dirənmiş əməliyyatlardan birini geri qaytarmaqla sistemi bərpa edir.

Kilidlər müəyyən fasilələrlə axtarılır. Aşkarlama üsullarından biri zamana görədir, yəni əməliyyatın başa çatdırılması çox uzun çəkərsə, dalana dirəndiyini nəzərə alın. Çıxılmaz vəziyyət aşkar edildikdə, tranzaksiyalardan biri geri çəkilir, bu da çıxılmaz vəziyyətdə olan digər əməliyyatların tamamlanmasına imkan verir. Qurbanın seçimi əməliyyatların dəyərinə və ya onların iş stajına (Gözlə-Öl və Yara-Gözləmə sxemləri) əsaslana bilər.

Hər əməliyyat T vaxt möhürü təyin edilir TS əməliyyatın başlama vaxtını ehtiva edir.

Gözləyin - Öl.

Əgər TS(Ti) < TS(Tj), Sonra Ti gözləyir, əks halda Ti geri dönür və eyni vaxt damğası ilə yenidən başlayır.

Əgər gənc əməliyyat resurs əldə edibsə və köhnə əməliyyat eyni resursu tələb edirsə, o zaman köhnə əməliyyatın gözləməsinə icazə verilir. Əgər köhnə tranzaksiya resurs əldə edibsə, o zaman həmin resursu tələb edən daha gənc əməliyyat geri qaytarılacaq.

Yara-gözləyin.

Əgər TS(Ti) < TS(Tj), Sonra Tj geriyə yuvarlanır və eyni vaxt damğası ilə yenidən başlayır, əks halda Ti gözləmə.

Əgər daha gənc əməliyyat resurs əldə edibsə və köhnə əməliyyat eyni resursu tələb edirsə, daha gənc əməliyyat geri qaytarılacaq. Əgər köhnə əməliyyat resurs əldə edibsə, o zaman həmin resursu tələb edən daha gənc əməliyyatın gözləməsinə icazə verilir. Üstünliyə əsaslanan qurban seçimi dalana dirənmənin qarşısını alır, lakin dalana dirənməyən əməliyyatları geri qaytarır. Problem ondadır ki, əməliyyatlar dəfələrlə geri qaytarıla bilər, çünki... köhnə əməliyyat resursu uzun müddət saxlaya bilər.

Dalan probleminin pessimist həlli, dalana dirənmə riski varsa, əməliyyatın icrasına başlamağa imkan vermir.

Kilidi aşkar etmək üçün təpələri əməliyyatlar olan qrafik qurulur (gözləmə qrafiki, gözləmə qrafiki), kənarları isə məlumatların buraxılmasını gözləyən əməliyyatlardan bu məlumatları tutan əməliyyata yönəldilir. Qrafikdə döngə varsa, çıxılmaz vəziyyət yaranmış hesab olunur. Xüsusilə paylanmış verilənlər bazalarında gözləmə qrafikinin qurulması bahalı prosedurdur.

İki fazalı kilidləmə - əməliyyatın əvvəlində əməliyyatın istifadə etdiyi bütün resursları ələ keçirərək və sonunda onları buraxaraq dalana dirənmənin qarşısını alır.

Bütün bloklama əməliyyatları birinci kiliddən əvvəl olmalıdır. Onun iki fazası var - Böyümə Fazası, bu müddət ərzində tutacaqlar yığılır və Kiçilmə Fazası, bu müddət ərzində tutacaqlar sərbəst buraxılır. Resurslardan birini tutmaq mümkün deyilsə, əməliyyat yenidən başlayır. Mümkündür ki, əməliyyat tələb olunan resursları əldə edə bilməyəcək, məsələn, eyni resurslar üçün bir neçə əməliyyat rəqabət aparırsa.

İki fazalı öhdəlik, öhdəliyin bütün verilənlər bazası replikalarında yerinə yetirilməsini təmin edir

Hər bir verilənlər bazası jurnala dəyişdiriləcək məlumatlar haqqında məlumat daxil edir və koordinator OK (Səsvermə mərhələsi) cavab verir. Hər kəs OK cavabını verdikdən sonra koordinator hər kəsi öhdəlik götürməyə məcbur edən siqnal göndərir. Təhlil etdikdən sonra serverlər OK cavab verir; ən azı biri OK cavab vermirsə, o zaman koordinator bütün serverlərə edilən dəyişiklikləri ləğv etmək üçün siqnal göndərir (Tamamlama mərhələsi).

Zaman damğası üsulu

Daha gənc bir əməliyyatın cəlb etdiyi məlumatlara daxil olmağa cəhd edərkən köhnə əməliyyat geri qaytarılır

Hər bir əməliyyata vaxt möhürü verilir TS icraya başlama vaxtına uyğundur. Əgər Ti qoca Tj, Sonra TS(Ti) < TS(Tj).

Tranzaksiya geri qaytarıldıqda ona yeni vaxt möhürü təyin edilir. Hər bir məlumat obyekti Q əməliyyatda iştirak edən iki etiketlə qeyd olunur. W-TS(Q) — rekordu uğurla tamamlayan ən gənc əməliyyatın vaxt möhürü Q. R-TS(Q) — oxunmuş qeydi yerinə yetirən ən gənc əməliyyatın vaxt möhürü Q.

Əməliyyat zamanı T məlumatları oxumaq üçün sorğular Q İki variant var.

Əgər TS(T) < W-TS(Q), yəni məlumat daha gənc əməliyyat, sonra əməliyyat tərəfindən yeniləndi T geriyə yuvarlanır.

Əgər TS(T) >= W-TS(Q), sonra oxuma yerinə yetirilir və R-TS(Q) çevrilir MAX(R-TS(Q), TS(T)).

Əməliyyat zamanı T məlumatların dəyişdirilməsini tələb edir Q İki variant var.

Əgər TS(T) < R-TS(Q), yəni məlumatlar daha gənc əməliyyat tərəfindən artıq oxunub və dəyişiklik edilərsə, münaqişə yaranacaq. Əməliyyat T geriyə yuvarlanır.

Əgər TS(T) < W-TS(Q), yəni əməliyyat daha yeni dəyərin üzərinə yazmağa çalışır, T əməliyyatı geri çəkilir. Digər hallarda, dəyişiklik həyata keçirilir və W-TS(Q) bərabər olur TS(T).

Heç bir bahalı gözləmə qrafikinin qurulması tələb olunmur. Köhnə əməliyyatlar daha yenilərdən asılıdır, buna görə də gözləmə qrafikində dövrlər yoxdur. Əməliyyatlar gözlənilmir, dərhal geri çəkildiyi üçün heç bir dalana dirənmir. Kaskadlı geri dönmələr mümkündür. Əgər Ti yuvarlandı və Tj Dəyişdirdiyim məlumatları oxudum Ti, Sonra Tj da geri çəkilməlidir. Əgər eyni zamanda Tj artıq törədilib, o zaman sabitlik prinsipi pozulacaq.

Kaskadlı geri dönmə üçün həllərdən biri. Əməliyyat sonunda bütün yazma əməliyyatlarını tamamlayır və digər əməliyyatlar həmin əməliyyatın tamamlanmasını gözləməlidir. Əməliyyatlar oxunmazdan əvvəl həyata keçirilməsini gözləyir.

Thomas yazma qaydası - daha gənc bir əməliyyat tərəfindən yenilənmiş məlumatların köhnəsi tərəfindən üzərinə yazılmasının qadağan edildiyi vaxt damğası metodunun bir variasiyası

Əməliyyat T məlumatların dəyişdirilməsini tələb edir Q. Əgər TS(T) < W-TS(Q), yəni tranzaksiya daha yeni dəyərin üzərinə yazmağa çalışır, T əməliyyatı vaxt damgası metodunda olduğu kimi geri çəkilmir.

Mənbə: www.habr.com

Добавить комментарий