Hacker News

MySQL xarici açar kaskad əməliyyatları nəhayət ikili jurnalı vurdu

MySQL xarici açar kaskad əməliyyatları nəhayət ikili jurnalı vurdu MySQL-in bu hərtərəfli təhlili onun əsas komponentlərinin və daha geniş təsirlərinin ətraflı araşdırılmasını təklif edir. Əsas Diqqət Sahələri Müzakirə aşağıdakı mövzularda aparılır: Əsas mexanizm...

13 min read Via readyset.io

Mewayz Team

Editorial Team

Hacker News

MySQL xarici açar kaskad əməliyyatları artıq ikili jurnalda görünür və çoxdan gözlənilən dəyişikliyi qeyd edir ki, bu, verilənlər bazası ilə idarə olunan tətbiqlər üçün replikasiya, audit və məlumatların bərpasına birbaşa təsir göstərir. MySQL versiyalarında tədricən təqdim edilən bu davranış dəyişikliyi əvvəllər təkrarlanan mühitlərdə səssiz məlumat uyğunsuzluqlarına səbəb olan kritik boşluğu bağlayır.

Xarici Açar Kaskad Əməliyyatları Nələrdir və Nə üçün İkili Qeyddən kənarda qaldılar?

Xarici əsas məhdudiyyətlər cədvəllər arasında istinad bütövlüyünü təmin edir. Siz ON DELETE CASCADE və ya ON UPDATE CASCADE təyin etdiyiniz zaman MySQL avtomatik olaraq dəyişiklikləri ana cədvəldən əlaqəli uşaq sətirlərə yayır. İllərdir ki, bu ardıcıl dəyişikliklər gözəgörünməz yan təsirlər kimi fəaliyyət göstərirdi — tetikleme bəyanatı qeyd edildi, lakin şəlalənin təsir etdiyi aşağı axın cərgələri ikili jurnalda müstəqil hadisələr kimi qeyd edilmədi.

Bu, nəzarətsizlik deyildi. MySQL komandası əvvəlcə eyni sxemi və xarici açar tərifləri paylaşan replikaların əsas ifadə təkrar oxunduğunda avtomatik olaraq kaskadları təkrarlayacağını əsaslandırdı. Məntiq tutdu - tutmadı. Sxem sürüşməsi, qismən təkrarlama filtrləri, müxtəlif yaddaş mühərriki konfiqurasiyaları və vaxtında bərpa ssenariləri bu fərziyyənin kövrəkliyini üzə çıxardı. Tək buraxılmış kaskad istehsal baxımından kritik sorğular yanlış nəticələr verənə qədər sağlam görünən fərqli replikalar yarada bilər.

Yeni Cascade Logging Davranışı Əslində Necə İşləyir?

Yenilənmiş davranışla MySQL şəlalə əməliyyatlarının təsirinə məruz qalan cərgələri ikili jurnalda açıq cərgə hadisələri kimi, DML-i işə salan bəyanatdan dərhal sonra yazır. Əgər valideyn qeydini silsəniz və üç uşaq qeydi silsilsə, bütün dörd sıra dəyişiklikləri indi fərqli, yoxlanıla bilən jurnal qeydləri kimi görünür.

Giriş formatı burada vacibdir. Sıra əsaslı ikili giriş (RBL) bunu tam sədaqətlə mümkün edən formatdır. İfadəyə əsaslanan giriş dinamik kaskad nəticələri etibarlı şəkildə əldə edə bilməz, çünki nəticə SQL mətninin özündən deyil, icra zamanı verilənlərin vəziyyətindən asılıdır. Qarışıq rejimli giriş bu vəziyyətlərdə sətir formatını seçici şəkildə tətbiq edir.

Əsas Insight: Sətir əsaslı ikili qeydi aktivləşdirmək sadəcə təkrarlama üstünlükləri deyil – bu, indi xarici açar məhdudiyyətlərindən istifadə edən sistemlərdə hər bir məlumat dəyişikliyinin tam, yoxlanıla bilən audit izini çəkmək üçün ilkin şərtdir. Onsuz, kaskad effektləri alətləriniz üçün qismən görünməz qalır.

Verilənlər bazası administratorları öz binlog_format parametrlərini yoxlamalı və ardıcıllıq zəmanətləri üçün tarixən replika-yanlı kaskad icrasına etibar ediblərsə, replikasiya topologiyası fərziyyələrini nəzərdən keçirməlidirlər.

Bu, Tətbiq Qrupları üçün hansı Real Dünya Problemlərini həll edir?

Nəticələr nəzəri təkrarlamanın düzgünlüyünü üstələyir. Əlaqəli məlumat modelləri ilə mürəkkəb biznes platformalarını idarə edən komandalar - çox kirayəçi SaaS məhsulları, e-ticarət mühərrikləri, səhiyyə qeyd sistemləri - bu dəyişikliyin ünvanlandığı konkret uğursuzluq rejimləri ilə qarşılaşdılar:

  • Vaxtında bərpa dəqiqliyi: Kütləvi silmədən əvvəl verilənlər bazasını bərpa etmək indi təkcə tetikleyici sorğunu deyil, bütün ardıcıl uşaq silmələrini də çəkir, bərpadan sonra fantom sıraların yenidən görünməsinin qarşısını alır.
  • Məlumat toplama (CDC) boru kəmərlərini dəyişdirin: Debezium və Maxwell kimi ikili jurnal hadisələrini Kafkaya və ya digər yuvalara ötürən alətlər indi hər bir məlumat mutasiyasının tam təsvirini əldə edərək aşağı axın üzrə dəqiq proqnozları təmin edir.
  • Audit və uyğunluq qeydi: Tam məlumat xətti tələb edən tənzimlənən sənayelər indi tətbiq səviyyəsində həll yolları olmadan audit tələblərini təmin edərək, hansı ana əməliyyat nəticəsində hansı uşaq qeydlərinin silindiyini dəqiq izləyə bilər.
  • Replika divergensiyasının aşkarlanması: Replika cərgələrinin sayını və ya yoxlama cəmini əsas ilə müqayisə edən monitorinq alətləri indi hər hansı fərqi tez müəyyən etmək və diaqnostika etmək üçün dəqiq jurnal məlumatlarına malikdir.
  • Çox mənbəli və dairəvi replikasiya: Əvvəllər ikiqat tətbiq kaskadların qarşısını almaq üçün replikalarda xarici açarların deaktiv edilməsini tələb edən mürəkkəb topologiyalar daha strukturlaşdırılmış, proqnozlaşdırıla bilən hadisə axını əldə edir.

Verilənlər Bazasının Memarları Replikasiya və Bərpa Strategiyalarını Necə Tənzimləməlidirlər?

Kaskaddan xəbərdar olan binar girişi qəbul etmək passiv təkmilləşdirmə deyil - bu, mövcud infrastrukturun düşünülmüş şəkildə nəzərdən keçirilməsini tələb edir. Kaskadlar tərəfindən yaradılan əlavə jurnal hadisələri ikili jurnalın həcmini bəzən əhəmiyyətli dərəcədə artırır, bu da sxeminizin kaskad məhdudiyyətlərindən nə qədər aqressiv istifadə etməsindən asılıdır. Memarlar artan disk I/O, şəbəkə təkrarlama bant genişliyi və log fırlanma tezliyini nəzərə almalıdır.

💡 DID YOU KNOW?

Mewayz replaces 8+ business tools in one platform

CRM · Invoicing · HR · Projects · Booking · eCommerce · POS · Analytics. Free forever plan available.

Start Free →

Replikalarda komandalar xarici açar məhdudiyyətlərinin aktiv və ya qeyri-aktiv olub-olmadığını yoxlamalıdır. Ümumi tarixi təcrübə, əsasın icranı idarə etməsinə imkan vermək üçün replikalarda xarici açarları deaktiv etmək idi (foreign_key_checks=OFF). İndi açıq şəkildə daxil edilmiş kaskadlarla, öz xarici açar məhdudiyyətlərini də emal edən replikada həmin qeydə alınmış kaskad hadisələrinin tətbiqi dublikat silmə və ya münaqişələrlə nəticələnə bilər. Replikasiya zənciri üzrə konfiqurasiyanın uyğunlaşdırılması indi həmişəkindən daha vacibdir.

mysqldump kimi məntiqi ehtiyat nüsxə alətlərindən və ya Percona XtraBackup kimi fiziki ehtiyat həllərindən istifadə edən komandalar üçün bərpa prosedurlarını yeni log strukturu ilə nəzərdən keçirmək bərpa iş kitablarının dəqiq qalmasını təmin edir. İstehsal-nümayəndəlik məlumatlarının həcmlərinə qarşı səhnələşdirmə mühitlərində bərpa ssenarilərinin sınaqdan keçirilməsi standart rüblük məşq olmalıdır.

Bu, PostgreSQL və digər verilənlər bazalarının kaskad qeydini necə idarə etməsi ilə necə müqayisə olunur?

PostgreSQL uzun müddətdir ki, birinci dərəcəli WAL (Write-Ahead Log) qeydləri kimi xarici açar kaskad effektlərini qeyd etmişdir. Kaskad tetikleyicinin toxunduğu hər cərgə WAL-a fərdi olaraq yazılır, PostgreSQL replikasiyasını və məntiqi dekodlaşdırmanı mahiyyətcə kaskaddan xəbərdar edir. Bu dizayn fəlsəfəsi — yalnız səbəbləri deyil, bütün effektləri qeyd etmək — MySQL-in sıra əsaslı ikili jurnalının indi daha yaxından təxmin etdiyi budur.

Microsoft SQL Server oxşar şəkildə sətir səviyyəsindəki əməliyyat jurnalı vasitəsilə kaskad dəyişiklikləri qeyd edir və SQL Serverdə CDC həllərini hətta mürəkkəb əlaqə sxemləri üçün sadə edir. MySQL yeniləməsi onu bu sistemlərlə daha yaxın memarlıq paritetinə gətirir və verilənlər bazası mühəndislərinin MySQL-i yüksək bütövlükdə əlaqəli iş yükləri üçün qiymətləndirərkən qaldırdıqları əsas etirazı azaldır.

Çox verilənlər bazası mühitlərini idarə edən və ya miqrasiya yollarını qiymətləndirən təşkilatlar üçün bu yaxınlaşma vacibdir. O, əməliyyat qruplarının alətlər və prosedurlarda anlamalı və nəzərə almalı olduğu platformalar arasında davranış səthi sahəsini azaldır.

Tez-tez verilən suallar

Bu dəyişiklik MySQL 5.7 və ya yalnız MySQL 8.x-ə təsir edir?

Cascade logging üçün davranış təkmilləşdirmələri ilk növbədə MySQL 8.0 və sonrakı buraxılışlarla əlaqələndirilir, xüsusi təkmilləşdirmələr 8.0.x seriyasında fərdi nöqtə buraxılışları ilə əlaqələndirilir. MySQL 5.7 2023-cü ilin oktyabrında ömrünün sonuna çatdı və onu hələ də işlədən komandalar, replikasiya ardıcıllığı məqsədləri üçün orada kaskad giriş davranışını etibarsız hesab etməlidir. MySQL 8.0 və ya MySQL 8.4 LTS buraxılışına təkmilləşdirmək cari ikili jurnal davranışına daxil olmaq üçün tövsiyə olunan yoldur.

Tam kaskad qeydini aktivləşdirmək yazma performansını əhəmiyyətli dərəcədə aşağı salacaq?

Ümumi xərclər realdır, lakin yaxşı indeksləşdirilmiş xarici açar əlaqələri olan sxemlər üçün adətən sadədir. Əlavə jurnal yazıları hər bir kaskaddan təsirlənən uşaq sətirlərin sayı ilə birbaşa əlaqələndirilir. Dərin daxili şəlalə zəncirləri və ya çox böyük uşaq cədvəlləri olan sxemlər ölçülə bilən ötürücü təsir göstərə bilər. İstehsala keçməzdən əvvəl səhnələşdirmə mühitində real data həcmləri ilə profil yaratmaq xüsusi iş yükünüz üçün xərclərin kəmiyyətini müəyyən etmək üçün düzgün yanaşmadır.

Real-vaxt analitika boru kəmərlərini qidalandırmaq üçün ikili log kaskad datasından istifadə edə bilərəmmi?

Bəli və bu, ən cəlbedici istifadə hallarından biridir. İkili jurnalda tam kaskad hadisələri ilə CDC alətləri indi kaskad effektlərini əl ilə dərc etmək üçün tətbiq səviyyəli qarmaqlar tələb etmədən dəqiq materiallaşdırılmış görünüşlər, axtarış indeksləri və hadisə axınları yarada bilər. Real vaxt rejimində idarə panelləri, fırıldaqların aşkarlanması sistemləri və ya əməliyyat analitikası təbəqələri yaradan komandalar qeyd axınının tamlığını tapacaqlar, boru kəmərinin mürəkkəbliyini əhəmiyyətli dərəcədə azaldır.


Böyüməkdə olan biznes platformasını idarə etmək əsas infrastruktur qərarlarınızın zamanla mürəkkəbləşməsi deməkdir – bu gün verilənlər bazanızın təkrarlanması strategiyanızdaki boşluq sabah miqyaslı bir hadisəyə çevrilir. Mewayz etibarlılıq və ya imkanlardan güzəştə getməkdən imtina edən komandalar üçün qurulmuş 207 modullu biznes əməliyyat sistemidir, CRM və e-ticarətdən tutmuş məzmunun idarə edilməsinə və analitikaya kimi hər şeyi idarə edən 138 000-dən çox istifadəçi tərəfindən etibar edilir – hamısı bir vahid platformada ayda cəmi 19 dollardan başlayır.

Bu gün app.mewayz.com ünvanında Mewayz iş sahəsinə başlayın və biznesinizi bildiklərinizlə ayaqlaşan infrastruktur üzərində qurun.

Try Mewayz Free

All-in-one platform for CRM, invoicing, projects, HR & more. No credit card required.

Start managing your business smarter today

Join 30,000+ businesses. Free forever plan · No credit card required.

Ready to put this into practice?

Join 30,000+ businesses using Mewayz. Free forever plan — no credit card required.

Start Free Trial →

Ready to take action?

Start your free Mewayz trial today

All-in-one business platform. No credit card required.

Start Free →

14-day free trial · No credit card · Cancel anytime