MySQL/MariaDB දත්ත සමුදායන් InnoDB වගු MyISAM වගු බවට පරිවර්තනය කිරීම සඳහා වින්‍යාස කරන්නේ කෙසේද?

දත්ත සමුදා වගුවක ගබඩා එන්ජිම මෝටර් රථයක එන්ජිමක් වැනිය; එන්ජිම වෙනස් කිරීමෙන් කාර්ය සාධනය සහ ලක්ෂණ වහාම වෙනස් වේ. බොහෝ අය සිතන්නේ දත්ත සමුදායක් දත්ත ගබඩා කිරීම සඳහා පමණක් බවයි, නමුත් ඔබ InnoDB MyISAM බවට පරිවර්තනය කිරීමට උත්සාහ කරන විට පමණක් සැඟවුණු සංකීර්ණතා සොයා ගනු ඇත.

කෙනෙකුට 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 ... ප්රකාශය.

මෙම ප්‍රකාශන පිටපත් කර එකවර ක්‍රියාත්මක කර කණ්ඩායම් පරිවර්තනය එකවර සම්පූර්ණ කරන්න.

මෙය "ස්වයංක්‍රීය කණ්ඩායම් පරිවර්තනය" ලෙස හැඳින්වේ.

පරිවර්තනයට පෙර අවදානම් තක්සේරුව

MySQL/MariaDB දත්ත සමුදායන් InnoDB වගු MyISAM වගු බවට පරිවර්තනය කිරීම සඳහා වින්‍යාස කරන්නේ කෙසේද?

විදේශීය යතුරු සීමාවන්

InnoDB විදේශීය යතුරු සඳහා සහය දක්වයි, නමුත් MyISAM ඒවාට කිසිසේත්ම සහය නොදක්වයි.

පරිවර්තනය කළ පසු, විදේශීය යතුරු සීමාවන් කෙලින්ම ඉවත දමනු ලැබේ.

ඔබේ ව්‍යාපාරය කැස්කැඩින් මකාදැමීම් හෝ යාවත්කාලීන කිරීම් මත රඳා පවතී නම්, පරිවර්තනයෙන් පසු තර්කනය සම්පූර්ණයෙන්ම අසාර්ථක වනු ඇත.

ගනුදෙනු සහාය

InnoDB ගනුදෙනු කරන අතර ඒවාට සහාය දක්වයි. COMMIT 和 ROLLBACK.

MyISAM සතුව ගනුදෙනු නොමැත, මේස මට්ටමේ අගුලු පමණි.

පරිවර්තනයෙන් පසු, ගනුදෙනුවට අදාළ සියලුම කේත අවලංගු වන අතර, ව්‍යතිරේකයක් ඇති වුවහොත් ආපසු හැරවීම කළ නොහැකි වනු ඇත.

සමගාමී කාර්ය සාධනය

InnoDB පේළි මට්ටමේ අගුලු දැමීම භාවිතා කරන අතර, MyISAM වගු මට්ටමේ අගුලු දැමීම භාවිතා කරයි.

ඉහළ සමගාමී අවස්ථා වලදී, MyISAM නිතරම වගු අගුළු දමයි, එමඟින් කාර්ය සාධන බාධක ඇති වේ.

දර්ශක විශේෂාංග

MySQL 5.6 ට පෙර , MyISAM සතුව අද්විතීය පූර්ණ-පෙළ දර්ශකයක් තිබුණි.

කෙසේ වෙතත්, MySQL 5.6+ සහ MariaDB 10+ හි, InnoDB දැනටමත් සම්පූර්ණ පෙළ සුචිගත කිරීම සඳහා සහය දක්වයි.

එබැවින්, ඔබ පැරණි අනුවාදයක් භාවිතා කරන්නේ නම් මිස, සම්පූර්ණ පෙළ සුචිගත කිරීම සඳහා 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 යොමු අත්පොත, 14.6.6 පරිච්ඡේදය විදේශීය යතුරු සීමාවන්

මෙම ප්‍රකාශය අපට පැහැදිලිව පවසන්නේ MyISAM හි විදේශීය යතුරු සම්පූර්ණයෙන්ම වලංගු නොවන බවයි.

නිල MariaDB ලියකියවිලි ද අවධාරණය කරන්නේ:

"MyISAM ගනුදෙනු සඳහා සහය නොදක්වයි. ගනුදෙනු අඛණ්ඩතාව මත රඳා පවතින යෙදුම් MyISAM භාවිතා නොකළ යුතුය."
——MariaDB දැනුම පදනම, ගබඩා එන්ජින්

ඒ නිසා මාරුවක් කිරීමට පෙර දෙවරක් සිතා බැලිය යුතුයි.

මගේ දෘෂ්ටිකෝණය සහ නිගමනය

InnoDB MyISAM බවට පරිවර්තනය කිරීම සුඛෝපභෝගී මෝටර් රථයක එන්ජිම ට්‍රක් එන්ජිමකින් ප්‍රතිස්ථාපනය කරනවා හා සමානයි.

එය ධාවනය කළ හැකි නමුත්, එය සම්පූර්ණයෙන්ම වෙනස් ආකාරයකින් ධාවනය වේ.

ඔබේ ව්‍යාපාරයට සැහැල්ලු සංඛ්‍යානමය විමසුම් ඇතුළත් නම්, MyISAM හි වේගය සහ සරල බව වඩාත් සුදුසු විය හැකිය.

කෙසේ වෙතත්, ඔබේ පද්ධතිය ගනුදෙනු සහ විදේශීය යතුරු මත රඳා පවතී නම්, ඒවා හදිසියේ පරිවර්තනය කිරීම වායු බෑගය ඉවත් කිරීමක් වැනිය.

එමනිසා, සැබෑ ප්‍රඥාව ඇත්තේ අන්ධ ලෙස වේගය ලුහුබැඳීම තුළ නොව, ස්ථාවරත්වය සහ කාර්ය සාධනය සමතුලිත කිරීම තුළය.

දත්ත සමුදාය තෝරා ගැනීම පද්ධතියේ ආත්මය තීරණය කරයි.

ගබඩා එන්ජින් මාරු කිරීමේ කුසලතා ප්‍රගුණ කිරීම තාක්ෂණික හැකියාව විදහා දැක්වීමක් පමණක් නොව, වාස්තු විද්‍යාත්මක චින්තනයේ උන්නතියක් ද වේ.

ඔබ තොග පරිවර්තනයක් සලකා බලන්නේ නම්, කරුණාකර පළමුව පුළුල් අවදානම් තක්සේරුවක් සිදු කරන්න.

සැබෑ ව්‍යාපාරික අවස්ථා අනුකරණය කිරීමට පරීක්ෂණ පරිසරය එක් වරක් ක්‍රියාත්මක කරන්න.

සියල්ල නිවැරදි බව තහවුරු කිරීමෙන් පසු, නිෂ්පාදන පරිසරය තුළ විධානය ක්‍රියාත්මක කරන්න.

දත්ත සමුදායන් සෙල්ලම් බඩු නොවේ; ඒවා ව්‍යවසාය දත්තවල හදවතයි.

ඔබේ හදවතේ රිද්මය පාලනය කරන්නේ ඔබයි.

චෙන් වෙයිලියැන්ග්ගේ බ්ලොග් අඩවියේ ( https://www.chenweiliang.com/ ) බෙදාගෙන ඇති "MySQL/MariaDB දත්ත සමුදායන් තුළ InnoDB වගු MyISAM වගු බවට පරිවර්තනය කරන්නේ කෙසේද?" යන ලිපිය ඔබට ප්‍රයෝජනවත් වනු ඇතැයි අපි බලාපොරොත්තු වෙමු.

මෙම ලිපියේ සබැඳිය බෙදා ගැනීමට නිදහස් වන්න: https://www.chenweiliang.com/cwl-34157.html

තවත් සැඟවුණු උපක්‍රම අගුළු ඇරීමට🔑, අපගේ ටෙලිග්‍රාම් නාලිකාවට සම්බන්ධ වීමට සාදරයෙන් පිළිගනිමු!

ඔබ එයට කැමති නම් Share කර Like කරන්න! ඔබගේ කොටස් සහ කැමැත්ත අපගේ අඛණ්ඩ අභිප්‍රේරණයයි!

 

发表

您的邮箱地址不会被公开。必填项已用*标注

අනුචලන ඉහළට