લેખ ડિરેક્ટરી
ડેટાબેઝ ટેબલનું સ્ટોરેજ એન્જિન કારના એન્જિન જેવું છે; એન્જિન બદલવાથી તરત જ કામગીરી અને લાક્ષણિકતાઓ બદલાઈ જાય છે. ઘણા લોકો માને છે કે ડેટાબેઝ ફક્ત ડેટા સ્ટોર કરવા માટે છે, પરંતુ જ્યારે તમે ખરેખર તેના પર કામ કરવાનું શરૂ કરો છો... InnoDB 转成 માયસામતો જ તમને તેની પાછળના છુપાયેલા રહસ્યો ખબર પડશે.
શા માટે કોઈ 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 ... નિવેદન.
આ સ્ટેટમેન્ટ્સની નકલ કરો અને બેચ કન્વર્ઝન એક જ વારમાં પૂર્ણ કરવા માટે તે બધાને એક્ઝિક્યુટ કરો.
આને "ઓટોમેટેડ બેચ કન્વર્ઝન" તરીકે ઓળખવામાં આવે છે.
રૂપાંતર પહેલાં જોખમ મૂલ્યાંકન

વિદેશી ચાવીરૂપ અવરોધો
InnoDB વિદેશી કીને સપોર્ટ કરે છે, જ્યારે MyISAM તેમને બિલકુલ સપોર્ટ કરતું નથી.
એકવાર રૂપાંતરિત થઈ ગયા પછી, વિદેશી કી અવરોધો સીધા જ કાઢી નાખવામાં આવશે.
જો તમારો વ્યવસાય કાસ્કેડિંગ ડિલીટ્સ અથવા અપડેટ્સ પર આધાર રાખે છે, તો રૂપાંતર પછી લોજિક સંપૂર્ણપણે નિષ્ફળ જશે.
વ્યવહાર સપોર્ટ
InnoDB પાસે વ્યવહારો છે અને તે તેમને સપોર્ટ કરે છે. COMMIT અને ROLLBACK.
MyISAM માં વ્યવહારો નથી, ફક્ત ટેબલ-લેવલ લોક છે.
રૂપાંતર પછી, બધા વ્યવહાર-સંબંધિત કોડ અમાન્ય થઈ જશે, અને અપવાદના કિસ્સામાં રોલબેક અશક્ય બનશે.
સમવર્તી કામગીરી
InnoDB રો-લેવલ લોકીંગનો ઉપયોગ કરે છે, જ્યારે MyISAM ટેબલ-લેવલ લોકીંગનો ઉપયોગ કરે છે.
ઉચ્ચ-સહમતિવાળા દૃશ્યોમાં, MyISAM વારંવાર કોષ્ટકોને લોક કરે છે, જેના કારણે કામગીરીમાં અવરોધો આવે છે.
ઇન્ડેક્સ સુવિધાઓ
在 MySQL વર્ઝન ૫.૬ પહેલા, MyISAM પાસે પોતાનો પૂર્ણ-ટેક્સ્ટ ઇન્ડેક્સ હતો.
પરંતુ માં MySQL મારિયાડીબી અને ઇનોડીબીના વર્ઝન 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
