当前位置:网站首页 > SQL数据库编程 > 正文

mysql查询锁表怎么办(mysql查询被锁的表)



在服务器上命令行登录,mysql -uroot -upassword,把密码写到命令行里,不用每次再输入,按ctrl+p 然后回车,尝试N次,终于登录进去了;连接数过多,终究还是可以找到空子进去的。赶快查看并保留运行状态的重要参数:

代码如下

好家伙,这么多连接:

如些上千行。先不管,这里肯定是问题突破口。

代码如下

set global max_connections=4000;

增加允许的最大连接数,先让前台网站可以正常工作

回过头google :mysql unauthenticated user

果然,遇到此类问题的人很多,问题在于mysql的反向ip地址解析,配置参数里加上skip-name-resolve就可以。

补充

一、查看进程运行情况(会话1)

代码如下

二、构造表被锁现象

1)锁住表(会话1)

代码如下

mysql>LOCK TABLES chf.disc02 READ;或者–LOCK TABLES chf.disc02 WRITE;

2)执行dml操作(会话2)

代码如下

mysql>delete from chf.disc02 limit 1;–会话处于卡死状态

3)查询进程运行情况(会话1)

代码如下

说明:发现进程id为41的进程状态为Locked

三、解锁操作

1)删掉被锁进程(会话1)

代码如下

mysql> kill 41;

出现现象(会话2)

ERROR 2013 (HY000): Lost connection to MySQL server during query

2)查看进程(会话1)

代码如下

四、批量解锁

代码如下

1)可以使用show processlist查看当前用户连接

如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。show processlist;只列出前100条,如果想全列出请使用show full processlist;

2)在构造锁的会话中,使用unlock tables;也可以解锁

总结一下原因,大概如下:

因为mysql默认会根据客户端的ip地址反向解析,用于用户登录授权之用。不过正常情况下,很少会有人这样用。ip地址反向解析是很慢的,尤其是高负荷的mysql,每秒种几百次甚至更高的请求,这个请求压到本地的dns服务器上,dns服务器说不定会怀疑你在恶意请求,然后不理你了,然后这些登录请求就挂在那里,后面的连接还持续,然后越积越多,然后就达到mysql的最大连接数据限制了,然后新的连接就直接被拒,得到连接数过多的消息。

因为mysql配置文件使用的之前的配置文件,当时跟web同服务器,所以不存在这个问题。

这也正好解释了为什么phpMyAdmin里看mysqld状态时,有很多失败的连接,它们应该就是因反解析失败而被拒的。

到此这篇mysql查询锁表怎么办(mysql查询被锁的表)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • mysql学习笔记--单张表上的增删改查2025-02-06 09:18:10
  • mysql的学习笔记2025-02-06 09:18:10
  • MySQL 多表查询与事务的操作2025-02-06 09:18:10
  • Node学习(六)01-MySQL数据库——数据库简介 & 安装操作MySQL的图形化处理界面Nacicat & 使用集成软件WampServer客户端链接MySQL服务器 & 创建数据库和表2025-02-06 09:18:10
  • Node学习(六)02-SQL语句——select查询、where筛选sql、like模糊查询通配符、order by查询结果排序、limit 用来限制查询结果的起始点和长度2025-02-06 09:18:10
  • sql数据库基础知识(sql数据库基础知识点总结)2025-02-06 09:18:10
  • sqlldr教程(sqlldr-704)2025-02-06 09:18:10
  • sql文件转换成csv显示不全(sql文件转换word)2025-02-06 09:18:10
  • sql文件格式(sql文本格式)2025-02-06 09:18:10
  • jdbc连接数据库代码(jdbc连接sql数据库步骤代码)2025-02-06 09:18:10
  • 全屏图片