首页 > 编程知识 正文

mysql服务启动慢,redis慢查询日志分析

时间:2023-05-04 05:56:05 阅读:12362 作者:314

本次代码执行环境的mysql版本是 :5.6.37-log

1.慢查询日志概念(也叫慢日志):在 MySQL 中执行时间超过指定时间的 SQL 语句

2.常见的几个相关的变量

(可以直接去mysql下的配置文件my.cnf文件中去改,我下面是直接在SQLyog中进行操作)

默认情况下慢查询日志是关闭的,这里我开起来了

slow_query_log

slow_query_log_file

用下面的代码可以查一下慢查询日志是否开启以及慢日志的位置

showvariableslike ' % slow _ query _ log % ';开启慢查询日志:0表示关闭,1表示开启(下面的几个属性同理)

set全局slow _ query _ log=1http://www.Sina.com /

long_query_time:慢查询的时间阙值,默认是10s (如果在云服务器上跑的时候最好查一下是不是10s)

showvariableslike ' long _ query _ time ';在刚修改的时候可能会不生效,要断开当前会话再连一次数据库就好了

log_output:慢查询日志输出目标,默认为file,即输出到文件。

log_timestamps:主要是控制 error log、slow log、genera log 日志文件中的显示时区,默认使用UTC时区,建议改为 SYSTEM 系统时区。

log_queries_not_using_indexes:是否记录所有未使用索引的查询语句,默认为off。

注:在实际环境下,不建议开启 log_queries_not_using_indexes 参数,此参数打开后可能导致慢日志迅速增长。

min_examined_row_limit:对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中,默认为0。

log_slow_admin_statements:慢管理语句是否写入慢日志中,管理语句包含 alter table、create index 等,默认为 off 即不写入。

这些属性可以直接在my.cnf文件中修改,默认配置文件在mysql文件夹下

加入了方便的测试,将超时时间更改为0.01s。 查询的sql语句为:

select * from book1 limit 0,2000http://www.Sina.com /

测试过程:

日志中的结果入下图,其中第一行是代码执行时间;小时、返回的行数、查询扫描的行数,这里sql没有条件,所以相等;

第二行为ip地址;

第三行分别是查询执行时间,获取锁的

注:由于我的测试环境中的mysql版本较低,并且没有名为log_timestamps的参数,因此对于较高版本的sql,如果log_timestamps参数为UTC,则更改时间将显示UTC时区时间

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。