DBMS-də əməliyyat serializasiyası

Fərz edək ki, hər iki məlumatı yeniləyən T1 və T2 paralel iki əməliyyatımız var. Tutaq ki, əvvəlcə T1 başladı və yeniləmə üçün d oxuyun. T1 d oxuyan kimi T2 başladı və yeniləmə üçün d oxudu. T2 d oxuyan kimi T1 d'yi d'ə yeniləyir. T1 tamamlandıqdan sonra T2 d-dən d-yə qədər yeniləyir ”. Burada T2 T1 yeniləmədən əvvəl məlumatları oxuduğu üçün T1-in yeniləməsindən xəbərsizdir. Eynilə, T1 də T2-nin yeniləmələrindən xəbərsizdir. Son nəticə və T1-in yeniləməsi burada nə olur? D-nin hansı dəyəri burada son olacaq - d 'və ya d ”?

T2, T1-in yeniləməsindən xəbərsiz olduğundan və son olaraq işləndiyindən T1 tərəfindən edilən yeniləmələr itir. T2 tərəfindən edilən yeniləmələr yalnız qorunub saxlanılacaqdır. T1-in yeniləməsi tamamilə itir və yeniləmə əlaməti heç yerdə saxlanmır. Bu növ yeniləmə itirilmiş yeniləmə kimi tanınır.

Ancaq T1 əməliyyatı etibarlıdır və laqeyd edilə bilməz. Yeniləməsi T2-lər qədər vacibdir. Yəqin ki, T1-in yeniləməsi T2-nin yeniləməsinin nəticəsini dəyişmiş ola bilərsə (yeniləmə kimi hallar yenilədiyimiz sütunun dəyərindən asılıdır - d = d * 10). Bu səbəbdən hər hansı bir əməliyyatla yenilənən məlumatları itirə bilmərik. Bu əməliyyatlar qruplaşdırılıb ardıcıl olaraq həyata keçirildiyi təqdirdə bu tip itirilmiş yeniləmələrin qarşısını almaq olar. Tutaq ki, T1-ə d-ni oxumağa və yazmağa icazə verilir, yazmağı tamamladıqdan sonra T2-yə d-ni oxumağa icazə verilir, onda T1 ilə yanaşı T2 tərəfindən də yeniləmələrimiz olacaq. İlk yeniləmə T2 ilə dəyişdiriləcək, T1 yeniləməsi geri qayıt jurnalında və ya geri dönmə seqmentində saxlanacaq. Beləliklə, əməliyyatın başlaması (burada əməliyyat birlikdə T1 və T2 qrupu deməkdir) ilə sonu (T2'nin sonu) arasında bir az dəyəri olduğunu biləcəyik. Əməliyyatların belə bir qruplaşdırılması və icra qaydasını müəyyənləşdirmək, planlaşdırma və ya seriallaşdırma kimi tanınır. Bu icra növü əməliyyatın təcrid olunmasını təmin edir. Çirkli oxunuşlar, təkrarlanmayan oxunuşlar, dalana qapanma və itirilmiş yeniləmə problemləri olmayacaq.

A cədvəl əməliyyatları birinə qruplaşdırmaq və əvvəlcədən təyin olunmuş qaydada icra etməkdir. Bir verilənlər bazasında bir cədvəl tələb olunur, çünki bəzi əməliyyatlar paralel olaraq həyata keçirildikdə, əməliyyatın nəticəsinə təsir göstərə bilər - bir əməliyyat digər əməliyyatın əldə etdiyi dəyərləri yeniləyirsə, bu iki əməliyyatın sırası nəticəni dəyişdirəcəkdir ikinci əməliyyatın. Beləliklə, əməliyyatları icra etmək üçün bir cədvəl yaradılır. Bir cədvəl serial adlanır cədvəl, cədvəldəki əməliyyatlar bir-birinin ardınca icra ediləcəyi təqdirdə. (Cədvəllər haqqında daha ətraflı məlumat üçün məqaləyə baxın: Əməliyyatlar)

Bir əməliyyatın serial cədvəlinə bərabər olduğu təqdirdə Serializable olduğu deyilir. Aşağıdakı iki vəziyyəti nəzərdən keçirin. Görə bilərik ki, icra qaydasından asılı olmayaraq əməliyyat eyni nəticə ilə nəticələnir. Beləliklə, onlar ardıcıl olaraq planlaşdırıla bilər və bu səbəbdən bu əməliyyatlar Serializable olur. Lakin bunları üst-üstə düşən vaxtla icra etmək uyğun olmayan məlumatlarla nəticələnəcəkdir. Yenə də əməliyyatın serializasiyası koddan da asılıdır.

Cədvəllərin növündən asılı olaraq iki növ serializasiyaya sahibik: Münaqişə və View serializable.

Münaqişənin ardıcıllığı

Tutaq ki, T1 və t2 iki əməliyyatdır və I1 və I2 müvafiq olaraq T1 və T2-dəki təlimatlardır. Sonra bu iki əməliyyatın həm təlimat məlumat elementinə d daxil olması, həm də təlimatın ən azından birinin yazma əməliyyatı olduğu təqdirdə bir-birinə zidd olduğu deyilir.

Aşağıdakı vəziyyətdə T1-in X və Y-ni dəyişdirən təlimat dəsti gördüyünü görə bilərik, T2-də X və Z-ni dəyişdirmək üçün təlimatlar var. Hər iki əməliyyatın təlimatlarının X dəyərini dəyişdirdiyindən bu iki əməliyyatın ziddiyyətli olduğu deyilir. əməliyyat). Ancaq Y və Z-ni dəyişdirmək üçün təlimat fərqli məlumat elementlərinə daxil olduqları üçün ziddiyyətli deyil.

Əməliyyatdakı zidd olmayan göstərişin dəyişdirilməsi nəticəni dəyişdirmirsə, əməliyyatın ziddiyyətli olmadığı deyilir. Aşağıdakı nümunədə T1-in YAZ (X) və T2-nin READ (X) ziddiyyətlidir. Lakin aşağıda göstərildiyi kimi zidd olmayan təlimatların bir sıra hərəkəti edərək ziddiyyətli olmayan Serializable olaraq dəyişdirilir.

 

 

Tutaq ki, aşağıda göstərildiyi kimi əməliyyatlarımız var. Burada köçürülə bilən və bu əməliyyatı ziddiyyətli hala gətirən çakışmayan bir təlimatımız yoxdur.

Serializasiyaya baxın

Bu, ekvivalentlik cədvəlinə bənzəyir. Burada iki seans eyni əməliyyatlara sahib olacaq. Məsələn: - Sessiya 1 TƏLƏBƏ məlumatlarını, Sessiya 2 Tələbə məlumatlarını OLD_STUDENT cədvəlinə daxil edir.

Bir əməliyyat baxış ekvivalentidirsə

  • S1 iclasında T1 əməliyyatı d məlumatını oxuyursa, S2-də T2 də d məlumatını oxumalıdır.
  • Əgər S1-də T1 başqa bir T 'əməliyyatı ilə hazırlanan d məlumatlarını oxuyursa, S2-də T2 də T' tərəfindən hazırlanan d məlumatlarını oxumalıdır.
  • Əgər S1-də T1 d yazarsa, S2-də T2 də d yazmalıdır.

Bir əməliyyat Serializasiya edilə bilən ziddiyyətlidirsə, Serializasiya edilə bilər. Ancaq başqa yol düzgün deyil. Aşağıdakı növbəti mövzuda bunu ətraflı müzakirə edək.

Şərh yaz

Translate »