我需要帮助一些mysql表无法访问(看起来像死锁),因为我的网站已关闭,我无法通过Navicat或phpMyAdmin打开这些表,我试图通过知道线程ID来杀死查询:
SHOW FULL PROCESSLIST
但我没有找到任何与此问题相关的行。
注意到在我尝试对包含>的2个表运行一些繁重查询后导致的问题1000万行,我花了3个多小时就取消了查询。
我无法访问重启服务器,我正在使用godaddy托管,他们没有在线聊天支持我的国家!
我可以做任何事情来修复myside而不重新启动! 请建议。
答案 0 :(得分:1)
即使它是200万行,查询也不应该花费3个小时,这意味着SQL本身需要认真关注。正如你所说'看起来像死锁',你可以通过SHOW ENGINE INNODB STATUS
进行检查
如果我们在锁定状态下获得更多表,那么我们可以通过设置innodb_lock_wait_timeout
系统变量的值来解决这些情况。
供参考:
https://dev.mysql.com/doc/refman/5.7/en/glossary.html#glos_deadlock https://www.percona.com/blog/2012/09/19/logging-deadlocks-errors/
答案 1 :(得分:0)
在类Unix操作系统中,您可以使用" system"或" \!"在mysql解释器中执行shell的任何命令的前缀。 See this. 当然,您必须具有管理员权限才能在shell中运行任何命令。
有了这个,您可以使用一些mysql管理命令获取de PID并通过操作系统分析您的问题。