ວິທີການຕັ້ງຄ່າຖານຂໍ້ມູນ MySQL/MariaDB ເພື່ອປ່ຽນຕາຕະລາງ InnoDB ເປັນຕາຕະລາງ MyISAM ເປັນຊຸດ?

ເຄື່ອງຈັກເກັບຮັກສາຂໍ້ມູນຂອງຕາຕະລາງຖານຂໍ້ມູນແມ່ນຄືກັບເຄື່ອງຈັກຂອງລົດ; ການປ່ຽນເຄື່ອງຈັກທັນທີຈະປ່ຽນແປງປະສິດທິພາບ ແລະ ຄຸນລັກສະນະຕ່າງໆ. ຫຼາຍຄົນຄິດວ່າຖານຂໍ້ມູນແມ່ນສຳລັບເກັບຮັກສາຂໍ້ມູນເທົ່ານັ້ນ, ແຕ່ທ່ານຈະຄົ້ນພົບຄວາມສັບສົນທີ່ເຊື່ອງໄວ້ເມື່ອທ່ານພະຍາຍາມ ປ່ຽນ InnoDB ເປັນ MyISAM ເທົ່ານັ້ນ.

ເປັນຫຍັງຄົນຈຶ່ງຢາກປ່ຽນຈາກ InnoDB ໄປ MyISAM?

ໃນຫຼາຍໆສະຖານະການ, MyISAM ແມ່ນໄວກວ່າ, ໂດຍສະເພາະສຳລັບແອັບພລິເຄຊັນທີ່ອ່ານຫຼາຍ ແລະ ຂຽນງ່າຍ ເຊັ່ນ: ຖານຂໍ້ມູນບັນທຶກ ແລະ ສະຖິຕິ.

ກົນໄກການລັອກລະດັບໂຕະຂອງມັນເຮັດວຽກໄດ້ຢ່າງລຽບງ່າຍພາຍໃຕ້ການເຮັດວຽກພ້ອມກັນຕໍ່າ.

ຍິ່ງໄປກວ່ານັ້ນ, ການເກັບຮັກສາໄຟລ໌ຂອງ MyISAM ແມ່ນງ່າຍດາຍກວ່າ; ໜຶ່ງ .MYD ເກັບຮັກສາຂໍ້ມູນ, ໜຶ່ງ .MYI ການເກັບຮັກສາດັດຊະນີ, ການຍ້າຍຂໍ້ມູນ, ແລະ ການສຳຮອງຂໍ້ມູນລ້ວນແຕ່ສະດວກຫຼາຍ.

ເຖິງຢ່າງໃດກໍ່ຕາມ, ການເຮັດທຸລະກຳ ແລະ ການສະໜັບສະໜູນຄີຕ່າງປະເທດຂອງ InnoDB ເກືອບຈະເປັນສິ່ງຈຳເປັນໃນສະຖານະການທຸລະກິດທີ່ສັບສົນ.

ດັ່ງນັ້ນ, ທ່ານຕ້ອງຄິດໄລ່ອອກວ່າທຸລະກິດຂອງທ່ານຕ້ອງການຄຸນສົມບັດເຫຼົ່ານີ້ແທ້ຫຼືບໍ່ກ່ອນທີ່ຈະເຮັດການປ່ຽນແປງ.

ຄຳສັ່ງຫຼັກ: ALTER TABLE

ການແປງຕາຕະລາງດຽວຈາກ InnoDB ໄປເປັນ MyISAM, ທ່ານພຽງແຕ່ຕ້ອງການລະຫັດໜຶ່ງແຖວເທົ່ານັ້ນ:

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

ຫຼັງຈາກການປະຕິບັດສຳເລັດແລ້ວ, ເຄື່ອງຈັກເກັບຮັກສາຂໍ້ມູນຂອງຕາຕະລາງຈະຖືກປ່ຽນ.

ມັນບໍ່ຊັດເຈນບໍ?

ການແປງແບບເປັນຊຸດ: ການສ້າງສະຄຣິບອັດຕະໂນມັດ

ຖ້າທ່ານມີຕາຕະລາງຫຼາຍສິບ ຫຼື ຫຼາຍຮ້ອຍຕາຕະລາງ, ການດັດແປງພວກມັນດ້ວຍຕົນເອງແມ່ນບໍ່ສາມາດປະຕິບັດໄດ້.

ໃນຈຸດນີ້, ຄຳຖາມດຽວສາມາດໃຊ້ເພື່ອສ້າງຄຳສັ່ງການປ່ຽນແປງແບບ batch ໂດຍອັດຕະໂນມັດໄດ້:

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

ຫຼັງຈາກແລ່ນແລ້ວ, ມັນຈະສົ່ງຜົນອອກມາຫຼາຍຢ່າງ... ALTER TABLE ... ຖະແຫຼງການ.

ຄັດລອກຄຳສັ່ງເຫຼົ່ານີ້ ແລະ ປະຕິບັດພວກມັນທັງໝົດໃນເທື່ອດຽວເພື່ອໃຫ້ການແປງເປັນຊຸດສຳເລັດໃນເທື່ອດຽວ.

ນີ້ແມ່ນສິ່ງທີ່ເອີ້ນວ່າ "ການແປງແບບ batch ອັດຕະໂນມັດ".

ການປະເມີນຄວາມສ່ຽງກ່ອນການປ່ຽນແປງ

ວິທີການຕັ້ງຄ່າຖານຂໍ້ມູນ MySQL/MariaDB ເພື່ອປ່ຽນຕາຕະລາງ InnoDB ເປັນຕາຕະລາງ MyISAM ເປັນຊຸດ?

ຂໍ້ຈຳກັດທີ່ສຳຄັນຕ່າງປະເທດ

InnoDB ຮອງຮັບຄີຕ່າງປະເທດ, ໃນຂະນະທີ່ MyISAM ບໍ່ຮອງຮັບພວກມັນເລີຍ.

ເມື່ອປ່ຽນແລ້ວ, ຂໍ້ຈຳກັດຂອງ foreign key ຈະຖືກຍົກເລີກໂດຍກົງ.

ຖ້າທຸລະກິດຂອງທ່ານອາໄສການລຶບ ຫຼື ການອັບເດດແບບຕໍ່ເນື່ອງ, ເຫດຜົນຈະລົ້ມເຫຼວຢ່າງສິ້ນເຊີງຫຼັງຈາກການປ່ຽນໃຈເຫລື້ອມໃສ.

ການສະໜັບສະໜູນທຸລະກຳ

InnoDB ມີທຸລະກໍາ ແລະ ສະຫນັບສະຫນູນພວກມັນ. COMMIT 和 ROLLBACK.

MyISAM ບໍ່ມີທຸລະກໍາ, ມີພຽງແຕ່ການລັອກລະດັບຕາຕະລາງເທົ່ານັ້ນ.

ຫຼັງຈາກການປ່ຽນແປງ, ລະຫັດທີ່ກ່ຽວຂ້ອງກັບທຸລະກໍາທັງໝົດຈະບໍ່ຖືກຕ້ອງ, ແລະ ການຍ້ອນກັບຈະເປັນໄປບໍ່ໄດ້ໃນກໍລະນີມີຂໍ້ຍົກເວັ້ນ.

ປະສິດທິພາບການເຮັດວຽກພ້ອມກັນ

InnoDB ໃຊ້ການລັອກລະດັບແຖວ, ໃນຂະນະທີ່ MyISAM ໃຊ້ການລັອກລະດັບຕາຕະລາງ.

ໃນສະຖານະການທີ່ມີການໃຊ້ງານຮ່ວມກັນສູງ, MyISAM ມັກຈະລັອກຕາຕະລາງ, ເຊິ່ງນຳໄປສູ່ບັນຫາດ້ານປະສິດທິພາບ.

ຄຸນສົມບັດດັດຊະນີ

ກ່ອນ MySQL 5.6, MyISAM ມີດັດຊະນີຂໍ້ຄວາມເຕັມທີ່ເປັນເອກະລັກ.

ເຖິງຢ່າງໃດກໍ່ຕາມ, ໃນ MySQL 5.6+ ແລະ MariaDB 10+, InnoDB ຮອງຮັບການຈັດດັດສະນີຂໍ້ຄວາມເຕັມຮູບແບບແລ້ວ.

ດັ່ງນັ້ນ, ເວັ້ນເສຍແຕ່ວ່າທ່ານກຳລັງໃຊ້ເວີຊັນເກົ່າ, ບໍ່ຈຳເປັນຕ້ອງປ່ຽນໄປໃຊ້ MyISAM ສຳລັບການຈັດດັດສະນີຂໍ້ຄວາມເຕັມຮູບແບບ.

ຂະບວນການປະຕິບັດທີ່ດີທີ່ສຸດ

  1. ສຳຮອງຂໍ້ມູນ ກ່ອນທີ່ຈະແປງ, ໃຫ້ແນ່ໃຈວ່າໄດ້ສົ່ງອອກ. .sql ໄຟລ໌ຕ່າງໆຖືກເກັບຮັກສາໄວ້ເພື່ອຮັບປະກັນວ່າພວກມັນສາມາດຟື້ນຟູໄດ້ທຸກເວລາ.

  2. ກວດສອບໂຄງສ້າງຕາຕະລາງ ໂດຍໃຊ້ຄຳສັ່ງຕໍ່ໄປນີ້ເພື່ອເບິ່ງວ່າມີຄີຕ່າງປະເທດຫຼືບໍ່:

    SHOW CREATE TABLE `你的表名`;
    
  3. ປະຕິບັດການແປງ ການນໍາໃຊ້ ALTER TABLE ອີກທາງເລືອກໜຶ່ງ, ສະຄຣິບແບບ batch ສາມາດໃຊ້ເພື່ອເຮັດສຳເລັດການແປງໄດ້.

  4. ກວດສອບສະຖານະພາບສຸຂະພາບ . ຫຼັງຈາກການແປງ, ໃຫ້ດໍາເນີນການ:

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

    ນີ້ຢືນຢັນວ່າຕາຕະລາງເຮັດວຽກຢ່າງຖືກຕ້ອງ ແລະ ປ່ອຍຊິ້ນສ່ວນຕ່າງໆອອກມາ.

ວິທີການກູ້ຄືນແບບປີ້ນກັບກັນ

ຖ້າການເສື່ອມໂຊມຂອງປະສິດທິພາບ ຫຼື ບັນຫາທາງທຸລະກິດຖືກສັງເກດເຫັນຫຼັງຈາກການປ່ຽນ, ທ່ານສາມາດປ່ຽນກັບໄປໃຊ້ InnoDB ໄດ້ທຸກເວລາ:

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

ນີ້ແມ່ນສິ່ງທີ່ເອີ້ນວ່າ "ການດໍາເນີນງານປີ້ນກັບກັນ", ເຊິ່ງເປີດທາງອອກໃຫ້ທ່ານ.

ທັດສະນະທີ່ມີສິດອຳນາດທີ່ອ້າງອີງ

ອີງຕາມ ເອກະສານ MySQL ຢ່າງເປັນທາງການ :

"ໂຄງສ້າງກະແຈຕ່າງປະເທດ"aints ຮອງຮັບໂດຍ InnoDB ເທົ່ານັ້ນ. ຖ້າທ່ານປ່ຽນຕາຕະລາງເປັນ MyISAM, ຄີຕ່າງປະເທດທັງໝົດຈະຖືກລະເລີຍ.
——ຄູ່ມືອ້າງອີງ MySQL, ບົດທີ 14.6.6 ຂໍ້ຈຳກັດຂອງ Foreign Key

ຖະແຫຼງການນີ້ບອກພວກເຮົາຢ່າງຊັດເຈນວ່າຄີຕ່າງປະເທດບໍ່ຖືກຕ້ອງທັງໝົດໃນ MyISAM.

ເອ ກະສານທາງການຂອງ MariaDB ຍັງເນັ້ນໜັກວ່າ:

"MyISAM ບໍ່ຮອງຮັບການເຮັດທຸລະກຳ. ແອັບພລິເຄຊັນທີ່ອີງໃສ່ຄວາມສົມບູນຂອງການເຮັດທຸລະກຳບໍ່ຄວນໃຊ້ MyISAM."
——ຖານຄວາມຮູ້ MariaDB, ເຄື່ອງຈັກເກັບຮັກສາ

ນັ້ນແມ່ນເຫດຜົນທີ່ເຈົ້າຕ້ອງຄິດສອງຄັ້ງກ່ອນທີ່ຈະປ່ຽນ.

ທັດສະນະແລະບົດສະຫຼຸບຂອງຂ້ອຍ

ການປ່ຽນ InnoDB ໄປເປັນ MyISAM ແມ່ນຄ້າຍຄືກັບການປ່ຽນເຄື່ອງຈັກຂອງລົດຫລູຫລາດ້ວຍເຄື່ອງຈັກລົດບັນທຸກ.

ມັນສາມາດແລ່ນໄດ້, ແຕ່ມັນແລ່ນໃນແບບທີ່ແຕກຕ່າງກັນໝົດ.

ຖ້າທຸລະກິດຂອງທ່ານກ່ຽວຂ້ອງກັບການສອບຖາມທາງສະຖິຕິທີ່ມີນ້ຳໜັກເບົາ, ຄວາມໄວ ແລະ ຄວາມລຽບງ່າຍຂອງ MyISAM ອາດຈະເໝາະສົມກວ່າ.

ເຖິງຢ່າງໃດກໍ່ຕາມ, ຖ້າລະບົບຂອງທ່ານອາໄສການເຮັດທຸລະກຳ ແລະ ກະແຈຕ່າງປະເທດ, ການປ່ຽນພວກມັນຢ່າງຮີບດ່ວນແມ່ນຄືກັບການຖອດຖົງລົມນິລະໄພອອກ.

ດັ່ງນັ້ນ, ປັນຍາທີ່ແທ້ຈິງບໍ່ໄດ້ຢູ່ທີ່ການໄລ່ຕາມຄວາມໄວຢ່າງບໍ່ຢຸດຢັ້ງ, ແຕ່ຢູ່ທີ່ການດຸ່ນດ່ຽງຄວາມໝັ້ນຄົງ ແລະ ປະສິດທິພາບ.

ການເລືອກຖານຂໍ້ມູນກຳນົດຈິດວິນຍານຂອງລະບົບ.

ການເປັນແມ່ບົດໃນທັກສະການປ່ຽນເຄື່ອງຈັກເກັບຮັກສາບໍ່ພຽງແຕ່ເປັນການສະແດງໃຫ້ເຫັນເຖິງຄວາມສາມາດດ້ານເຕັກນິກເທົ່ານັ້ນ, ແຕ່ຍັງເປັນການຍົກລະດັບຄວາມຄິດດ້ານສະຖາປັດຕະຍະກຳອີກດ້ວຍ.

ຖ້າທ່ານກຳລັງພິຈາລະນາການປ່ຽນເປັນຈຳນວນຫຼາຍ, ກະລຸນາດຳເນີນການປະເມີນຄວາມສ່ຽງຢ່າງລະອຽດກ່ອນ.

ດໍາເນີນການທົດສອບສະພາບແວດລ້ອມໜຶ່ງຄັ້ງເພື່ອຈໍາລອງສະຖານະການທາງທຸລະກິດຕົວຈິງ.

ຫຼັງຈາກຢືນຢັນວ່າທຸກຢ່າງຖືກຕ້ອງແລ້ວ, ໃຫ້ປະຕິບັດຄໍາສັ່ງໃນສະພາບແວດລ້ອມການຜະລິດ.

ຖານຂໍ້ມູນບໍ່ແມ່ນຂອງຫຼິ້ນ; ພວກມັນແມ່ນຫົວໃຈຂອງຂໍ້ມູນຂອງວິສາຫະກິດ.

ແລະ ເຈົ້າຄືຜູ້ທີ່ຄວບຄຸມຈັງຫວະຂອງຫົວໃຈຂອງເຈົ້າ.

ຫວັງວ່າ ບົດຄວາມ "ວິທີການປ່ຽນຕາຕະລາງ InnoDB ເປັນຕາຕະລາງ MyISAM ໃນຖານຂໍ້ມູນ MySQL/MariaDB ເປັນຊຸດ?" ທີ່ແບ່ງປັນໃນ ບລັອກຂອງ Chen Weiliang ( https://www.chenweiliang.com/ ) ຈະເປັນປະໂຫຍດຕໍ່ທ່ານ.

ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະແບ່ງປັນລິ້ງຂອງບົດຄວາມນີ້: https://www.chenweiliang.com/cwl-34157.html

ເພື່ອປົດລັອກເຄັດລັບທີ່ເຊື່ອງໄວ້ເພີ່ມເຕີມ🔑, ຍິນດີຕ້ອນຮັບເຂົ້າສູ່ຊ່ອງ Telegram ຂອງພວກເຮົາ!

Share and like ຖ້າທ່ານມັກມັນ! ການແບ່ງປັນ ແລະຖືກໃຈຂອງເຈົ້າເປັນແຮງຈູງໃຈຢ່າງຕໍ່ເນື່ອງຂອງພວກເຮົາ!

 

评论评论

您的邮箱地址不会被公开。必填项已用*标注

ເລື່ອນໄປທາງເທີງ