InnoDB ടേബിളുകളെ MyISAM ടേബിളുകളാക്കി മാറ്റുന്നതിന് MySQL/MariaDB ഡാറ്റാബേസുകൾ എങ്ങനെ കോൺഫിഗർ ചെയ്യാം?

ഒരു ഡാറ്റാബേസ് ടേബിളിന്റെ സ്റ്റോറേജ് എഞ്ചിൻ ഒരു കാറിന്റെ എഞ്ചിൻ പോലെയാണ്; എഞ്ചിൻ മാറ്റുന്നത് പ്രകടനവും സവിശേഷതകളും ഉടനടി മാറ്റുന്നു. ഒരു ഡാറ്റാബേസ് ഡാറ്റ സംഭരിക്കുന്നതിന് മാത്രമുള്ളതാണെന്ന് പലരും കരുതുന്നു, എന്നാൽ നിങ്ങൾ അതിൽ പ്രവർത്തിക്കാൻ തുടങ്ങുമ്പോൾ... InnoDB 转成 മൈസംഅപ്പോൾ മാത്രമേ അതിന്റെ പിന്നിലെ മറഞ്ഞിരിക്കുന്ന രഹസ്യങ്ങൾ നിങ്ങൾക്ക് കണ്ടെത്താനാകൂ.

എന്തിനാണ് ഒരാൾ InnoDB-യിൽ നിന്ന് MyISAM-ലേക്ക് മാറാൻ ആഗ്രഹിക്കുന്നത്?

പല സാഹചര്യങ്ങളിലും, MyISAM വേഗതയേറിയതാണ്, പ്രത്യേകിച്ച് ലോഗ്, സ്റ്റാറ്റിസ്റ്റിക്സ് ഡാറ്റാബേസുകൾ പോലുള്ള റീഡ്-ഹെവി, റൈറ്റ്-ലൈറ്റ് ആപ്ലിക്കേഷനുകൾക്ക്.

കുറഞ്ഞ കൺകറൻസിയിൽ അതിന്റെ ടേബിൾ-ലെവൽ ലോക്കിംഗ് സംവിധാനം വളരെ സുഗമമായി പ്രവർത്തിക്കുന്നു.

മാത്രമല്ല, MyISAM-ന്റെ ഫയൽ സംഭരണം കൂടുതൽ അവബോധജന്യമാണ്; ഒന്ന് .MYD ഡാറ്റ സംഭരിക്കുക, ഒന്ന് .MYI സൂചികകൾ സൂക്ഷിക്കൽ, മൈഗ്രേറ്റ് ചെയ്യൽ, ബാക്കപ്പ് എടുക്കൽ എന്നിവയെല്ലാം വളരെ സൗകര്യപ്രദമാണ്.

എന്നിരുന്നാലും, സങ്കീർണ്ണമായ ബിസിനസ് സാഹചര്യങ്ങളിൽ InnoDB യുടെ ഇടപാടുകളും വിദേശ കീ പിന്തുണയും മിക്കവാറും അനിവാര്യമാണ്.

അതിനാൽ, പരിവർത്തനം നടത്തുന്നതിന് മുമ്പ് നിങ്ങളുടെ ബിസിനസ്സിന് ഈ സവിശേഷതകൾ യഥാർത്ഥത്തിൽ ആവശ്യമുണ്ടോ എന്ന് നിങ്ങൾ കണ്ടെത്തണം.

കോർ കമാൻഡ്: ALTER TABLE

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 ... പ്രസ്താവന.

ഈ സ്റ്റേറ്റ്മെന്റുകൾ പകർത്തി അവയെല്ലാം ഒറ്റയടിക്ക് എക്സിക്യൂട്ട് ചെയ്ത് ബാച്ച് കൺവേർഷൻ ഒറ്റയടിക്ക് പൂർത്തിയാക്കുക.

ഇതാണ് "ഓട്ടോമേറ്റഡ് ബാച്ച് കൺവേർഷൻ" എന്നറിയപ്പെടുന്നത്.

പരിവർത്തനത്തിന് മുമ്പുള്ള അപകടസാധ്യത വിലയിരുത്തൽ

InnoDB ടേബിളുകളെ MyISAM ടേബിളുകളാക്കി മാറ്റുന്നതിന് MySQL/MariaDB ഡാറ്റാബേസുകൾ എങ്ങനെ കോൺഫിഗർ ചെയ്യാം?

വിദേശ കീ നിയന്ത്രണങ്ങൾ

InnoDB വിദേശ കീകളെ പിന്തുണയ്ക്കുന്നു, അതേസമയം MyISAM അവയെ പിന്തുണയ്ക്കുന്നില്ല.

ഒരിക്കൽ പരിവർത്തനം ചെയ്‌താൽ, വിദേശ കീ നിയന്ത്രണങ്ങൾ നേരിട്ട് ഉപേക്ഷിക്കപ്പെടും.

നിങ്ങളുടെ ബിസിനസ്സ് കാസ്കേഡിംഗ് ഇല്ലാതാക്കലുകളെയോ അപ്‌ഡേറ്റുകളെയോ ആശ്രയിക്കുന്നുവെങ്കിൽ, പരിവർത്തനത്തിനുശേഷം ലോജിക് പൂർണ്ണമായും പരാജയപ്പെടും.

ഇടപാട് പിന്തുണ

ഇന്നോഡിബി ഇടപാടുകൾ നടത്തുകയും അവയെ പിന്തുണയ്ക്കുകയും ചെയ്യുന്നു. COMMITROLLBACK.

MyISAM-ന് ഇടപാടുകൾ ഇല്ല, ടേബിൾ-ലെവൽ ലോക്കുകൾ മാത്രമേ ഉള്ളൂ.

പരിവർത്തനത്തിനുശേഷം, ഇടപാടുമായി ബന്ധപ്പെട്ട എല്ലാ കോഡുകളും അസാധുവാകും, കൂടാതെ ഒരു അപവാദം ഉണ്ടായാൽ റോൾബാക്ക് അസാധ്യവുമാകും.

കൺകറൻസി പ്രകടനം

InnoDB റോ-ലെവൽ ലോക്കിംഗ് ഉപയോഗിക്കുന്നു, അതേസമയം MyISAM ടേബിൾ-ലെവൽ ലോക്കിംഗ് ഉപയോഗിക്കുന്നു.

ഉയർന്ന കൺകറൻസി സാഹചര്യങ്ങളിൽ, MyISAM ഇടയ്ക്കിടെ ടേബിളുകൾ ലോക്ക് ചെയ്യുന്നു, ഇത് പ്രകടന തടസ്സങ്ങളിലേക്ക് നയിക്കുന്നു.

സൂചിക സവിശേഷതകൾ

MySQL പതിപ്പ് 5.6 ന് മുമ്പ്, MyISAM-ന് സ്വന്തമായി ഒരു പൂർണ്ണ-ടെക്സ്റ്റ് സൂചിക ഉണ്ടായിരുന്നു.

എന്നാൽ അകത്ത് MySQL 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 ഔദ്യോഗിക ഡോക്യുമെന്റേഷൻ വിശദീകരണം:

"വിദേശ കീ കൺസ്ട്രക്ഷൻ"ai"nts-നെ InnoDB മാത്രമേ പിന്തുണയ്ക്കുന്നുള്ളൂ. നിങ്ങൾ ഒരു പട്ടിക MyISAM-ലേക്ക് പരിവർത്തനം ചെയ്താൽ, എല്ലാ വിദേശ കീകളും അവഗണിക്കപ്പെടും."
——MySQL റഫറൻസ് മാനുവൽ, അധ്യായം 14.6.6 വിദേശ കീ നിയന്ത്രണങ്ങൾ

MyISAM-ൽ വിദേശ കീകൾ പൂർണ്ണമായും അസാധുവാണെന്ന് ഈ പ്രസ്താവന വ്യക്തമായി പറയുന്നു.

ഒപ്പം മരിയാഡിബി ഔദ്യോഗിക ഡോക്യുമെന്റേഷൻ ഇനിപ്പറയുന്ന കാര്യങ്ങൾ കൂടി ഊന്നിപ്പറഞ്ഞു:

"MyISAM ഇടപാടുകളെ പിന്തുണയ്ക്കുന്നില്ല. ഇടപാട് സമഗ്രതയെ ആശ്രയിക്കുന്ന ആപ്ലിക്കേഷനുകൾ MyISAM ഉപയോഗിക്കരുത്."
——മരിയാഡിബി നോളജ് ബേസ്, സ്റ്റോറേജ് എഞ്ചിനുകൾ

അതുകൊണ്ടാണ് ഒരു മാറ്റം വരുത്തുന്നതിന് മുമ്പ് രണ്ടുതവണ ചിന്തിക്കേണ്ടത്.

എന്റെ കാഴ്ചപ്പാടും നിഗമനവും

InnoDB-യെ MyISAM-ലേക്ക് മാറ്റുന്നത് ഒരു ആഡംബര കാറിന്റെ എഞ്ചിൻ ഒരു ട്രക്ക് എഞ്ചിൻ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കുന്നത് പോലെയാണ്.

അതിന് ഓടാൻ കഴിയും, പക്ഷേ അത് തികച്ചും വ്യത്യസ്തമായ രീതിയിൽ ഓടുന്നു.

നിങ്ങളുടെ ബിസിനസ്സിൽ ഭാരം കുറഞ്ഞ സ്റ്റാറ്റിസ്റ്റിക്കൽ അന്വേഷണങ്ങൾ ഉൾപ്പെടുന്നുവെങ്കിൽ, MyISAM-ന്റെ വേഗതയും ലാളിത്യവും കൂടുതൽ അനുയോജ്യമാകും.

എന്നിരുന്നാലും, നിങ്ങളുടെ സിസ്റ്റം ഇടപാടുകളെയും വിദേശ കീകളെയും ആശ്രയിക്കുന്നുവെങ്കിൽ, അവയെ തിടുക്കത്തിൽ പരിവർത്തനം ചെയ്യുന്നത് എയർബാഗ് നീക്കം ചെയ്യുന്നത് പോലെയാണ്.

അതുകൊണ്ട്, യഥാർത്ഥ ജ്ഞാനം വേഗതയെ അന്ധമായി പിന്തുടരുന്നതിലല്ല, മറിച്ച് സ്ഥിരതയെയും പ്രകടനത്തെയും സന്തുലിതമാക്കുന്നതിലാണ്.

ഡാറ്റാബേസിന്റെ തിരഞ്ഞെടുപ്പാണ് സിസ്റ്റത്തിന്റെ ആത്മാവിനെ നിർണ്ണയിക്കുന്നത്.

സ്റ്റോറേജ് എഞ്ചിനുകൾ മാറ്റുന്നതിലെ വൈദഗ്ദ്ധ്യം നേടിയെടുക്കുന്നത് സാങ്കേതിക കഴിവിന്റെ പ്രകടനം മാത്രമല്ല, വാസ്തുവിദ്യാ ചിന്തയുടെ ഉയർച്ചയും കൂടിയാണ്.

നിങ്ങൾ ബൾക്ക് കൺവേർഷൻ പരിഗണിക്കുകയാണെങ്കിൽ, ദയവായി ആദ്യം ഒരു സമഗ്രമായ റിസ്ക് വിലയിരുത്തൽ നടത്തുക.

യഥാർത്ഥ ബിസിനസ്സ് സാഹചര്യങ്ങൾ അനുകരിക്കാൻ പരീക്ഷണ പരിസ്ഥിതി ഒരിക്കൽ പ്രവർത്തിപ്പിക്കുക.

എല്ലാം ശരിയാണെന്ന് സ്ഥിരീകരിച്ച ശേഷം, പ്രൊഡക്ഷൻ എൻവയോൺമെന്റിൽ കമാൻഡ് എക്സിക്യൂട്ട് ചെയ്യുക.

ഡാറ്റാബേസുകൾ കളിപ്പാട്ടങ്ങളല്ല; അവ എന്റർപ്രൈസ് ഡാറ്റയുടെ ഹൃദയമാണ്.

നിങ്ങളുടെ ഹൃദയത്തിന്റെ താളം നിയന്ത്രിക്കുന്നതും നിങ്ങളാണ്.

ഹോപ്പ് ചെൻ വെയ്‌ലിയാങ് ബ്ലോഗ് ( https://www.chenweiliang.com/ "MySQL/MariaDB ഡാറ്റാബേസുകളിൽ InnoDB ടേബിളുകളെ MyISAM ടേബിളുകളായി എങ്ങനെ ബാച്ച് ചെയ്യാം?" എന്ന ലേഖനം ഇവിടെ പങ്കുവെച്ചിരിക്കുന്നത് നിങ്ങൾക്ക് സഹായകരമായേക്കാം.

ഈ ലേഖനത്തിന്റെ ലിങ്ക് പങ്കിടാൻ സ്വാഗതം:https://www.chenweiliang.com/cwl-34157.html

കൂടുതൽ മറഞ്ഞിരിക്കുന്ന തന്ത്രങ്ങൾ അൺലോക്ക് ചെയ്യാൻ🔑, ഞങ്ങളുടെ ടെലിഗ്രാം ചാനലിൽ ചേരാൻ സ്വാഗതം!

ഇഷ്ടമായാൽ ഷെയർ ചെയ്യുക, ലൈക്ക് ചെയ്യുക! നിങ്ങളുടെ ഷെയറുകളും ലൈക്കുകളും ഞങ്ങളുടെ തുടർച്ചയായ പ്രചോദനമാണ്!

 

发表 评论

നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിക്കില്ല. ആവശ്യമായ ഫീൽഡുകൾ ഉപയോഗിക്കുന്നു * ലേബൽ

ആർട്ടിക്കിൾ ഡയറക്ടറി
ടോപ്പ് സ്ക്രോൾ