MySQL慢查询日志

慢查询日志

MySQL的慢查询日志是用来记录MySQL响应时间超过阈值的语句,即为超过long_query_time值得sql语句

默认没有开启慢查询(如果开启慢查询会导致性能降低)

慢日志配置

查看是否开启慢查询

sql 复制代码
show variables like '%slow_query_log%';

开启慢查询

sql 复制代码
#只对当前数据库生效,如果重启则失效
set global slow_query_log = 1;

查看慢查询日志文件位置

sql 复制代码
show variables like '%slow_query_log_file%';

如果需要永久生效,在需要在my.cnf配置文件中配置

在[mysqld]下添加slow_query_logslow_query_log_file参数,然后重启服务器即可

查询慢查询阈值,超过该阈值才是慢查询

sql 复制代码
show variables like '%long_query_time%';

查看有多少条慢查询

sql 复制代码
show global status  like '%Slow_queries%';

还可以记录未使用索引的sql语句

sql 复制代码
show variables like '%log_queries_not_using_indexes%';

查询慢查询日志的存储格式

sql 复制代码
--    可以是FILE(存储在slow_query_log_file中),也可以是TABLE(存储在mysql.slow_log表中),如果配置为FILE,TABLE则同时存入文件和表中
show variables like '%log_output%';

日志分析工具

mysqldumpslow

可以使用mysqldumpslow来进行日志分析,以一种汇总各式输出慢查询日志中的内容,将查询进行分组

sql 复制代码
mysqldumpslow [ OPTS... ] [ LOGS... ] 

-----------------------------
参数
-s  按照何种方式排序
			c  访问次数
			l  锁定时间
			r  返回记录
			t  查询时间
			al 平均锁定时间
			ar 平均返回记录数
			at 平均查询时间  默认at
-t  num 返回前面多少条的数据(top n)
-g  正则
-v  输出详细信息

在使用时可能会报错

-bash: /usr/local/mysql/bin/mysqldumpslow: /usr/bin/perl: bad interpreter: No such file or directory

说明是缺少perl,进行安装即可

yum -y install perl perl-devel

pt_query_digest

pt-query-digest(官网地址www.percona.com/doc/percona... log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

zhhll.icu/2021/数据库/关系...

本文由mdnice多平台发布

相关推荐
月光水岸New1 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6751 小时前
数据库基础1
数据库
我爱松子鱼1 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo2 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser3 小时前
【SQL】多表查询案例
数据库·sql
Galeoto3 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)3 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231113 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白3 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码3 小时前
【SQL实验】触发器
数据库·笔记·sql