Mysql数据库表排序规则不一致导致联表查询,索引不起作用问题
表更描述: 将mysql数据库中的worktask表添加ishaspic字段。
具体操作:(1)数据库worktask表新添是否有图片字段ishaspic;新添字段时,报错
[SQL] alter table WorkTask add ishaspic int(10) Null;
[Err] 1034 - Incorrect key file for table 'WorkTask'; try to repair it
解决方案:新建worktask表,添加ishaspic字段,将原worktask表中的数据插入新建表中.
(2)生产环境部署变更代码,应用启动后,一段时间后台报错
org.hibernate.exception.GenericJDBCException: Could not open connection
java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
(3)监控数据库服务,发现查询sql突然变慢,数据库服务器CPU资源占用率超高。
(4)变更回退,错误仍然存在。
原来应用能正常运行,现在不能正常运行,监控数据库,发现sql查询执行时间突然变慢,单独执行sql,发现也很慢,到达百秒级。
问题定位:在新建worktask表时,改变了表的排序规则,以至于使和所联表的排序规则不一样,导致联表查询SQL语句,索引不起作用。
解决方案:(1)将联表查询SQL进行拆分;(2)调整数据表的排序规则,保证所联表数据表的排序规则一致。