MySQL ဆိုတဲ့ စကားလုံးလုံးကိုတော့ မစိမ်းကြပေမယ့် InnoDB တို့ MyISAM တို့ဆိုရင်တော့ စိမ်းကောင်းစိမ်းနိုင်ပါတယ်။ ကျနော် ဒီနေ့ပြောသွားမှာက MySQL ရဲ့ storage engines တွေအေကြာင်းပဲဖြစ်ပါတယ်။

Storage Engines module တွေကို detail မပြောခင် MySQL ရဲ့ storage engine ဆိုတာဘာလုပ်ပေးတာလဲအရင်ရှင်းဖို့ လိုပါတယ်။ storage engine ဆိုတာ DBMS (Database management system) ကအသုံးပြုတဲ့ software တစ်ခုပါပဲ။ ကျနော်တို့ query တွေ ဥပမာ create, insert , update , delete စတဲ့ query တွေကို execute လုပ်တဲ့ နေရာမှာ DBMS တွေကို storage engine ကိုအသုံးပြုပြီးလုပ်ပါတယ်။ Storage engine တွေကို Type 2 မျိုး ထပ်ခွဲချလို့ရတယ်။ Transactional နဲ့ Non-transactional ဆိုပြီးတော့။

သူတို့နှစ်ခုကြားထဲမှာ အဓိက ကွာသွားတာကတော့ rollback လုပ်တဲ့ case ပဲဖြစ်ပါတယ်။ ဥပမာ ဆိုပါစို့ db ထဲကို username, email, password update လုပ်တဲ့ နေရာမှာ name and email ကတော့ update ဖြစ်သွားပါရဲ့ ၊ system error တစ်စုံတစ်ခုကြောင့် password က update လုပ်မသွားနိုင်ဘူးဆိုရင် Transactional Type က update လုပ်ရမယ့် patch တစ်ခုလုံးကို rollback ပြန်လုပ်ပြီး execute လုပ်နိုင်ပါတယ်။ Non-transactional type ကတော့ မလုပ်ပေးနိုင်ဘူး၊ လုပ်ချင်တယ်ဆိုရင်တော့ program တစ်ခုတစ်ဆင့် လုပ်ပေးနိုင်တဲ့ code တွေဖန်တီးထားမှရပါမယ်။ performance ပိုင်းအရပြန်ကြည့်မယ်ဆို Non-transactional type က rollback လုပ်မယ့် condition ကို ပြန်ကြည့်စရာမလိုတဲ့အတွက် ပိုမြန်ကောင်းမြန်နိုင်ပါတယ်။ အခုနောက်ပိုင်း DB တွေကတော့ Transaction type ဖြစ်ကြတာများပါတယ်။

MySQL မှာ storage engines အမျိုးမျိုးရှိပါတယ်။
InnoDB
MyISAM
MERGE
MEMORY (HEAP)
ARCHIVE
CSV
FEDERATED
ဒီလိုတွေရှိပေမယ့်လို့ အသုံးများတာကတော့ InnoDB ရယ် MyISAM ရယ်ပဲအသုံးများကြပါတယ်။ ကျနော် ဒီနေ့ InnoDB နဲ့ MyISAM အကြောင်းကို အဓိက ပြောသွားပါမယ်။ Storage engines တွေရဲ့ spec အသေးစိတ်တွေကိုတော့ Documentation တွေမှာသွားဖတ်လို့ရတဲ့အတွက်ကြောင့် ကျနော် ဒီနေ့ overall ကိုတော့ generalize လုပ်ပြီးပြောသွားပါမယ်။

InnoDB

အခုလက်ရှိ MySQL version အမြင့်တွေမှာတေ့ InnoDB ကို default အနေနဲ့ထည့်ထားပါတယ်။ MySQL 5.5 ကနေနောက်ပိုင်းကို default engine အနေနဲ့ MyISAM ကနေ InnoDB ကိုထည့်သွင်းထားတာပဲဖြစ်ပါတယ်။ InnoDB က Transactional Type ဖြစ်တယ်၊ row level တစ်ခုလုံး lock လုပ်လို့ရတယ်။ နောက်ကောင်းတာက crash recovery လုပ်လို့ရတာနဲ့ data integrity အတွက် foreign key reference ကို support လုပ်ပေးတာပဲဖြစ်ပါတယ်။ အခုလက်ရှိအထိမှာတော့ transactional type ဖြစ်ပြီး reliability & performance ကောင်းတယ်လို့ပြောလို့ရတဲ့အတွက်ကြောင့် အသုံးအများဆုံး storage engine တစ်ခုဖြစ်နေပါတယ်။

MyISAM

MySQL 5.5 အထိ default အနေနဲ့ထည့်ထားတဲ့ storage engine တစ်ခုဖြစ်ပါတယ်။ တစ်ခြား storage engine တွေထက်စာရင် speed ကိုပိုမြန်ပါတယ်။ compression အားလည်း ပိုကောင်းပါတယ်။ Transactional Type မဟုတ်ပါဘူး။ မြန်ရတဲ့ အကြောင်းရင်းက ဒါကြောင့်လည်း အများကြီးပါတယ်လို့ထင်မိပါတယ်။ သူ့ရဲ့ major drawback လို့လည်းပြောလို့ရတယ်၊ transactional မဟုတ်တာက ။ row level locking မရဘူး၊ table locking ပဲရမယ်။ InnoDB ရော MyISAM ရောနှစ်ခုလုံးက portable ဖြစ်ပြီး platform အားလုံးမှာ run လို့ရပါတယ်။

InnoDB အကြောင်းအသေးစိတ်ထပ်ဖတ်ချင်ရင်
https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html

တစ်ခြား alternative storage engines တွေအကြောင်းထပ်ဖတ်ချင်ရင်
https://dev.mysql.com/doc/refman/8.0/en/storage-engines.html