使用连接执行SQL锁等待超时30s

使用连接执行SQL锁等待超时30s

更新时间:2017-10-16 18:01:14

提示:这篇文档是由阿里云售后支持团队针对特定或紧急问题提供的“快速发布”文档。文档的内容以原稿呈现,未进行编辑及审核。因此,阿里云对于文档内容不做任何承诺, 并且,我们有权在未经通知您的情形下对文档内容做出编辑、修改或提供补充信息。

问题症状

使用DMS查询出现使用连接执行SQL,锁等待超时30s:

问题原因

这是DMS的限制,和RDS的锁等待没关系,用户执行一个慢SQL或者执行SQL的时候表锁住了,长时间没有返回。在部分浏览器上会发生两种情况:

  • 页面超时,其实后台还在执行这个SQL,也会用对应的连接。

  • 当我们主动刷新这个页面,其实后台这个SQL还在执行。

不论上述哪种情况,后台这个连接数据库的连接一直在占用中,DMS对于一个SQL窗口是一个连接(保证会话一致和事务)。

这个时候我们如果再发起一个SQL,去获取这个连接的时候,这个连接还正在执行SQL语句,同一个连接只能同时执行一个SQL语句,所以会加锁,所以每一个请求过去的时候,会进行尝试加锁,加锁的超时时间是30秒,如果后一个请求进去的时候,前一个SQL30秒内还没跑出来,就会报这个错。

解决方案

  1. 重新打开一个新的窗口执行命令,看下是否正常。

  2. 如果新的窗口执行命令依然异常,使用除DMS之外的客户端工具暂时替代。