我最近将我的 MySQL 服务器从 5.1 升级到了 5.6(运行在 CentOS 6.x 上)。自从升级以来,当我尝试执行某些表任务时,查询需要很长时间。这确实阻碍了我的开发周期迭代,因为当测试应该花 1 秒钟执行时,它需要 1-2 分钟才能执行,这确实降低了我的工作效率。
花费很长时间的查询:
- 删除并创建
- 在 CREATE 之后插入
- 截短
我在本地 Mac 上安装了相同版本的 MySQL (5.6.15)。我目前正在专门处理 6 个表,因此我想经常截断这些表。当我在本地 Mac 上截断它们时,查询需要 21 毫秒(完全合理)。当我在 CentOS 服务器上截断相同的表时,需要 8.5 秒。这些表都是 InnoDB。
我尝试过在本地 Mac 和 CentOS 服务器上使用同一数据库中的其他表,但其他表的速度仍然非常缓慢。因此,我尝试了一个完全不同的数据库,但速度仍然非常缓慢(在本地 Mac 上恢复我的一个数据库需要 25 秒,但在 CentOS 服务器上需要 4 分 14 秒)。
由于 MySQL 版本相同,我认为可能是配置不同。我在 CentOS 和本地 Mac 上导出了“show variable;”查询,唯一的区别(除了路径或日志文件名等)是:
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