ಲೇಖನ ಡೈರೆಕ್ಟರಿ
ಡೇಟಾಬೇಸ್ ಟೇಬಲ್ನ ಶೇಖರಣಾ ಎಂಜಿನ್ ಕಾರಿನ ಎಂಜಿನ್ನಂತಿದೆ; ಎಂಜಿನ್ ಅನ್ನು ಬದಲಾಯಿಸುವುದರಿಂದ ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಗುಣಲಕ್ಷಣಗಳು ತಕ್ಷಣವೇ ಬದಲಾಗುತ್ತವೆ. ಡೇಟಾಬೇಸ್ ಕೇವಲ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಎಂದು ಅನೇಕ ಜನರು ಭಾವಿಸುತ್ತಾರೆ, ಆದರೆ ನೀವು ನಿಜವಾಗಿಯೂ ಅದರ ಮೇಲೆ ಕೆಲಸ ಮಾಡಲು ಪ್ರಾರಂಭಿಸಿದಾಗ... ಇನ್ನೋಡಿಬಿ 转成 ಮೈಸಾಮ್ಆಗ ಮಾತ್ರ ಅದರ ಹಿಂದಿನ ಗುಪ್ತ ರಹಸ್ಯಗಳನ್ನು ನೀವು ಕಂಡುಕೊಳ್ಳುವಿರಿ.
ಯಾರಾದರೂ InnoDB ಯಿಂದ MyISAM ಗೆ ಬದಲಾಯಿಸಲು ಏಕೆ ಬಯಸುತ್ತಾರೆ?
ಅನೇಕ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ, MyISAM ವೇಗವಾಗಿರುತ್ತದೆ, ವಿಶೇಷವಾಗಿ ಲಾಗ್ ಮತ್ತು ಅಂಕಿಅಂಶಗಳ ಡೇಟಾಬೇಸ್ಗಳಂತಹ ಓದಲು-ಭಾರೀ ಮತ್ತು ಬರೆಯಲು-ಬೆಳಕಿನ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ.
ಇದರ ಟೇಬಲ್-ಲೆವೆಲ್ ಲಾಕಿಂಗ್ ಕಾರ್ಯವಿಧಾನವು ಕಡಿಮೆ ಏಕಕಾಲಿಕತೆಯಲ್ಲಿಯೂ ಸಹ ಬಹಳ ಸರಾಗವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.
ಇದಲ್ಲದೆ, MyISAM ನ ಫೈಲ್ ಸಂಗ್ರಹಣೆಯು ಹೆಚ್ಚು ಅರ್ಥಗರ್ಭಿತವಾಗಿದೆ; ಒಂದು .MYD ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಿ, ಒಂದು .MYI ಸೂಚ್ಯಂಕಗಳನ್ನು ಸಂಗ್ರಹಿಸುವುದು, ವಲಸೆ ಹೋಗುವುದು ಮತ್ತು ಬ್ಯಾಕಪ್ ಮಾಡುವುದು ಎಲ್ಲವೂ ತುಂಬಾ ಅನುಕೂಲಕರವಾಗಿದೆ.
ಆದಾಗ್ಯೂ, ಸಂಕೀರ್ಣ ವ್ಯವಹಾರ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ InnoDB ಯ ವಹಿವಾಟು ಮತ್ತು ವಿದೇಶಿ ಕೀ ಬೆಂಬಲವು ಬಹುತೇಕ ಅವಶ್ಯಕವಾಗಿದೆ.
ಆದ್ದರಿಂದ, ಪರಿವರ್ತನೆ ಮಾಡುವ ಮೊದಲು ನಿಮ್ಮ ವ್ಯವಹಾರಕ್ಕೆ ಈ ವೈಶಿಷ್ಟ್ಯಗಳು ನಿಜವಾಗಿಯೂ ಅಗತ್ಯವಿದೆಯೇ ಎಂದು ನೀವು ಲೆಕ್ಕಾಚಾರ ಮಾಡಬೇಕು.
ಕೋರ್ ಆಜ್ಞೆ: ALTER TABLE
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 ಅವುಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ.
ಒಮ್ಮೆ ಪರಿವರ್ತಿಸಿದ ನಂತರ, ವಿದೇಶಿ ಕೀ ನಿರ್ಬಂಧಗಳನ್ನು ನೇರವಾಗಿ ತ್ಯಜಿಸಲಾಗುತ್ತದೆ.
ನಿಮ್ಮ ವ್ಯವಹಾರವು ಕ್ಯಾಸ್ಕೇಡಿಂಗ್ ಅಳಿಸುವಿಕೆಗಳು ಅಥವಾ ನವೀಕರಣಗಳನ್ನು ಅವಲಂಬಿಸಿದ್ದರೆ, ಪರಿವರ್ತನೆಯ ನಂತರ ತರ್ಕವು ಸಂಪೂರ್ಣವಾಗಿ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ.
ವಹಿವಾಟು ಬೆಂಬಲ
ಇನ್ನೋಡಿಬಿ ವಹಿವಾಟುಗಳನ್ನು ಹೊಂದಿದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. COMMIT 和 ROLLBACK.
MyISAM ಯಾವುದೇ ವಹಿವಾಟುಗಳನ್ನು ಹೊಂದಿಲ್ಲ, ಟೇಬಲ್-ಮಟ್ಟದ ಲಾಕ್ಗಳನ್ನು ಮಾತ್ರ ಹೊಂದಿದೆ.
ಪರಿವರ್ತನೆಯ ನಂತರ, ಎಲ್ಲಾ ವಹಿವಾಟು-ಸಂಬಂಧಿತ ಕೋಡ್ಗಳು ಅಮಾನ್ಯವಾಗುತ್ತವೆ ಮತ್ತು ವಿನಾಯಿತಿಯ ಸಂದರ್ಭದಲ್ಲಿ ರೋಲ್ಬ್ಯಾಕ್ ಅಸಾಧ್ಯ.
ಸಮಕಾಲೀನ ಕಾರ್ಯಕ್ಷಮತೆ
InnoDB ಸಾಲು-ಮಟ್ಟದ ಲಾಕಿಂಗ್ ಅನ್ನು ಬಳಸುತ್ತದೆ, ಆದರೆ MyISAM ಟೇಬಲ್-ಮಟ್ಟದ ಲಾಕಿಂಗ್ ಅನ್ನು ಬಳಸುತ್ತದೆ.
ಹೆಚ್ಚಿನ-ಸಮನ್ವಯ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ, MyISAM ಆಗಾಗ್ಗೆ ಟೇಬಲ್ಗಳನ್ನು ಲಾಕ್ ಮಾಡುತ್ತದೆ, ಇದು ಕಾರ್ಯಕ್ಷಮತೆಯ ಅಡಚಣೆಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
ಸೂಚ್ಯಂಕ ವೈಶಿಷ್ಟ್ಯಗಳು
ಇನ್ MySQL ಆವೃತ್ತಿ 5.6 ಕ್ಕಿಂತ ಮೊದಲು, MyISAM ತನ್ನದೇ ಆದ ಪೂರ್ಣ-ಪಠ್ಯ ಸೂಚಿಯನ್ನು ಹೊಂದಿತ್ತು.
ಆದರೆ ಒಳಗೆ MySQL MariaDB ಮತ್ತು InnoDB ಯ 5.6 ಮತ್ತು 10+ ಆವೃತ್ತಿಗಳಲ್ಲಿ ಪೂರ್ಣ-ಪಠ್ಯ ಸೂಚಿಕೆ ಈಗಾಗಲೇ ಬೆಂಬಲಿತವಾಗಿದೆ.
ಆದ್ದರಿಂದ, ನೀವು ಹಳೆಯ ಆವೃತ್ತಿಯನ್ನು ಬಳಸುತ್ತಿಲ್ಲದಿದ್ದರೆ, ಪೂರ್ಣ-ಪಠ್ಯ ಸೂಚಿಕೆಗಾಗಿ MyISAM ಗೆ ಬದಲಾಯಿಸುವ ಅಗತ್ಯವಿಲ್ಲ.
ಅತ್ಯುತ್ತಮ ಅಭ್ಯಾಸ ಪ್ರಕ್ರಿಯೆ
ಬ್ಯಾಕಪ್ ಡೇಟಾ ಪರಿವರ್ತಿಸುವ ಮೊದಲು, ರಫ್ತು ಮಾಡಲು ಮರೆಯದಿರಿ.
.sqlಯಾವುದೇ ಸಮಯದಲ್ಲಿ ಅವುಗಳನ್ನು ಮರುಸ್ಥಾಪಿಸಬಹುದೆಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಫೈಲ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ.ಪರಿಶೀಲನಾಪಟ್ಟಿ ರಚನೆ ವಿದೇಶಿ ಕೀ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಲು ಈ ಕೆಳಗಿನ ಆಜ್ಞೆಯನ್ನು ಬಳಸಿ:
SHOW CREATE TABLE `你的表名`;ಪರಿವರ್ತನೆ ಮಾಡಿ 使用
ALTER TABLEಪರ್ಯಾಯವಾಗಿ, ಪರಿವರ್ತನೆಯನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಬ್ಯಾಚ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳನ್ನು ಬಳಸಬಹುದು.ಆರೋಗ್ಯ ಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಿ ಪರಿವರ್ತನೆ ಪೂರ್ಣಗೊಂಡ ನಂತರ, ಚಲಾಯಿಸಿ:
CHECK TABLE `你的表名`; OPTIMIZE TABLE `你的表名`;ಇದು ಟೇಬಲ್ ಸರಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿದೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ ಮತ್ತು ತುಣುಕುಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡುತ್ತದೆ.
ರಿವರ್ಸ್ ರಿಕವರಿ ವಿಧಾನ
ಪರಿವರ್ತನೆಯ ನಂತರ ಕಾರ್ಯಕ್ಷಮತೆಯ ಕುಸಿತ ಅಥವಾ ವ್ಯವಹಾರ ತರ್ಕದ ಸಮಸ್ಯೆಗಳು ಕಂಡುಬಂದರೆ, ನೀವು ಯಾವುದೇ ಸಮಯದಲ್ಲಿ InnoDB ಗೆ ಹಿಂತಿರುಗಬಹುದು:
ALTER TABLE `你的表名` ENGINE = InnoDB;
ಇದನ್ನೇ "ರಿವರ್ಸಿಬಲ್ ಆಪರೇಷನ್" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಇದು ನಿಮಗೆ ಒಂದು ಮಾರ್ಗವನ್ನು ನೀಡುತ್ತದೆ.
ಉಲ್ಲೇಖಿಸಲಾದ ಅಧಿಕೃತ ದೃಷ್ಟಿಕೋನಗಳು
ಪ್ರಕಾರ MySQL ಅಧಿಕೃತ ದಸ್ತಾವೇಜೀಕರಣ ವಿವರಣೆ:
"ವಿದೇಶಿ ಕೀಲಿ ವಿನ್ಯಾಸ"aints ಅನ್ನು InnoDB ಮಾತ್ರ ಬೆಂಬಲಿಸುತ್ತದೆ. ನೀವು ಟೇಬಲ್ ಅನ್ನು MyISAM ಗೆ ಪರಿವರ್ತಿಸಿದರೆ, ಎಲ್ಲಾ ವಿದೇಶಿ ಕೀಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ.
——MySQL ಉಲ್ಲೇಖ ಕೈಪಿಡಿ, ಅಧ್ಯಾಯ 14.6.6 ವಿದೇಶಿ ಕೀ ನಿರ್ಬಂಧಗಳು
ಈ ಹೇಳಿಕೆಯು MyISAM ನಲ್ಲಿ ವಿದೇಶಿ ಕೀಗಳು ಸಂಪೂರ್ಣವಾಗಿ ಅಮಾನ್ಯವಾಗಿವೆ ಎಂದು ಸ್ಪಷ್ಟವಾಗಿ ಹೇಳುತ್ತದೆ.
ಮತ್ತು ಮಾರಿಯಾಡಿಬಿ ಅಧಿಕೃತ ದಾಖಲೆ ಇದಲ್ಲದೆ, ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒತ್ತಿ ಹೇಳಲಾಯಿತು:
"MyISAM ವಹಿವಾಟುಗಳನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ. ವಹಿವಾಟಿನ ಸಮಗ್ರತೆಯನ್ನು ಅವಲಂಬಿಸಿರುವ ಅಪ್ಲಿಕೇಶನ್ಗಳು MyISAM ಅನ್ನು ಬಳಸಬಾರದು."
——ಮರಿಯಾಡಿಬಿ ಜ್ಞಾನ ನೆಲೆ, ಶೇಖರಣಾ ಎಂಜಿನ್ಗಳು
ಅದಕ್ಕಾಗಿಯೇ ನೀವು ಬದಲಾವಣೆ ಮಾಡುವ ಮೊದಲು ಎರಡು ಬಾರಿ ಯೋಚಿಸಬೇಕು.
ನನ್ನ ದೃಷ್ಟಿಕೋನ ಮತ್ತು ತೀರ್ಮಾನ
ಇನ್ನೋಡಿಬಿಯನ್ನು ಮೈಐಎಸ್ಎಎಂ ಆಗಿ ಪರಿವರ್ತಿಸುವುದು ಐಷಾರಾಮಿ ಕಾರಿನ ಎಂಜಿನ್ ಅನ್ನು ಟ್ರಕ್ ಎಂಜಿನ್ನೊಂದಿಗೆ ಬದಲಾಯಿಸಿದಂತೆ.
ಅದು ಓಡಬಹುದು, ಆದರೆ ಅದು ಸಂಪೂರ್ಣವಾಗಿ ವಿಭಿನ್ನ ರೀತಿಯಲ್ಲಿ ಓಡುತ್ತದೆ.
ನಿಮ್ಮ ವ್ಯವಹಾರವು ಹಗುರವಾದ ಅಂಕಿಅಂಶಗಳ ಪ್ರಶ್ನೆಗಳನ್ನು ಒಳಗೊಂಡಿದ್ದರೆ, MyISAM ನ ವೇಗ ಮತ್ತು ಸರಳತೆ ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿರುತ್ತದೆ.
ಆದಾಗ್ಯೂ, ನಿಮ್ಮ ವ್ಯವಸ್ಥೆಯು ವಹಿವಾಟುಗಳು ಮತ್ತು ವಿದೇಶಿ ಕೀಗಳನ್ನು ಅವಲಂಬಿಸಿದ್ದರೆ, ಅವುಗಳನ್ನು ದುಡುಕಿನ ಪರಿವರ್ತನೆ ಮಾಡುವುದು ಏರ್ಬ್ಯಾಗ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿದಂತೆ.
ಆದ್ದರಿಂದ, ನಿಜವಾದ ಬುದ್ಧಿವಂತಿಕೆ ಇರುವುದು ವೇಗವನ್ನು ಕುರುಡಾಗಿ ಅನುಸರಿಸುವುದರಲ್ಲಿ ಅಲ್ಲ, ಬದಲಾಗಿ ಸ್ಥಿರತೆ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸಮತೋಲನಗೊಳಿಸುವುದರಲ್ಲಿ.
ಡೇಟಾಬೇಸ್ನ ಆಯ್ಕೆಯು ವ್ಯವಸ್ಥೆಯ ಆತ್ಮವನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ.
ಶೇಖರಣಾ ಎಂಜಿನ್ಗಳನ್ನು ಬದಲಾಯಿಸುವ ಕೌಶಲ್ಯಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವುದು ತಾಂತ್ರಿಕ ಸಾಮರ್ಥ್ಯದ ಪ್ರದರ್ಶನ ಮಾತ್ರವಲ್ಲ, ವಾಸ್ತುಶಿಲ್ಪದ ಚಿಂತನೆಯ ಉನ್ನತಿಯೂ ಆಗಿದೆ.
ನೀವು ಬೃಹತ್ ಪರಿವರ್ತನೆಯನ್ನು ಪರಿಗಣಿಸುತ್ತಿದ್ದರೆ, ದಯವಿಟ್ಟು ಮೊದಲು ಸಮಗ್ರ ಅಪಾಯದ ಮೌಲ್ಯಮಾಪನವನ್ನು ಮಾಡಿ.
ನೈಜ ವ್ಯವಹಾರ ಸನ್ನಿವೇಶಗಳನ್ನು ಅನುಕರಿಸಲು ಪರೀಕ್ಷಾ ಪರಿಸರವನ್ನು ಒಮ್ಮೆ ಚಲಾಯಿಸಿ.
ಎಲ್ಲವೂ ಸರಿಯಾಗಿದೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಂಡ ನಂತರ, ಉತ್ಪಾದನಾ ಪರಿಸರದಲ್ಲಿ ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ.
ಡೇಟಾಬೇಸ್ಗಳು ಆಟಿಕೆಗಳಲ್ಲ; ಅವು ಉದ್ಯಮ ದತ್ತಾಂಶದ ಹೃದಯಭಾಗ.
ಮತ್ತು ನಿಮ್ಮ ಹೃದಯದ ಲಯವನ್ನು ನಿಯಂತ್ರಿಸುವವರು ನೀವೇ.
ಹೋಪ್ ಚೆನ್ ವೈಲಿಯಾಂಗ್ ಬ್ಲಾಗ್ ( https://www.chenweiliang.com/ ಇಲ್ಲಿ ಹಂಚಿಕೊಳ್ಳಲಾದ "MySQL/MariaDB ಡೇಟಾಬೇಸ್ಗಳಲ್ಲಿ InnoDB ಕೋಷ್ಟಕಗಳನ್ನು MyISAM ಕೋಷ್ಟಕಗಳಾಗಿ ಬ್ಯಾಚ್ ಮಾಡುವುದು ಹೇಗೆ?" ಎಂಬ ಲೇಖನವು ನಿಮಗೆ ಸಹಾಯಕವಾಗಬಹುದು.
ಈ ಲೇಖನದ ಲಿಂಕ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಸ್ವಾಗತ:https://www.chenweiliang.com/cwl-34157.html
