InnoDB cədvəllərini MyISAM cədvəllərinə toplu şəkildə çevirmək üçün MySQL/MariaDB verilənlər bazalarını necə konfiqurasiya etmək olar?

Verilənlər bazası cədvəlinin yaddaş mühərriki avtomobilin mühərriki kimidir; mühərrikin dəyişdirilməsi dərhal performansı və xüsusiyyətlərini dəyişir. Bir çox insan verilənlər bazasının yalnız məlumatları saxlamaq üçün olduğunu düşünür, amma əslində üzərində işləməyə başlayanda... InnoDB 转成 MyISAMYalnız bundan sonra onun arxasındakı gizli sirləri kəşf edəcəksiniz.

Niyə kimsə InnoDB-dən MyISAM-a keçmək istəməlidir?

Bir çox ssenarilərdə MyISAM, xüsusən də jurnal və statistika verilənlər bazaları kimi çox oxunan və az yazılan tətbiqlər üçün daha sürətlidir.

Masa səviyyəli kilidləmə mexanizmi aşağı paralellik şəraitində çox rahat işləyir.

Üstəlik, MyISAM-ın fayl saxlama sistemi daha intuitivdir; bir .MYD Məlumatları saxlayın, bir .MYI İndeksləri saxlamaq, köçürmək və ehtiyat nüsxəsini çıxarmaq çox rahatdır.

Bununla belə, InnoDB-nin əməliyyat və xarici açar dəstəyi mürəkkəb biznes ssenarilərində demək olar ki, zəruridir.

Buna görə də, keçid etməzdən əvvəl biznesinizin həqiqətən bu xüsusiyyətlərə ehtiyacı olub olmadığını müəyyən etməlisiniz.

Əsas əmr: DƏYİŞDİRİCİ CƏDVƏL

Tək bir cədvəli InnoDB-dən MyISAM-a çevirmək üçün yalnız bir sətir kod lazımdır:

ALTER TABLE `你的表名` ENGINE = MyISAM;

İcra tamamlandıqdan sonra cədvəlin yaddaş mühərriki işə salınacaq.

Bu, sadə deyilmi?

Toplu çevrilmə: Avtomatik skript generasiyası

Əgər onlarla və ya hətta yüzlərlə cədvəliniz varsa, onları əl ilə dəyişdirmək mütləq praktik deyil.

Bu nöqtədə, toplu çevrilmə ifadələrini avtomatik olaraq yaratmaq üçün tək bir sorğudan istifadə etmək olar:

SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;') 
FROM information_schema.tables 
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';

İşlədikdən sonra bir dəstə nəticə çıxaracaq... ALTER TABLE ... Bəyanat.

Toplu çevrilməni birdəfəyə başa çatdırmaq üçün bu ifadələri kopyalayın və hamısını birdən icra edin.

Bu, "avtomatlaşdırılmış toplu çevrilmə" kimi tanınır.

Konversiyadan əvvəl risk qiymətləndirməsi

InnoDB cədvəllərini MyISAM cədvəllərinə toplu şəkildə çevirmək üçün MySQL/MariaDB verilənlər bazalarını necə konfiqurasiya etmək olar?

Xarici açar məhdudiyyətləri

InnoDB xarici açarları dəstəkləyir, MyISAM isə onları ümumiyyətlə dəstəkləmir.

Çevirildikdən sonra xarici açar məhdudiyyətləri birbaşa ləğv ediləcək.

Əgər biznesiniz ardıcıl silinmələrə və ya yeniləmələrə əsaslanırsa, dönüşümdən sonra məntiq tamamilə sıradan çıxacaq.

Əməliyyat dəstəyi

InnoDB əməliyyatlara malikdir və onları dəstəkləyir. COMMITROLLBACK.

MyISAM-da əməliyyatlar yoxdur, yalnız masa səviyyəli kilidlər mövcuddur.

Konversiyadan sonra bütün əməliyyatla əlaqəli kodlar etibarsız olacaq və istisna halında geri qaytarma mümkün olmayacaq.

Paralellik performansı

InnoDB sətir səviyyəsində kilidləmədən, MyISAM isə cədvəl səviyyəsində kilidləmədən istifadə edir.

Yüksək paralellik ssenarilərində MyISAM tez-tez cədvəlləri kilidləyir və bu da performansda problemlərə səbəb olur.

İndeks xüsusiyyətləri

MySQL 5.6 versiyasından əvvəl MyISAM-ın özünün tam mətnli indeksi var idi.

Ancaq MySQL Tam mətn indeksləşdirmə artıq MariaDB və InnoDB-nin 5.6 və 10+ versiyalarında dəstəklənir.

Buna görə də, köhnə bir versiyadan istifadə etmədiyiniz təqdirdə, tam mətn indeksləmə üçün MyISAM-a keçməyə ehtiyac yoxdur.

Ən Yaxşı Təcrübə Prosesi

  1. Yedəkləmə məlumatları Çevirmədən əvvəl ixrac etdiyinizə əmin olun. .sql Fayllar istənilən vaxt bərpa edilə bilməsi üçün saxlanılır.

  2. Yoxlama siyahısı strukturu Xarici açarın mövcudluğunu yoxlamaq üçün aşağıdakı əmrdən istifadə edin:

    SHOW CREATE TABLE `你的表名`;
    
  3. Çevrilməni həyata keçirin 使用 ALTER TABLE Alternativ olaraq, dönüşümü tamamlamaq üçün toplu skriptlərdən istifadə etmək olar.

  4. Sağlamlıq vəziyyətini yoxlayın Dönüşüm tamamlandıqdan sonra aşağıdakı əmri yerinə yetirin:

    CHECK TABLE `你的表名`;
    OPTIMIZE TABLE `你的表名`;
    

    Bu, cədvəlin düzgün işlədiyini təsdiqləyir və fraqmentləri buraxır.

Tərs bərpa metodu

Çevrilmədən sonra performansın azalması və ya biznes məntiqi problemləri müşahidə olunarsa, istənilən vaxt InnoDB-yə qayıda bilərsiniz:

ALTER TABLE `你的表名` ENGINE = InnoDB;

Bu, sizə çıxış yolu göstərən "geriyə dönən əməliyyat" adlanır.

Səlahiyyətli baxışlar sitat gətirilib

Görə MySQL Rəsmi Sənədləri İzah:

"Xarici açar konstruksiyası"aints yalnız InnoDB tərəfindən dəstəklənir. Cədvəli MyISAM-a çevirsəniz, bütün xarici açarlar nəzərə alınmayacaq.
——MySQL İstinad Təlimatı, Fəsil 14.6.6 Xarici Açar Məhdudiyyətləri

Bu ifadə bizə açıq şəkildə xarici açarların MyISAM-da tamamilə etibarsız olduğunu göstərir.

MariaDB Rəsmi Sənədləri Həmçinin vurğulandı ki:

"MyISAM əməliyyatları dəstəkləmir. Əməliyyat bütövlüyünə əsaslanan tətbiqlər MyISAM-dan istifadə etməməlidir."
——MariaDB Bilik Bazası, Yaddaş Mühərrikləri

Buna görə də dəyişiklik etməzdən əvvəl iki dəfə düşünməlisiniz.

Mənim Baxışım və Nəticəm

InnoDB-ni MyISAM-a çevirmək, lüks bir avtomobilin mühərrikini yük maşını mühərriki ilə əvəz etmək kimidir.

İşləyə bilər, amma tamamilə fərqli bir şəkildə işləyir.

Əgər biznesiniz yüngül statistik sorğularla bağlıdırsa, MyISAM-ın sürəti və sadəliyi daha uyğun ola bilər.

Lakin, sisteminiz əməliyyatlara və xarici açarlara əsaslanırsa, onları tələsik çevirmək hava yastığını çıxarmaq kimidir.

Buna görə də, əsl müdriklik sürəti kor-koranə izləməkdə deyil, sabitlik və performans arasında tarazlıq yaratmaqdadır.

Verilənlər bazasının seçimi sistemin ruhunu müəyyən edir.

Kommutasiya yaddaş mühərrikləri bacarıqlarına yiyələnmək təkcə texniki qabiliyyətin nümayişi deyil, həm də memarlıq düşüncəsinin yüksəlişidir.

Toplu konversiyanı nəzərdən keçirirsinizsə, əvvəlcə hərtərəfli risk qiymətləndirməsi aparın.

Real biznes ssenarilərini simulyasiya etmək üçün test mühitini bir dəfə işə salın.

Hər şeyin düzgün olduğundan əmin olduqdan sonra əmri istehsal mühitində yerinə yetirin.

Verilənlər bazaları oyuncaq deyil; onlar müəssisə məlumatlarının ürəyidir.

Və ürəyinin ritmini idarə edən sənsən.

Hope Chen Weiliang Blogu ( https://www.chenweiliang.com/ Burada paylaşılan "MySQL/MariaDB verilənlər bazalarında InnoDB cədvəllərini MyISAM cədvəllərinə necə toplu şəkildə çevirmək olar?" məqaləsi sizin üçün faydalı ola bilər.

Bu məqalənin linkini paylaşmağa xoş gəlmisiniz:https://www.chenweiliang.com/cwl-34157.html

Daha çox gizli hiylələri açmaq üçün🔑 Telegram kanalımıza qoşulmağa xoş gəlmisiniz!

Bəyəndinizsə paylaşın və bəyənin! Paylaşımlarınız və bəyənmələriniz bizim davamlı motivasiyamızdır!

 

发表 评论

E-poçt ünvanınız dərc olunmayacaq. Zəruri sahələrdən istifadə olunur * Etiket

Məqalələr kataloqu
Top gedin