2017年5月4日星期四

MySQL 很慢,為何?

上年編寫了一個PHP+MYSQL的網頁,當中一些SQL statement的行算較多。結果每次運算大約5秒左右才完成。後來更換了性能更高的server,但運算變得更慢,每每超過10秒。後來改用了SSD,變成7秒左右。試過修改MYSQL的setting,如加大buffer、memory等參數但都沒有改進。 早幾天更換了一台新NAS作web server,發現運行得更慢,大約15秒才完成。結果無意中在轉載database的檔案中發現,不知為何某些table用了MyISAM作engine,某些table用InnoDB作engine。由於那台新NAS並沒有啟動InnoDB engine,於是我把那些用InnoDB的table轉用MyISAM。運行結果變成不用1秒鐘,我把原先的server也這樣修改,結果也是不用1秒就完成。 如要檢查table現時所用的engine,可以用以下SQL statement; SELECT `ENGINE` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA`='your_database_name' AND `TABLE_NAME`='your_table_name'; 如要更變,可以用以下SQL statement; ALTER TABLE 'your_table_name' ENGINE = InnoDB;

沒有留言:

發佈留言