我最近將 MySQL 伺服器從 5.1 升級到 5.6(在 CentOS 6.x 上運行)。自從升級以來,當我嘗試執行某些表任務時,查詢會花費很長時間。這確實對我的開發週期迭代造成了阻礙,因為當一個測試應該需要 1 秒鐘來執行時,它需要 1-2 分鐘來執行,這確實降低了我的工作效率。
需要很長時間的查詢:
- 刪除並創建
- 在創建之後插入
- 截短
我在本機 Mac 上安裝了相同版本的 MySQL (5.6.15)。我目前專門處理 6 個表,因此我想經常截斷這些表。當我在本地 Mac 上截斷它們時,查詢需要 21 毫秒(完全合理)。當我在 CentOS 伺服器上截斷相同的表時,需要 8.5 秒。這些表都是InnoDB。
我嘗試過在本地 Mac 和 CentOS 伺服器上的相同資料庫中使用其他表,但這些其他表的速度仍然極其緩慢。因此,我完全嘗試了一種不同的資料庫,並且極其緩慢的情況仍然存在(在本地 Mac 上恢復我的一個資料庫需要 25 秒,但在 CentOS 伺服器上需要 4 分 14 秒)。
由於MySQL版本相同,我想可能是配置不同。我導出了“顯示變數;”在 CentOS 和本地 Mac 上查詢,唯一的區別(除了路徑或日誌檔案名稱等)是:
innodb_use_native_aio OFF // local Mac
innodb_use_native_aio ON // CentOS
lower_case_file_system ON // local Mac
lower_case_file_system OFF // CentOS
lower_case_table_names 2 // local Mac
lower_case_table_names 0 // CentOS
have_symlink YES // local Mac
have_symlink DISABLED // CentOS