څنګه د MySQL/MariaDB ډیټابیسونه تنظیم کړئ ترڅو د InnoDB جدولونه په بیچ کې MyISAM جدولونو ته واړوئ؟

د ډیټابیس جدول د ذخیره کولو انجن د موټر د انجن په څیر دی؛ د انجن بدلول سمدلاسه فعالیت او ځانګړتیاوې بدلوي. ډیری خلک فکر کوي چې ډیټابیس یوازې د معلوماتو ذخیره کولو لپاره دی، مګر کله چې تاسو په حقیقت کې په هغې کار پیل کوئ ... انو ډی ډي بدلول مایسمیوازې بیا به تاسو د هغې تر شا پټ رازونه ومومئ.

ولې به څوک وغواړي چې له InnoDB څخه MyISAM ته لاړ شي؟

په ډیری سناریوګانو کې، MyISAM ګړندی دی، په ځانګړي توګه د لوستلو-درنو او لیکلو-رڼا غوښتنلیکونو لپاره لکه لاګ او احصایې ډیټابیسونه.

د دې د میز په کچه د بندولو میکانیزم په حقیقت کې د ټیټ همغږۍ لاندې خورا په اسانۍ سره کار کوي.

سربېره پردې، د MyISAM د فایلونو ذخیره ډیره اسانه ده؛ یو .MYD د معلوماتو ذخیره کول، یو .MYI د شاخصونو ذخیره کول، مهاجرت کول، او بیک اپ کول ټول خورا اسانه دي.

په هرصورت، د InnoDB راکړه ورکړه او بهرنۍ کلیدي ملاتړ تقریبا په پیچلو سوداګریزو سناریوګانو کې یوه اړتیا ده.

له همدې امله، تاسو باید معلومه کړئ چې ایا ستاسو سوداګرۍ په حقیقت کې د لیږد څخه دمخه دې ځانګړتیاو ته اړتیا لري.

اصلي قومانده: جدول بدل کړئ

د InnoDB څخه MyISAM ته د یو واحد جدول د بدلولو لپاره، تاسو یوازې د کوډ یوې کرښې ته اړتیا لرئ:

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

د اجرا کولو بشپړیدو وروسته، د میز د ذخیره کولو انجن به بدل شي.

ایا دا سمه نه ده؟

د بیچ بدلون: د سکرېپټ اتوماتیک تولید

که تاسو لسګونه یا حتی سلګونه میزونه لرئ، نو په لاسي ډول یې بدلول یقینا عملي نه دي.

په دې مرحله کې، یوه پوښتنه د بیچ تبادلې بیاناتو په اتوماتيک ډول تولیدولو لپاره کارول کیدی شي:

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

د چلولو وروسته، دا به یو ډله ... تولید کړي. ALTER TABLE ... بیان.

دا بیانات کاپي کړئ او ټول یې په یوځل اجرا کړئ ترڅو د بیچ بدلون په یوځل کې بشپړ شي.

دا هغه څه دي چې د "اتومات شوي بیچ بدلون" په نوم پیژندل کیږي.

د بدلون څخه مخکې د خطر ارزونه

څنګه د MySQL/MariaDB ډیټابیسونه تنظیم کړئ ترڅو د InnoDB جدولونه په بیچ کې MyISAM جدولونو ته واړوئ؟

بهرني مهم محدودیتونه

InnoDB د بهرنیو کیلي ملاتړ کوي، پداسې حال کې چې MyISAM د دوی هیڅ ملاتړ نه کوي.

کله چې بدلون بشپړ شي، د بهرني کلیدي محدودیتونه به له منځه یوړل شي.

که ستاسو سوداګري د حذف کولو یا تازه معلوماتو په کاسکیډینګ تکیه کوي، نو منطق به د تبادلې وروسته په بشپړه توګه ناکام شي.

د راکړې ورکړې ملاتړ

InnoDB معاملې لري او د هغوی ملاتړ کوي. COMMITROLLBACK.

MyISAM معاملې نه لري، یوازې د میز په کچه قلفونه لري.

د تبادلې وروسته، د راکړې ورکړې پورې اړوند ټول کوډ به باطل شي، او د استثنا په صورت کې به بیرته راګرځول ناممکن وي.

هم مهاله فعالیت

InnoDB د قطار په کچه تالاشۍ کاروي، پداسې حال کې چې MyISAM د میز په کچه تالاشۍ کاروي.

په لوړ همغږو سناریوګانو کې، MyISAM ډیری وختونه میزونه بندوي، چې د فعالیت خنډونو لامل کیږي.

د شاخص ځانګړتیاوې

په مای د ۵.۶ نسخې څخه مخکې، MyISAM خپل بشپړ متن شاخص درلود.

مګر په مای د بشپړ متن انډیکس کول دمخه د MariaDB او InnoDB نسخو 5.6 او 10+ کې ملاتړ کیږي.

له همدې امله، پرته لدې چې تاسو زوړ نسخه کاروئ، د بشپړ متن شاخص لپاره MyISAM ته د تګ اړتیا نشته.

د غوره عمل پروسه

  1. د معلوماتو بیک اپ د بدلولو دمخه، ډاډ ترلاسه کړئ چې صادر کړئ. .sql فایلونه ساتل کیږي ترڅو ډاډ ترلاسه شي چې دوی په هر وخت کې بیرته راګرځیدلی شي.

  2. د چک لیست جوړښت د بهرنۍ کیلي شتون چیک کولو لپاره لاندې کمانډ وکاروئ:

    SHOW CREATE TABLE `你的表名`;
    
  3. بدلون ترسره کړئ 使用 ALTER TABLE په بدیل سره، د تبادلې بشپړولو لپاره د بیچ سکریپټونه کارول کیدی شي.

  4. د روغتیا حالت وګورئ د تبادلې بشپړیدو وروسته، لاندې امر پرمخ بوځي:

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

    دا تاییدوي چې جدول په سمه توګه کار کوي او ټوټې خوشې کوي.

د بیرته راګرځولو طریقه

که چیرې د تبادلې وروسته د فعالیت کمښت یا د سوداګرۍ منطق مسلې ولیدل شي، تاسو کولی شئ په هر وخت کې بیرته InnoDB ته لاړ شئ:

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

دا هغه څه دي چې "بیرته راګرځیدونکي عملیات" بلل کیږي، چې تاسو ته د وتلو لاره درکوي.

د مستند نظرونو یادونه وشوه

د د MySQL رسمي اسناد وضاحت:

"بهرنی کیلي جوړښت"aints یوازې د InnoDB لخوا ملاتړ کیږي. که تاسو یو جدول MyISAM ته واړوئ، نو ټولې بهرنۍ کیلي به له پامه غورځول شي.
——د MySQL حوالې لارښود، فصل ۱۴.۶.۶ بهرني کلیدي محدودیتونه

دا بیان په څرګنده توګه موږ ته وایی چې بهرنۍ کیلي په MyISAM کې په بشپړ ډول باطلې دي.

او د ماریا ډي بي رسمي اسناد همدارنګه ټینګار وشو چې:

"MyISAM د معاملو ملاتړ نه کوي. هغه غوښتنلیکونه چې د راکړې ورکړې بشپړتیا باندې تکیه کوي باید MyISAM ونه کاروي."
——ماریا ډي بي د پوهې اساس، د ذخیره کولو انجنونه

له همدې امله تاسو باید د بدلون راوستلو دمخه دوه ځله فکر وکړئ.

زما نظر او پایله

د InnoDB MyISAM ته بدلول د لوکس موټر انجن د لارۍ انجن سره بدلولو په څیر دي.

دا چلولی شي، مګر دا په بشپړ ډول په مختلف ډول چلوي.

که ستاسو سوداګرۍ کې سپک احصایوي پوښتنې شاملې وي، د MyISAM سرعت او سادگي ممکن ډیر مناسب وي.

خو، که ستاسو سیسټم په معاملو او بهرنیو کیليو تکیه وکړي، نو په بېړه یې بدلول د ایربګ لرې کولو په څیر دي.

له همدې امله، ریښتینې حکمت په ړانده توګه د سرعت تعقیبولو کې نه دی، بلکې د ثبات او فعالیت په متوازن کولو کې دی.

د ډیټابیس انتخاب د سیسټم روح ټاکي.

د ذخیره کولو انجنونو د بدلولو مهارتونو ترلاسه کول نه یوازې د تخنیکي وړتیا ښودنه ده، بلکې د معمارۍ د فکر لوړوالی هم دی.

که تاسو د ډله ایز بدلون په اړه فکر کوئ، مهرباني وکړئ لومړی د خطر جامع ارزونه ترسره کړئ.

د حقیقي سوداګرۍ سناریوګانو تقلید لپاره یو ځل د ازموینې چاپیریال چل کړئ.

وروسته له دې چې تایید شي چې هرڅه سم دي، دا د تولید چاپیریال کې اجرا کړئ.

ډیټابیسونه لوبې نه دي؛ دوی د تشبثي معلوماتو زړه دي.

او ته هغه څوک یې چې د خپل زړه تال کنټرولوي.

امید چن وییلینګ بلاګ ( https://www.chenweiliang.com/ دلته شریک شوی مقاله "څنګه په مای ایس کیو ایل/ماریا ډی بی ډیټابیسونو کې د انو ډی بی جدولونه مای آی ایس ایم جدولونو ته بدل کړو؟" ممکن ستاسو لپاره ګټور وي.

د دې مقالې لینک شریکولو ته ښه راغلاست:https://www.chenweiliang.com/cwl-34157.html

د نورو پټو چلونو د خلاصولو لپاره، زموږ د ټیلیګرام چینل سره یوځای کیدو ته ښه راغلاست!

که مو خوښه شوه لایک او شریک کړئ! ستاسو شریکول او خوښول زموږ دوامداره هڅونه ده!

 

评论 评论

ستاسو بریښنالیک پته به خپره نشي. اړین ساحې کارول کیږي * لیبل

مقالې لارښود
پاس شئ