IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql慢sql定位 -> 正文阅读

[大数据]mysql慢sql定位

mysql慢sql定位

前言:当工作一段时间后,我们慢慢会遇到数据库调优,如何调优我们必须要明白两件事
1.数据库有哪些sql慢。
2.如何处理
本文章记录如何排查慢sql

step1:开启慢sql日志记录

mysql> show variables like '%slow%';
+---------------------------+-----------------------------------+
| Variable_name             | Value                             |
+---------------------------+-----------------------------------+
| log_slow_admin_statements | OFF                               |
| log_slow_slave_statements | OFF                               |
| slow_launch_time          | 2                                 |
| slow_query_log            | OFF                               |
| slow_query_log_file       | /var/lib/mysql/hugowu-PC-slow.log |
+---------------------------+-----------------------------------+


slow_query_log:用来控制是否开启慢sql日志记录
slow_query_log_file:慢sql日志记录地址

mysql> set global slow_query_log=on;
Query OK, 0 rows affected (0.01 sec)

这里设置session 全局配置。此时针对全局session有效,重启后无效。若需要永久生效(开启日志需要会有资源消耗,不建议永久生效)需要配置在mysql.ini(linux my.cnf)

step2:设置慢sql的时间限制

mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+

这里官方默认10s,我们为了更精确点可以设置1s

set global long_query_time 1;

此时开始记录sql执行信息

step3:进行慢sql日志查询

mysql> show status like 'slow_queries';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slow_queries  | 0     |
+---------------+-------+
1 row in set (0.01 sec)

它会显示慢查询sql的数目,具体的sql就在上面的Log file日志中可以看到。
我们可以打开上述慢sql日志记录文件查看一下
vi /var/lib/mysql/hugowu-PC-slow.log

/software/mysql/bin/mysqld, Version: 5.7.24 (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /software/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 2018-12-08T03:08:23.877322Z
# User@Host: root[root] @ localhost []  Id:    24
# Query_time: 0.551358  Lock_time: 0.000514 Rows_sent: 1  Rows_examined: 100005
use test;
SET timestamp=1544238503;
select count(*) from users;
# Time: 2018-12-08T03:09:06.038256Z
# User@Host: root[root] @ localhost []  Id:    24
# Query_time: 1.401716  Lock_time: 0.000220 Rows_sent: 100005  Rows_examined: 100005
SET timestamp=1544238546;
select * from users;
# Time: 2018-12-08T03:12:03.207302Z
# User@Host: root[root] @ localhost []  Id:    24
# Query_time: 0.395499  Lock_time: 0.000378 Rows_sent: 30006  Rows_examined: 30006
SET timestamp=1544238723;
select * from user_address_copy;

Time :日志记录的时间

User@Host:执行的用户及主机

Query_time:查询耗费时间 Lock_time 锁表时间 Rows_sent 发送给请求方的记录条数 Rows_examined 语句扫描的记录条数

SET timestamp 语句执行的时间点

select … 执行的具体语句

慢查询分析工具

分析慢查询日志是性能调优中获取信息的主要方式之一
如果slow log比较小可以用vi,vim,less,more,cat等等linux文本查看命令使用。我们也可以用mysql官方自带的工具去对slow log进行分析
官方文档5.7版本地址:https://dev.mysql.com/doc/refman/5.7/en/mysqldumpslow.html
在这里插入图片描述
执行mysqldumpslow –h可以查看帮助信息。
主要介绍两个参数-s和-t
-s 这个是排序参数,可选的有:
? al: 平均锁定时间
? ar: 平均返回记录数
? at: 平均查询时间
? c: 计数
? l: 锁定时间
? r: 返回记录
? t: 查询时间

-t n 显示头n条记录。

root@hugowu-PC:/home/hugowu/Desktop# mysqldumpslow -s c -t 20 /var/lib/mysql/hugowu-PC-slow.log

Reading mysql slow query log from /var/lib/mysql/hugowu-PC-slow.log
Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows=0.0 (0), 0users@0hosts
  

ps:
还有一些其他命令:
显示当前进程

mysql> show processlist;
+----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host      | db   | Command | Time | State    | Info             |
+----+------+-----------+------+---------+------+----------+------------------+
|  6 | root | localhost | NULL | Query   |    0 | starting | show processlist |

显示可用的表

mysql> show open tables
    -> ;
+--------------------+------------------------------------------------------+--------+-------------+
| Database           | Table                                                | In_use | Name_locked |
+--------------------+------------------------------------------------------+--------+-------------+
| performance_schema | events_waits_summary_by_user_by_event_name           |      0 |           0 |
| performance_schema | events_waits_summary_global_by_event_name            |      0 |           0 |
| performance_schema | events_transactions_summary_global_by_event_name     |      0 |           0 |
| performance_schema | replication_connection_status                        |      0 |           0 |
| performance_schema | events_waits_summary_by_account_by_event_name        |      0 |           0 |
| mysql              | engine_cost                                          |      0 |           0 |

参考链接:https://blog.csdn.net/weixin_38028611/article/details/99355039

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-10-17 12:41:07  更:2022-10-17 12:44:55 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:26:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码