ລາຍການຫົວເລື່ອງ
ເຄື່ອງຈັກເກັບຮັກສາຂໍ້ມູນຂອງຕາຕະລາງຖານຂໍ້ມູນແມ່ນຄືກັບເຄື່ອງຈັກຂອງລົດ; ການປ່ຽນເຄື່ອງຈັກທັນທີຈະປ່ຽນແປງປະສິດທິພາບ ແລະ ຄຸນລັກສະນະຕ່າງໆ. ຫຼາຍຄົນຄິດວ່າຖານຂໍ້ມູນແມ່ນສຳລັບເກັບຮັກສາຂໍ້ມູນເທົ່ານັ້ນ, ແຕ່ທ່ານຈະຄົ້ນພົບຄວາມສັບສົນທີ່ເຊື່ອງໄວ້ເມື່ອທ່ານພະຍາຍາມ ປ່ຽນ 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 ອັດຕະໂນມັດ".
ການປະເມີນຄວາມສ່ຽງກ່ອນການປ່ຽນແປງ

ຂໍ້ຈຳກັດທີ່ສຳຄັນຕ່າງປະເທດ
InnoDB ຮອງຮັບຄີຕ່າງປະເທດ, ໃນຂະນະທີ່ MyISAM ບໍ່ຮອງຮັບພວກມັນເລີຍ.
ເມື່ອປ່ຽນແລ້ວ, ຂໍ້ຈຳກັດຂອງ foreign key ຈະຖືກຍົກເລີກໂດຍກົງ.
ຖ້າທຸລະກິດຂອງທ່ານອາໄສການລຶບ ຫຼື ການອັບເດດແບບຕໍ່ເນື່ອງ, ເຫດຜົນຈະລົ້ມເຫຼວຢ່າງສິ້ນເຊີງຫຼັງຈາກການປ່ຽນໃຈເຫລື້ອມໃສ.
ການສະໜັບສະໜູນທຸລະກຳ
InnoDB ມີທຸລະກໍາ ແລະ ສະຫນັບສະຫນູນພວກມັນ. COMMIT 和 ROLLBACK.
MyISAM ບໍ່ມີທຸລະກໍາ, ມີພຽງແຕ່ການລັອກລະດັບຕາຕະລາງເທົ່ານັ້ນ.
ຫຼັງຈາກການປ່ຽນແປງ, ລະຫັດທີ່ກ່ຽວຂ້ອງກັບທຸລະກໍາທັງໝົດຈະບໍ່ຖືກຕ້ອງ, ແລະ ການຍ້ອນກັບຈະເປັນໄປບໍ່ໄດ້ໃນກໍລະນີມີຂໍ້ຍົກເວັ້ນ.
ປະສິດທິພາບການເຮັດວຽກພ້ອມກັນ
InnoDB ໃຊ້ການລັອກລະດັບແຖວ, ໃນຂະນະທີ່ MyISAM ໃຊ້ການລັອກລະດັບຕາຕະລາງ.
ໃນສະຖານະການທີ່ມີການໃຊ້ງານຮ່ວມກັນສູງ, MyISAM ມັກຈະລັອກຕາຕະລາງ, ເຊິ່ງນຳໄປສູ່ບັນຫາດ້ານປະສິດທິພາບ.
ຄຸນສົມບັດດັດຊະນີ
ກ່ອນ MySQL 5.6, MyISAM ມີດັດຊະນີຂໍ້ຄວາມເຕັມທີ່ເປັນເອກະລັກ.
ເຖິງຢ່າງໃດກໍ່ຕາມ, ໃນ MySQL 5.6+ ແລະ MariaDB 10+, InnoDB ຮອງຮັບການຈັດດັດສະນີຂໍ້ຄວາມເຕັມຮູບແບບແລ້ວ.
ດັ່ງນັ້ນ, ເວັ້ນເສຍແຕ່ວ່າທ່ານກຳລັງໃຊ້ເວີຊັນເກົ່າ, ບໍ່ຈຳເປັນຕ້ອງປ່ຽນໄປໃຊ້ MyISAM ສຳລັບການຈັດດັດສະນີຂໍ້ຄວາມເຕັມຮູບແບບ.
ຂະບວນການປະຕິບັດທີ່ດີທີ່ສຸດ
ສຳຮອງຂໍ້ມູນ ກ່ອນທີ່ຈະແປງ, ໃຫ້ແນ່ໃຈວ່າໄດ້ສົ່ງອອກ.
.sqlໄຟລ໌ຕ່າງໆຖືກເກັບຮັກສາໄວ້ເພື່ອຮັບປະກັນວ່າພວກມັນສາມາດຟື້ນຟູໄດ້ທຸກເວລາ.ກວດສອບໂຄງສ້າງຕາຕະລາງ ໂດຍໃຊ້ຄຳສັ່ງຕໍ່ໄປນີ້ເພື່ອເບິ່ງວ່າມີຄີຕ່າງປະເທດຫຼືບໍ່:
SHOW CREATE TABLE `你的表名`;ປະຕິບັດການແປງ ການນໍາໃຊ້
ALTER TABLEອີກທາງເລືອກໜຶ່ງ, ສະຄຣິບແບບ batch ສາມາດໃຊ້ເພື່ອເຮັດສຳເລັດການແປງໄດ້.ກວດສອບສະຖານະພາບສຸຂະພາບ . ຫຼັງຈາກການແປງ, ໃຫ້ດໍາເນີນການ:
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
