ලිපි නාමාවලිය
දත්ත සමුදා වගුවක ගබඩා එන්ජිම මෝටර් රථයක එන්ජිමක් වැනිය; එන්ජිම වෙනස් කිරීමෙන් වහාම කාර්ය සාධනය සහ ලක්ෂණ වෙනස් වේ. බොහෝ අය සිතන්නේ දත්ත සමුදායක් දත්ත ගබඩා කිරීම සඳහා පමණක් බවයි, නමුත් ඔබ ඇත්තටම එය මත වැඩ කිරීමට පටන් ගත් විට... 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 ඒවාට කිසිසේත්ම සහය නොදක්වයි.
පරිවර්තනය කළ පසු, විදේශීය යතුරු සීමාවන් කෙලින්ම ඉවත දමනු ලැබේ.
ඔබේ ව්යාපාරය කැස්කැඩින් මකාදැමීම් හෝ යාවත්කාලීන කිරීම් මත රඳා පවතී නම්, පරිවර්තනයෙන් පසු තර්කනය සම්පූර්ණයෙන්ම අසාර්ථක වනු ඇත.
ගනුදෙනු සහාය
InnoDB ගනුදෙනු කරන අතර ඒවාට සහාය දක්වයි. COMMIT 和 ROLLBACK.
MyISAM සතුව ගනුදෙනු නොමැත, මේස මට්ටමේ අගුලු පමණි.
පරිවර්තනයෙන් පසු, ගනුදෙනුවට අදාළ සියලුම කේත අවලංගු වන අතර, ව්යතිරේකයක් ඇති වුවහොත් ආපසු හැරවීම කළ නොහැකි වනු ඇත.
සමගාමී කාර්ය සාධනය
InnoDB පේළි මට්ටමේ අගුලු දැමීම භාවිතා කරන අතර, MyISAM වගු මට්ටමේ අගුලු දැමීම භාවිතා කරයි.
ඉහළ සමගාමී අවස්ථා වලදී, MyISAM නිතරම වගු අගුළු දමයි, එමඟින් කාර්ය සාධන බාධක ඇති වේ.
දර්ශක විශේෂාංග
在 MySQL 5.6 අනුවාදයට පෙර, MyISAM සතුව තමන්ගේම සම්පූර්ණ පෙළ දර්ශකයක් තිබුණි.
නමුත් ඇතුළත MySQL MariaDB සහ InnoDB හි 5.6 සහ 10+ අනුවාද වල සම්පූර්ණ පෙළ සුචිගත කිරීම දැනටමත් සහය දක්වයි.
එබැවින්, ඔබ පැරණි අනුවාදයක් භාවිතා කරන්නේ නම් මිස, සම්පූර්ණ පෙළ සුචිගත කිරීම සඳහා MyISAM වෙත මාරු වීමට අවශ්ය නොවේ.
හොඳම පුහුණු ක්රියාවලිය
උපස්ථ දත්ත පරිවර්තනය කිරීමට පෙර, අපනයනය කිරීමට වග බලා ගන්න.
.sqlඕනෑම වේලාවක ඒවා ප්රතිසාධනය කළ හැකි බව සහතික කිරීම සඳහා ගොනු ගබඩා කර ඇත.පිරික්සුම් ලැයිස්තු ව්යුහය විදේශීය යතුරක් තිබේදැයි පරීක්ෂා කිරීමට පහත විධානය භාවිතා කරන්න:
SHOW CREATE TABLE `你的表名`;පරිවර්තනය සිදු කරන්න 使用
ALTER TABLEවිකල්පයක් ලෙස, පරිවර්තනය සම්පූර්ණ කිරීම සඳහා කණ්ඩායම් ස්ක්රිප්ට් භාවිතා කළ හැක.සෞඛ්ය තත්ත්වය පරීක්ෂා කරන්න පරිවර්තනය අවසන් වූ පසු, ධාවනය කරන්න:
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 හි වේගය සහ සරල බව වඩාත් සුදුසු විය හැකිය.
කෙසේ වෙතත්, ඔබේ පද්ධතිය ගනුදෙනු සහ විදේශීය යතුරු මත රඳා පවතී නම්, ඒවා හදිසියේ පරිවර්තනය කිරීම වායු බෑගය ඉවත් කිරීමක් වැනිය.
එමනිසා, සැබෑ ප්රඥාව ඇත්තේ අන්ධ ලෙස වේගය ලුහුබැඳීම තුළ නොව, ස්ථාවරත්වය සහ කාර්ය සාධනය සමතුලිත කිරීම තුළය.
දත්ත සමුදාය තෝරා ගැනීම පද්ධතියේ ආත්මය තීරණය කරයි.
ගබඩා එන්ජින් මාරු කිරීමේ කුසලතා ප්රගුණ කිරීම තාක්ෂණික හැකියාව විදහා දැක්වීමක් පමණක් නොව, වාස්තු විද්යාත්මක චින්තනයේ උන්නතියක් ද වේ.
ඔබ තොග පරිවර්තනයක් සලකා බලන්නේ නම්, කරුණාකර පළමුව පුළුල් අවදානම් තක්සේරුවක් සිදු කරන්න.
සැබෑ ව්යාපාරික අවස්ථා අනුකරණය කිරීමට පරීක්ෂණ පරිසරය එක් වරක් ක්රියාත්මක කරන්න.
සියල්ල නිවැරදි බව තහවුරු කිරීමෙන් පසු, නිෂ්පාදන පරිසරය තුළ විධානය ක්රියාත්මක කරන්න.
දත්ත සමුදායන් සෙල්ලම් බඩු නොවේ; ඒවා ව්යවසාය දත්තවල හදවතයි.
ඔබේ හදවතේ රිද්මය පාලනය කරන්නේ ඔබයි.
Hope Chen Weiliang බ්ලොග් ( https://www.chenweiliang.com/ මෙහි බෙදාගෙන ඇති "MySQL/MariaDB දත්ත සමුදායන් තුළ InnoDB වගු MyISAM වගු බවට කාණ්ඩගත කරන්නේ කෙසේද?" යන ලිපිය ඔබට ප්රයෝජනවත් විය හැකිය.
මෙම ලිපියේ සබැඳිය බෙදා ගැනීමට සාදරයෙන් පිළිගනිමු:https://www.chenweiliang.com/cwl-34157.html
