InnoDB хүснэгтүүдийг MyISAM хүснэгт болгон багцаар хөрвүүлэхийн тулд MySQL/MariaDB мэдээллийн санг хэрхэн тохируулах вэ?

Өгөгдлийн сангийн хүснэгтийн хадгалах хөдөлгүүр нь машины хөдөлгүүртэй адил юм; хөдөлгүүрийг солиход гүйцэтгэл болон шинж чанарууд шууд өөрчлөгддөг. Олон хүн өгөгдлийн сан нь зөвхөн өгөгдөл хадгалах зориулалттай гэж боддог ч та үүн дээр ажиллаж эхлэхэд... InnoDB 转成 MyISAMЗөвхөн дараа нь та түүний ард нуугдсан нууцыг олж мэдэх болно.

Яагаад хэн нэгэн 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 хүснэгт болгон багцаар хөрвүүлэхийн тулд MySQL/MariaDB мэдээллийн санг хэрхэн тохируулах вэ?

Гадаад түлхүүрийн хязгаарлалтууд

InnoDB нь гадаад түлхүүрүүдийг дэмждэг бол MyISAM нь огт дэмждэггүй.

Хөрвүүлсний дараа гадаад түлхүүрийн хязгаарлалтыг шууд устгана.

Хэрэв таны бизнес каскад устгах эсвэл шинэчлэлт хийхээс хамааралтай бол хөрвүүлэлтийн дараа логик бүрэн бүтэлгүйтэх болно.

Гүйлгээний дэмжлэг

InnoDB нь гүйлгээтэй бөгөөд тэдгээрийг дэмждэг. COMMIT Тэгээд ROLLBACK.

MyISAM нь гүйлгээ хийдэггүй, зөвхөн хүснэгтийн түвшний түгжээтэй байдаг.

Хөрвүүлэлт хийсний дараа гүйлгээтэй холбоотой бүх код хүчингүй болох бөгөөд онцгой тохиолдолд буцаах боломжгүй болно.

Давхардлын гүйцэтгэл

InnoDB нь мөрийн түвшний түгжээг ашигладаг бол MyISAM нь хүснэгтийн түвшний түгжээг ашигладаг.

Өндөр зэрэгцсэн тохиолдолд MyISAM нь хүснэгтүүдийг байнга түгждэг бөгөөд энэ нь гүйцэтгэлийн сааталд хүргэдэг.

Индексийн онцлогууд

MySQL 5.6 хувилбараас өмнө MyISAM нь өөрийн гэсэн бүрэн текстийн индекстэй байсан.

Гэхдээ MySQL Бүрэн текст индексжүүлэлтийг MariaDB болон InnoDB-ийн 5.6 болон 10+ хувилбаруудад аль хэдийн дэмжигдсэн байдаг.

Тиймээс, хэрэв та хуучин хувилбарыг ашиглахгүй бол бүрэн текст индексжүүлэхийн тулд MyISAM руу шилжих шаардлагагүй.

Шилдэг туршлагын үйл явц

  1. Нөөцлөлтийн өгөгдөл Хөрвүүлэхээсээ өмнө экспортлохоо мартуузай. .sql Файлуудыг хүссэн үедээ сэргээх боломжтой байхаар хадгалдаг.

  2. Шалгах хуудасны бүтэц Гадаад түлхүүр байгаа эсэхийг шалгахын тулд дараах командыг ашиглана уу:

    SHOW CREATE TABLE `你的表名`;
    
  3. Хөрвүүлэлт хийх 使用 ALTER TABLE Эсвэл хөрвүүлэлтийг дуусгахын тулд багц скриптүүдийг ашиглаж болно.

  4. Эрүүл мэндийн байдлыг шалгах Хөрвүүлэлт дууссаны дараа дараах тушаалыг ажиллуулна уу:

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

    Энэ нь хүснэгт зөв ажиллаж байгааг баталгаажуулж, фрагментүүдийг гаргана.

Урвуу нөхөн сэргээх арга

Хэрэв хөрвүүлэлтийн дараа гүйцэтгэлийн бууралт эсвэл бизнесийн логикийн асуудал ажиглагдвал та хүссэн үедээ InnoDB руу буцаж шилжиж болно:

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

Үүнийг "буцаах үйлдэл" гэж нэрлэдэг бөгөөд энэ нь танд гарах гарцыг өгдөг.

Эрх бүхий үзэл бодлыг иш татсан

Дагуу MySQL албан ёсны баримт бичиг Тайлбар:

"Гадаад түлхүүрийн бүтэц"aints нь зөвхөн InnoDB-ээр дэмжигддэг. Хэрэв та хүснэгтийг MyISAM руу хөрвүүлбэл бүх гадаад түлхүүрүүд үл тоомсорлогдох болно.
——MySQL лавлах гарын авлага, 14.6.6-р бүлэг Гадаад түлхүүрийн хязгаарлалтууд

Энэ мэдэгдэл нь гадаад түлхүүрүүд MyISAM дээр бүрэн хүчингүй гэдгийг бидэнд тодорхой хэлж байна.

MariaDB-ийн албан ёсны баримт бичиг Мөн дараах зүйлийг онцолсон:

"MyISAM нь гүйлгээг дэмждэггүй. Гүйлгээний бүрэн бүтэн байдалд тулгуурласан програмууд MyISAM ашиглах ёсгүй."
——MariaDB Мэдлэгийн сан, Хадгалах хөдөлгүүрүүд

Тийм учраас та өөрчлөлт хийхээсээ өмнө хоёр удаа бодох хэрэгтэй.

Миний үзэл бодол ба дүгнэлт

InnoDB-г MyISAM болгон хөрвүүлэх нь тансаг зэрэглэлийн машины хөдөлгүүрийг ачааны машины хөдөлгүүрээр солихтой адил юм.

Энэ нь ажиллаж чадна, гэхдээ энэ нь огт өөр аргаар ажилладаг.

Хэрэв танай бизнест статистикийн хөнгөн асуулга багтдаг бол MyISAM-ийн хурд болон энгийн байдал илүү тохиромжтой байж магадгүй юм.

Гэсэн хэдий ч, хэрэв таны систем гүйлгээ болон гадаад түлхүүрүүдээс хамааралтай бол тэдгээрийг яаран хөрвүүлэх нь аюулгүйн дэрийг авахтай адил юм.

Тиймээс жинхэнэ мэргэн ухаан нь хурдыг сохроор хөөцөлдөхөд биш, харин тогтвортой байдал ба гүйцэтгэлийг тэнцвэржүүлэхэд оршино.

Өгөгдлийн сангийн сонголт нь системийн мөн чанарыг тодорхойлдог.

Хадгалах хөдөлгүүрийг солих ур чадварыг эзэмших нь зөвхөн техникийн чадварыг харуулах төдийгүй архитектурын сэтгэлгээг дээшлүүлэх явдал юм.

Хэрэв та бөөнөөр нь хөрвүүлэх талаар бодож байгаа бол эхлээд эрсдлийн цогц үнэлгээ хийнэ үү.

Бодит бизнесийн нөхцөл байдлыг дуурайлган туршилтын орчныг нэг удаа ажиллуул.

Бүх зүйл зөв эсэхийг баталгаажуулсны дараа үйлдвэрлэлийн орчинд командыг гүйцэтгэнэ үү.

Мэдээллийн сан нь тоглоом биш; тэдгээр нь байгууллагын өгөгдлийн гол цөм юм.

Мөн та зүрхнийхээ хэмнэлийг хянадаг хүн нь юм.

Hope Chen Weiliang блог ( https://www.chenweiliang.com/ Энд хуваалцсан "MySQL/MariaDB мэдээллийн сан дахь InnoDB хүснэгтүүдийг MyISAM хүснэгт болгон хэрхэн багцаар хөрвүүлэх вэ?" нийтлэл танд тустай байж магадгүй юм.

Энэ нийтлэлийн холбоосыг хуваалцахад тавтай морилно уу:https://www.chenweiliang.com/cwl-34157.html

Илүү олон далд заль мэхийг нээхийн тулд манай Telegram сувагт нэгдэнэ үү!

Хэрэв танд таалагдвал лайк дарж, хуваалцаарай! Таны шэйр, лайк бол бидний байнгын урам зориг юм!

 

发表 评论

Таны имэйл хаягийг нийтлэхгүй. 必填 项 已 用 дээр ажиллаж байна * 标注

Нийтлэлийн лавлах
TOP хүртэл гүйлгэж