首页 > 数据库 >mysql服务器查询慢原因分析方法

mysql服务器查询慢原因分析方法

时间:2022-12-19 17:04:52浏览次数:37  
标签:语句 show 分析方法 KILL 查询 线程 mysql 服务器

​​MySQL​​​​数据库​​在查询的时候会出现查询结果很慢,超过1秒,项目中需要找出执行慢的sql进行优化,应该怎么找呢,mysql数据库提供了一个很好的方法,如下: 
mysql5.0以上的版本可以支持将执行比较慢的SQL语句记录下来。 
1.需要使用打开记录查询慢的sql记录日志:

查看慢查询时间
show variables like 'slow%';
查看设置多久是慢查询
show variables like 'long%';
修改慢查询时间
set long_query_time=1;
打开慢查询记录日志
set global slow_query_log='ON';

mysql服务器查询慢原因分析方法_Mysql


2.进入到log_file的目录下即可查询哪些sql执行慢了。 

3.然后就是进行优化执行慢的sql,加索引、修改查询方式等 

4.另外比较有用的命令:

查看哪些线程正在运行
show full processlist
查看最大连接数
show variables like '%max_connections%';
当前连接数
show status like 'Threads_connected%';

在使用mysql运行某些语句时,会因数据量太大而导致死锁,没有反映。这个时候,就需要kill掉某个正在消耗资源的query语句即可, KILL命令的语法格式如下:

KILL [CONNECTION | QUERY] thread_id

每个与mysqld的连接都在一个独立的线程里运行,您可以使用SHOW PROCESSLIST语句查看哪些线程正在运行,并使用KILL thread_id语句终止一个线程。

KILL允许自选的CONNECTION或QUERY修改符:KILL CONNECTION与不含修改符的KILL一样:它会终止与给定的thread_id有关的连接。KILL QUERY会终止连接当前正在执行的语句,但是会保持连接的原状。

如果您拥有PROCESS权限,则您可以查看所有线程。如果您拥有超级管理员权限,您可以终止所有线程和语句。否则,您只能查看和终止您自己的线程和语句。您也可以使用mysqladmin processlist和mysqladmin kill命令来检查和终止线程。

首先登录mysql,然后使用:
show processlist;
查看当前mysql中各个线程状态

mysql> show processlist;  
+------+------+----------------------+----------------+---------+-------+-----------+---------------------
| Id | User | Host | db | Command | Time | State | Info
+------+------+----------------------+----------------+---------+-------+-----------+---------------------
| 7028 | root | ucap-devgroup:53396 | platform | Sleep | 19553 | | NULL
| 8352 | root | ucap-devgroup:54794 | platform | Sleep | 4245 | | NULL
| 8353 | root | ucap-devgroup:54795 | platform | Sleep | 3 | | NULL
| 8358 | root | ucap-devgroup:62605 | platform | query | 4156 | updating | update t_shop set |

以上显示出当前正在执行的sql语句列表,找到消耗资源最大的那条语句对应的id.

然后运行kill命令,命令格式如下:

kill id;  
- 示例:
mysql>kill 8358;
ERROR 1317 (70100): Query execution was interrupted

 



标签:语句,show,分析方法,KILL,查询,线程,mysql,服务器
From: https://blog.51cto.com/u_15147537/5953057

相关文章

  • 【mysql-01】开放远程连接权限遇到的问题
    环境电脑本机ip:192.xxx.xxx.xxx虚拟机A的ip:192.168.132.100虚拟机B的ip:192.168.132.101虚拟机A上的mysql用户权限情况:如图,在虚拟机A上的mysql开放了本地电脑ip的......
  • MySQL 8.0 还能为你自动创建主键?!
    MySQL8.0.31版本引入了一个参数​​sql_generate_invisible_primary_key​​​,开启这个参数,会在建表时,检查表中是否有主键,如果没有主键,则会自动创建。该参数非常实用,减少了......
  • 数据库文件导入报错"MySQL server has gone away"
    今天mysql从一个mysql库中导入另一个mariadb库中是总是报:ERROR2006(HY000)atline176infile:'xxx.sql':MySQLserverhasgoneaway但我是在当前服务器上导入的......
  • 为什么服务器系统用Linux?Linux有哪些优势?
    服务器的操作系统可以实现对计算机的管理和控制,任何计算机的运行都离不开操作系统,服务器也一样。服务器操作系统主要分为四大流派:windowsServer、Netware、Unix、linu......
  • mysql查询当天所有数据sql语句
    mysql查询当天的所有信息:select*fromtestwhereyear(regdate)=year(now())andmonth(regdate)=month(now())andday(regdate)=day(now())这个有一些繁琐,还有简单的写......
  • 利联科技:国内BGP服务器租用的加速手段
    利联科技——​​国内BGP服务器租用​​的加速手段  当用户使用国内BGP服务器租用来置放网站的时候,可能会遇到网站访问速度慢或者页面加载以及刷新缓慢的现象。这时候我......
  • 常见HTTP代理服务器错误代码类型及含义梳理
    通常,通过HTTP代理发送到Web服务器的请求失败,都会收到相应的错误状态代码。服务器成功接收到请求但无法处理请求或处理过程中遇到问题时,则会出现5xx错误。如果你想继续使用ht......
  • MySQL用户管理
    1.查看用户及用户权限mysql中的用户信息和权限等都存储在一个名为mysql的数据库中。其中主要用到的是user、db、tables_priv、columns_priv、procs_priv这五张表,最重要的......
  • docker-compose入门以及部署SpringBoot+Vue+Redis+Mysql(前后端分离项目)以若依前后端
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662上面在搭建起来前后端分离版的项目后。......
  • Linux搭建FTP服务器
    这里写自定义目录标题​​Linux搭建FTP服务器​​​​简述​​​​一.安装服务器​​​​1.1.安装vsftp​​​​1.2.配置文件路径​​​​二.配置vsftp​​​​2.1.配置......