Cyfeiriadur Erthygl
Mae peiriant storio tabl cronfa ddata fel peiriant car; mae newid yr injan yn newid y perfformiad a'r nodweddion ar unwaith. Mae llawer o bobl yn meddwl mai dim ond ar gyfer storio data y mae cronfa ddata, ond pan fyddwch chi'n dechrau gweithio arni mewn gwirionedd... InnoDB 转成 MyISAMDim ond wedyn y byddwch chi'n darganfod y cyfrinachau cudd y tu ôl iddo.
Pam y byddai rhywun eisiau newid o InnoDB i MyISAM?
Mewn llawer o senarios, mae MyISAM yn gyflymach, yn enwedig ar gyfer cymwysiadau sy'n drwm eu darllen ac yn ysgafn eu hysgrifennu fel cronfeydd data log ac ystadegau.
Mae ei fecanwaith cloi ar lefel bwrdd mewn gwirionedd yn rhedeg yn esmwyth iawn o dan gydamseredd isel.
Ar ben hynny, mae storio ffeiliau MyISAM yn fwy greddfol; un .MYD Storio data, un .MYI Mae storio mynegeion, mudo a gwneud copi wrth gefn i gyd yn gyfleus iawn.
Fodd bynnag, mae cefnogaeth trafodion ac allweddi tramor InnoDB bron yn angenrheidiol mewn senarios busnes cymhleth.
Felly, rhaid i chi ddarganfod a oes angen y nodweddion hyn ar eich busnes mewn gwirionedd cyn gwneud y newid.
Gorchymyn craidd: NEWID TABL
I drosi un tabl o InnoDB i MyISAM, dim ond un llinell o god sydd ei hangen arnoch chi:
ALTER TABLE `你的表名` ENGINE = MyISAM;
Ar ôl i'r gweithrediad gael ei gwblhau, bydd peiriant storio'r tabl yn cael ei newid.
Onid yw hynny'n syml?
Trosi swp: Cynhyrchu sgriptiau awtomatig
Os oes gennych chi ddwsinau neu hyd yn oed gannoedd o dablau, yn sicr nid yw eu haddasu â llaw yn ymarferol.
Ar y pwynt hwn, gellir defnyddio un ymholiad i gynhyrchu datganiadau trosi swp yn awtomatig:
SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;')
FROM information_schema.tables
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';
Ar ôl rhedeg, bydd yn allbynnu criw o ... ALTER TABLE ... Datganiad.
Copïwch y datganiadau hyn a'u gweithredu i gyd ar unwaith i gwblhau'r trosi swp mewn un tro.
Dyma'r hyn a elwir yn "drosi swp awtomataidd".
Asesiad risg cyn trosi

Cyfyngiadau allweddol tramor
Mae InnoDB yn cefnogi allweddi tramor, tra nad yw MyISAM yn eu cefnogi o gwbl.
Unwaith y bydd y trawsnewidiad wedi'i gwblhau, bydd y cyfyngiadau allwedd dramor yn cael eu taflu.
Os yw eich busnes yn dibynnu ar ddileu neu ddiweddaru’n raddol, bydd y rhesymeg yn methu’n llwyr ar ôl y trosi.
Cymorth trafodion
Mae gan InnoDB drafodion ac mae'n eu cefnogi. COMMIT 和 ROLLBACK.
Nid oes gan MyISAM drafodion, dim ond cloeon lefel tabl.
Ar ôl y trawsnewidiad, bydd yr holl god sy'n gysylltiedig â thrafodion yn dod yn annilys, a bydd yn amhosibl dychwelyd y cod rhag ofn y bydd eithriad.
Perfformiad cydamseredd
Mae InnoDB yn defnyddio cloi lefel rhes, tra bod MyISAM yn defnyddio cloi lefel tabl.
Mewn senarios cydamseredd uchel, mae MyISAM yn aml yn cloi tablau, gan arwain at dagfeydd perfformiad.
Nodweddion mynegai
在 MySQL Cyn fersiwn 5.6, roedd gan MyISAM ei fynegai testun llawn ei hun.
Ond i mewn MySQL Mae mynegeio testun llawn eisoes yn cael ei gefnogi yn fersiynau 5.6 a 10+ o MariaDB ac InnoDB.
Felly, oni bai eich bod yn defnyddio fersiwn hŷn, nid oes angen newid i MyISAM ar gyfer mynegeio testun llawn.
Proses Arfer Gorau
Data wrth gefn Cyn trosi, gwnewch yn siŵr eich bod yn allforio.
.sqlMae ffeiliau'n cael eu storio i sicrhau y gellir eu hadfer ar unrhyw adeg.Strwythur y rhestr wirio Defnyddiwch y gorchymyn canlynol i wirio a oes allwedd dramor yn bodoli:
SHOW CREATE TABLE `你的表名`;Perfformio trosi 使用
ALTER TABLEFel arall, gellir defnyddio sgriptiau swp i gwblhau'r trosi.Gwiriwch statws iechyd Ar ôl i'r trosi gael ei gwblhau, rhedeg:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;Mae hyn yn cadarnhau bod y tabl yn gweithredu'n gywir ac yn rhyddhau darnau.
Dull adfer gwrthdro
Os gwelir dirywiad perfformiad neu broblemau rhesymeg fusnes ar ôl y trawsnewid, gallwch newid yn ôl i InnoDB ar unrhyw adeg:
ALTER TABLE `你的表名` ENGINE = InnoDB;
Dyma'r hyn a elwir yn "weithrediad gwrthdroadwy," gan roi ffordd allan i chi.
Safbwyntiau awdurdodol a ddyfynnwyd
yn ôl Dogfennaeth Swyddogol MySQL Esboniad:
"Adeiladu allwedd dramor"aiDim ond InnoDB sy'n cefnogi nts. Os byddwch chi'n trosi tabl i MyISAM, bydd pob allwedd dramor yn cael ei hanwybyddu.
——Llawlyfr Cyfeirio MySQL, Pennod 14.6.6 Cyfyngiadau Allweddi Tramor
Mae'r datganiad hwn yn dweud wrthym yn glir bod allweddi tramor yn gwbl annilys yn MyISAM.
a Dogfennaeth Swyddogol MariaDB Pwysleisiwyd hefyd fod:
"Nid yw MyISAM yn cefnogi trafodion. Ni ddylai cymwysiadau sy'n dibynnu ar uniondeb trafodion ddefnyddio MyISAM."
——Cronfa Wybodaeth MariaDB, Peiriannau Storio
Dyna pam mae'n rhaid i chi feddwl ddwywaith cyn gwneud newid.
Fy Safbwynt a'm Casgliad
Mae trosi InnoDB i MyISAM fel disodli injan car moethus gydag injan lori.
Gall redeg, ond mae'n rhedeg mewn ffordd hollol wahanol.
Os yw eich busnes yn cynnwys ymholiadau ystadegol ysgafn, efallai y bydd cyflymder a symlrwydd MyISAM yn fwy addas.
Fodd bynnag, os yw eich system yn dibynnu ar drafodion ac allweddi tramor, mae eu trosi'n ddi-hid fel tynnu'r bag aer allan.
Felly, nid yw doethineb gwirioneddol yn gorwedd mewn mynd ar drywydd cyflymder yn ddall, ond mewn cydbwyso sefydlogrwydd a pherfformiad.
Mae'r dewis o gronfa ddata yn pennu enaid y system.
Mae meistroli sgiliau newid peiriannau storio nid yn unig yn arddangosiad o allu technegol, ond hefyd yn ddyrchafiad o feddwl pensaernïol.
Os ydych chi'n ystyried trosi swmp, cynhaliwch asesiad risg cynhwysfawr yn gyntaf.
Rhedeg yr amgylchedd prawf unwaith i efelychu senarios busnes go iawn.
Ar ôl cadarnhau bod popeth yn gywir, gweithredwch ef yn yr amgylchedd cynhyrchu.
Nid teganau yw cronfeydd data; nhw yw calon data menter.
A chi yw'r un sy'n rheoli rhythm eich calon.
Blog Chen Weiliang Gobeithio ( https://www.chenweiliang.com/ Efallai y bydd yr erthygl "Sut i Drosi Tablau InnoDB mewn Swp i Dablau MyISAM mewn Cronfeydd Data MySQL/MariaDB?" a rennir yma o gymorth i chi.
Croeso i chi rannu dolen yr erthygl hon:https://www.chenweiliang.com/cwl-34157.html
