Meriv çawa databasa MySQL/MariaDB mîheng dike da ku tabloyên InnoDB veguherîne tabloyên MyISAM bi komî?

Motora hilanînê ya tabloya databaseyê mîna motora otomobîlekê ye; guhertina motorê yekser performans û taybetmendiyan diguherîne. Gelek kes difikirin ku database tenê ji bo hilanîna daneyan e, lê gava ku hûn bi rastî dest bi xebatê li ser wê dikin... InnoDB 转成 MyISAMTenê wê hingê hûn ê razên veşartî yên li pişt wê kifş bikin.

Çima kesek dixwaze ji InnoDB ber bi MyISAM ve biguhere?

Di gelek senaryoyan de, MyISAM zûtir e, nemaze ji bo sepanên ku pir dixwînin û sivik dinivîsin wekî databasa qeyd û îstatîstîkan.

Mekanîzmaya kilîtkirina asta maseyê di bin hevdemiya nizm de bi rastî jî pir bi rêkûpêk dixebite.

Herwiha, hilanîna pelan a MyISAM-ê bêtir hêsan e; yek .MYD Daneyên hilanînê, yek .MYI Hilanîna endeksan, koçberkirin û hilanîna paşve hemî pir hêsan in.

Lêbelê, piştgiriya danûstandin û mifteya biyanî ya InnoDB di senaryoyên karsaziyê yên tevlihev de hema hema pêdivîyek e.

Ji ber vê yekê, divê hûn fêm bikin ka karsaziya we bi rastî hewceyê van taybetmendiyan e berî ku veguheztinê bikin.

Fermana bingehîn: ALTER TABLE

Ji bo veguherandina tabloyek yekane ji InnoDB bo MyISAM, hûn tenê hewceyê yek rêza kodê ne:

ALTER TABLE `你的表名` ENGINE = MyISAM;

Piştî ku pêkanîn qediya, motora hilanînê ya tabloyê dê were guhertin.

Ma ne rasterast e?

Veguherîna komî: Çêkirina skrîptê ya otomatîk

Heke bi dehan an jî bi sedan tabloyên we hebin, guherandina wan bi destan bê guman ne pratîk e.

Di vê nuqteyê de, pirsek yekane dikare were bikar anîn da ku bixweber daxuyaniyên veguherîna komê çêbike:

SELECT CONCAT('ALTER TABLE `', table_name, '` ENGINE = MyISAM;') 
FROM information_schema.tables 
WHERE table_schema = '你的数据库名' AND engine = 'InnoDB';

Piştî xebitandinê, ew ê komek nîşanan derxe holê ... ALTER TABLE ... Îfade.

Van daxuyaniyan kopî bikin û hemîyan di carekê de bicîh bînin da ku veguherîna komî bi carekê ve temam bikin.

Ev tiştê ku wekî "veguherîna kombûna otomatîk" tê zanîn e.

Nirxandina rîskê berî veguherînê

Meriv çawa databasa MySQL/MariaDB mîheng dike da ku tabloyên InnoDB veguherîne tabloyên MyISAM bi komî?

Sînorkirinên mifteya biyanî

InnoDB piştgirîya mifteyên biyanî dike, lê MyISAM wan bi tevahî piştgirî nake.

Piştî veguheztinê, sînorkirinên mifteya biyanî dê rasterast werin avêtin.

Eger karsaziya we xwe dispêre jêbirin an nûvekirinên dubare, mentiq dê piştî veguherînê bi tevahî têk biçe.

Piştgiriya danûstandinê

InnoDB danûstandinan dike û piştgiriyê dide wan. COMMITROLLBACK.

MyISAM danûstandinan nake, tenê kilîdên asta maseyê hene.

Piştî veguherînê, hemî kodên têkildarî danûstandinê dê nederbasdar bibin, û di rewşa îstîsnayekê de vegerandina wan dê ne mumkin be.

Performansa hevdemî

InnoDB kilîtkirina asta rêzan bikar tîne, lê MyISAM kilîtkirina asta tabloyan bikar tîne.

Di senaryoyên hevdemiya bilind de, MyISAM pir caran tabloyan kilît dike, ku dibe sedema astengiyên performansê.

Taybetmendiyên endeksê

MySQL Berî guhertoya 5.6, MyISAM endeksa xwe ya nivîsa tevahî hebû.

Lê di MySQL Indekskirina nivîsa tevahî di guhertoyên 5.6 û 10+ yên MariaDB û InnoDB de jixwe tê piştgirî kirin.

Ji ber vê yekê, heya ku hûn guhertoyek kevntir bikar neynin, ne hewce ye ku hûn ji bo endekskirina nivîsa tevahî biçin MyISAM.

Pêvajoya Pratîkên Baştirîn

  1. Daneyên hilanînê Berî veguheztinê, pê ewle bin ku hûn hinarde bikin. .sql Pel têne hilanîn da ku piştrast bikin ku ew dikarin di her kêliyê de werin sererast kirin.

  2. Pêkhateya Lîsteya Kontrolê Ji bo kontrolkirina hebûna mifteyek biyanî, fermana jêrîn bikar bînin:

    SHOW CREATE TABLE `你的表名`;
    
  3. Veguherandinê pêk bîne bikaranîn ALTER TABLE Bi awayekî din, skrîptên batch dikarin ji bo temamkirina veguherînê werin bikar anîn.

  4. Rewşa tenduristiyê kontrol bikin Piştî ku veguherîn qediya, fermanê bimeşînin:

    CHECK TABLE `你的表名`;
    OPTIMIZE TABLE `你的表名`;
    

    Ev piştrast dike ku tablo bi rêkûpêk dixebite û perçeyan berdide.

Rêbaza vegerandina berevajî

Heke piştî veguherînê pirsgirêkên xirabûna performansê an mentiqa karsaziyê werin dîtin, hûn dikarin di her kêliyê de vegerin InnoDB-ê:

ALTER TABLE `你的表名` ENGINE = InnoDB;

Ev tiştê ku jê re "operasyona berevajîkirinê" tê gotin e, ku rêyek derketinê dide we.

Nêrînên otorîter ên hatine destnîşankirin

Li gorî Belgekirina Fermî ya MySQL talîmatên:

"Avakirina mifteya biyanî"aint tenê ji hêla InnoDB ve têne piştgirî kirin. Ger hûn tabloyek veguherînin MyISAM, hemî mifteyên biyanî dê werin paşguh kirin.
——MySQL Reference Manual, Beşa 14.6.6 Sînorkirinên Mifteya Biyanî

Ev daxuyanî bi zelalî ji me re dibêje ku mifteyên biyanî di MyISAM de bi tevahî nederbasdar in.

û Belgekirina Fermî ya MariaDB Her wiha tekez kir ku:

"MyISAM piştgiriya danûstandinan nake. Serlêdanên ku xwe dispêrin yekparebûna danûstandinan divê MyISAM bikar neynin."
——Baza Zanînê ya MariaDB, Motorên Depokirinê

Ji ber vê yekê divê hûn du caran bifikirin berî ku hûn veguherînekê bikin.

Nêrîna Min û Encam

Veguherandina InnoDB bo MyISAM mîna guhertina motora otomobîleke luks bi motoreke kamyonekê ye.

Ew dikare bimeşe, lê ew bi awayekî bi tevahî cûda dimeşe.

Eger karê we lêpirsînên îstatîstîkî yên sivik dihewîne, leza û sadehiya MyISAM-ê dibe ku guncawtir be.

Lêbelê, heke pergala we xwe dispêre danûstandinan û mifteyên biyanî, veguherandina wan bi lez û bez mîna rakirina balîfa hewayê ye.

Ji ber vê yekê, şehrezayiya rastîn ne di şopandina kor a leza de ye, lê di hevsengiya îstîqrar û performansê de ye.

Hilbijartina databasê giyanê pergalê diyar dike.

Serweriya jêhatîyên guheztina motorên hilanînê ne tenê nîşandana şiyana teknîkî ye, lê di heman demê de bilindkirina ramana mîmarî ye jî.

Heke hûn li ser veguherîna girseyî difikirin, ji kerema xwe pêşî nirxandinek rîskê ya berfireh bikin.

Ji bo simulasyona senaryoyên karsaziya rastîn, jîngeha ceribandinê carekê bimeşînin.

Piştî ku piştrast kir ku her tişt rast e, fermanê di hawîrdora hilberînê de bicîh bîne.

Databaz ne pêlîstok in; ew dilê daneyên pargîdaniyan in.

Û tu ew î ku rîtma dilê xwe kontrol dike.

评论

Navnîşana e-nameya we nayê weşandin. Zeviyên pêdivî têne bikar anîn * Awanasî

pelrêça gotarê
Scroll to Top