Sut i ffurfweddu cronfeydd data MySQL/MariaDB i drosi tablau InnoDB yn dablau MyISAM mewn swp?

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

Sut i ffurfweddu cronfeydd data MySQL/MariaDB i drosi tablau InnoDB yn dablau MyISAM mewn swp?

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. COMMITROLLBACK.

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

  1. Data wrth gefn Cyn trosi, gwnewch yn siŵr eich bod yn allforio. .sql Mae ffeiliau'n cael eu storio i sicrhau y gellir eu hadfer ar unrhyw adeg.

  2. Strwythur y rhestr wirio Defnyddiwch y gorchymyn canlynol i wirio a oes allwedd dramor yn bodoli:

    SHOW CREATE TABLE `你的表名`;
    
  3. Perfformio trosi 使用 ALTER TABLE Fel arall, gellir defnyddio sgriptiau swp i gwblhau'r trosi.

  4. 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

I ddatgloi mwy o driciau cudd🔑, croeso i ymuno â'n sianel Telegram!

Rhannwch a hoffwch os ydych chi'n ei hoffi! Eich cyfrannau a'ch hoff bethau yw ein cymhelliant parhaus!

 

发表 评论

Ni fydd eich cyfeiriad e-bost yn cael ei gyhoeddi. 必填 项 已 用 * Label

Cyfeiriadur Erthygl
Sgroliwch i'r brig