ఆర్టికల్ డైరెక్టరీ
డేటాబేస్ టేబుల్ యొక్క నిల్వ చేసే యంత్రాంగం కారు ఇంజిన్ లాంటిది; ఇంజిన్ను మార్చినప్పుడు దాని పనితీరు, లక్షణాలు తక్షణమే మారిపోతాయి. చాలా మంది డేటాబేస్ కేవలం డేటాను నిల్వ చేయడానికి మాత్రమే అని అనుకుంటారు, కానీ మీరు దానిపై వాస్తవంగా పని చేయడం ప్రారంభించినప్పుడు... 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లో ఫారిన్ కీలు పూర్తిగా చెల్లవని మనకు స్పష్టంగా తెలియజేస్తుంది.
మరియు మారియాడిబి అధికారిక డాక్యుమెంటేషన్ ఈ విషయం కూడా నొక్కి చెప్పబడింది:
MyISAM లావాదేవీలకు మద్దతు ఇవ్వదు. లావాదేవీల సమగ్రతపై ఆధారపడే అప్లికేషన్లు MyISAMను ఉపయోగించకూడదు.
మారియాడిబి నాలెడ్జ్ బేస్, స్టోరేజ్ ఇంజన్లు
అందుకే మార్పు చేసే ముందు రెండుసార్లు ఆలోచించాలి.
నా దృక్కోణం మరియు ముగింపు
InnoDBని MyISAMకి మార్చడం అనేది ఒక విలాసవంతమైన కారు ఇంజిన్ను ట్రక్కు ఇంజిన్తో మార్చడం లాంటిది.
అది నడవగలదు, కానీ పూర్తిగా భిన్నమైన పద్ధతిలో నడుస్తుంది.
మీ వ్యాపారంలో తేలికపాటి స్టాటిస్టికల్ క్వెరీలు ఉంటే, MyISAM యొక్క వేగం మరియు సరళత మరింత అనుకూలంగా ఉండవచ్చు.
అయితే, మీ సిస్టమ్ లావాదేవీలు మరియు ఫారిన్ కీలపై ఆధారపడి ఉంటే, వాటిని తొందరపాటుతో మార్చడం ఎయిర్బ్యాగ్ను తొలగించడం లాంటిది.
అందువల్ల, నిజమైన వివేకం వేగాన్ని గుడ్డిగా వెంబడించడంలో లేదు, కానీ స్థిరత్వం మరియు పనితీరును సమతుల్యం చేయడంలో ఉంది.
డేటాబేస్ ఎంపిక సిస్టమ్ యొక్క సారాన్ని నిర్ణయిస్తుంది.
స్టోరేజ్ ఇంజిన్లను మార్చే నైపుణ్యాలను సాధించడం అనేది కేవలం సాంకేతిక సామర్థ్య ప్రదర్శన మాత్రమే కాదు, అది నిర్మాణ ఆలోచనా విధానాన్ని ఉన్నతీకరించడం కూడా.
మీరు బల్క్ కన్వర్షన్ను పరిశీలిస్తున్నట్లయితే, దయచేసి ముందుగా సమగ్రమైన రిస్క్ అసెస్మెంట్ను నిర్వహించండి.
నిజమైన వ్యాపార పరిస్థితులను అనుకరించడానికి పరీక్షా వాతావరణాన్ని ఒకసారి అమలు చేయండి.
అన్నీ సరిగ్గా ఉన్నాయని నిర్ధారించుకున్న తర్వాత, ప్రొడక్షన్ ఎన్విరాన్మెంట్లో కమాండ్ను అమలు చేయండి.
డేటాబేస్లు ఆటవస్తువులు కావు; అవి సంస్థాగత డేటాకు గుండెకాయ వంటివి.
మరియు మీ గుండె లయను నియంత్రించేది మీరే.
హోప్ చెన్ వీలియాంగ్ బ్లాగ్ ( https://www.chenweiliang.com/ ఇక్కడ పంచుకున్న "MySQL/MariaDB డేటాబేస్లలో InnoDB పట్టికలను MyISAM పట్టికలుగా ఎలా బ్యాచ్ కన్వర్ట్ చేయాలి?" అనే వ్యాసం మీకు సహాయకరంగా ఉండవచ్చు.
ఈ కథనం యొక్క లింక్ను భాగస్వామ్యం చేయడానికి స్వాగతం:https://www.chenweiliang.com/cwl-34157.html
