mysql 中大表alter已经好几个小时了,进程也杀不掉,一直锁表,请问怎么办?

mysql 中大表alter已经好几个小时了,进程也杀不掉,一直锁表,请问怎么办?,第1张

你是在 什么机器上 运行 MySQL服务的?Linux?Windows?

建议 将 相关 该表使用的,一律 关闭,如 运行web程序(正在查询、删除该表数据),备份终止,正在 运行 删除该表 的窗口等,然后再进行解锁

有两种方式

一个是配置文件 一个是命令

如果是配置文件方式 就在 mysql 配置文件 my.cnf 中增加:log-slow-queries=/opt/data/slowquery.log

(这句是指定日志文件存放位置 如果不写 系统会给一个缺省的位置)long_query_time=2 (记录超过的时间 默认为 10s)

如果是命令行方式 就在 mysql 命令行下面 输入如下命令:set global slow_query_log=onset global long_query_time=1# 设置记录查询超过多长时间的 sql

set global slow_query_log_file=‘/opt/data/slow_query.log’# 指定日志文件存放位置 如果不写 系统会给一个缺省的位置

这种方式不用重启 mysql 服务

开启了慢查询日志之后 就可以通过以下语句分析:

•    mysqldumpslow -s t -t 20 -g 'select' /opt/data/slowquery.log

这句就可以找到执行时间最长的前 20 条查询语句

•    mysqldumpslow -s t -t 10 -g 'left join'/opt/data/slowquery_2016050921.log

这句就可以找到执行时间最长的前 10 条含有左连接的查询语句

找到之后 使用如下语句进行进一步分析:

mysql>explain select * from students where id in (2,3)

explain 后面跟上刚刚查出来的执行时间长的语句就可以了

ctrl+alt+del 调出 任务管理器,选择进程,找到Mysql的相关进程,点击结束进程。

楼下说那么简洁,楼主懂么? taskkill有可能杀不掉 后面要加参数 楼主又知道吗,

Taskkill -pid

也可以用

ntsd -pid

当然 pid 要知道才行,

在cmd 里面输入 tasklist 查看所有进程。

在cmd里面 *** 作简直是装逼,那是以前的dos *** 作方式,现在图形界面的话对于普通用户直接调出任务管理器 *** 作。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8463780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-16
下一篇 2023-04-16

发表评论

登录后才能评论

评论列表(0条)

保存