首页 > 数据库 >【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】

【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】

时间:2023-12-26 14:36:54浏览次数:34  
标签:slow Mysql SQL 查询 MYSQL MySQL query 日志

分析慢SQL的步骤
1.慢查询的开启并捕获:开启慢查询日志,设置阈值,比如超过5秒钟的就是慢SQL,至少跑1天,看看生产的慢SQL情况,并将它抓取出来
2.explain + 慢SQL分析
3.show Profile。(比explain还要详细,可以查询SQL在MySQL数据库中的执行细节和生命周期情况)
4.运维经理 OR DBA,进行MySQL数据库服务器的参数调优。(后端程序员没有这个权限)

慢查询日志(定位慢sql)

基本介绍

慢查询日志是什么?

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。

  • long_query_time的默认值为10,意思是运行10秒以上的语句
  • 由慢查询日志来查看哪些SQL超出了我们的最大忍耐时间值,比如一条SQL执行超过5秒钟,我们就算慢SQL,希望能收集超过5秒钟的SQL,结合之前explain进行全面分析

特别说明

**默认情况下,MySQL数据库没有开启慢查询日志,**需要我们手动来设置这个参数。

当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响。慢查询日志支持将日志记录写入文件。

查看慢查询日志是否开以及如何开启

  • 查看慢查询日志是否开启:SHOW VARIABLES LIKE '%slow_query_log%';
  • 开启慢查询日志:SET GLOBAL slow_query_log = 1;。使用该方法开启MySQL的慢查询日志只对当前数据库生效,如果MySQL重启后会失效。
     1 mysql>
     2 mysql> use mysql;
     3 Database changed
     4 mysql> show variables like '%slow_query_log%';
     5 +---------------------+-------------------------------+
     6 | Variable_name       | Value                         |
     7 +---------------------+-------------------------------+
     8 | slow_query_log      | ON                            |
     9 | slow_query_log_file | /var/lib/mysql/mysql-slow.log |
    10 +---------------------+-------------------------------+
    11 2 rows in set (0.00 sec)
    12 
    13 mysql> set global slow_query_log = 1;
    14 Query OK, 0 rows affected (0.00 sec)

     

标签:slow,Mysql,SQL,查询,MYSQL,MySQL,query,日志
From: https://www.cnblogs.com/0356dujinshuai/p/17928036.html

相关文章

  • WPF+SqlSugar+MVVM实现增删改查(二)
    这相对于上一版本的升级版如果不理解看请看第一版:WPF+SqlSugar+MVVM实现增删改查-六子12138-博客园(cnblogs.com)ViewModels代码1usingEntitys;2usingSqlSugar;3usingSystem;4usingSystem.Collections.Generic;5usingSystem.Collections.Object......
  • ABP-VNext 用户权限管理系统实战01---AuthServer服务迁移数据库到mysql
    一、从github上获取源码后修改命名空间下载dome后修改解决方案名为Bridge。 二、默认是连接sqlserver的,需要修改为可以连接mysql修改appsettings.json文件的ConnectionStrings参数,准备一个可以连接的mysql,新建数据库bridge{"ConnectionStrings":{"Default":"Server=xxx......
  • MySQL对所有的表增加一个biz_e varchar255,如何快速实现?
    --先在数据库中创建一个存储过程DELIMITER//--先在数据库中创建一个存储过程DELIMITER//CREATEPROCEDUREAddBizEToTables()BEGINDECLAREdoneINTDEFAULT0;DECLAREtableNameVARCHAR(255);DECLAREcurCURSORFORSELECTtable_name......
  • SQL 的执行顺序,你搞清楚了吗?
    这是一条标准的查询语句: 这是我们实际上SQL执行顺序:from子句组装来自不同数据源的数据;where子句基于指定的条件对记录行进行筛选;groupby子句将数据划分为多个分组;使用聚集函数进行计算;使用having子句筛选分组;计算所有的表达式;select的字段;使用orderby对结果集进行排序......
  • Mac安装Mysql5.7
    官网https://downloads.mysql.com/archives/community/下载Mysql5.7.31,再高5.7版本没有macOS选项安装安装完毕会弹出帐号密码这里要把密码记住,待会用mysqladmin重置密码时要用。启动mysql服务系统设置拉到最下面,启动mysql服务启动成功设置mysql服务端mysql命令别名aliasmysql=/usr......
  • 无涯教程-PostgreSQL - String函数
    PostgreSQL字符串函数主要用于字符串操作。下表详细介绍了重要的字符串函数-S.No.Name&描述1ASCII()返回最左边字符的数值2BIT_LENGTH()返回参数的长度(以位为单位)3CHAR_LENGTH()返回参数中的字符数4CHARACTER_LENGTH()CHAR_LENGTH()的同义词5CONCAT_WS......
  • 无涯教程-PostgreSQL - Numeric函数
    PostgreSQL数值函数主要用于数值运算和/或数学计算。下表详细介绍了数字函数-S.No.Name&描述1ABS()返回数值表达式的绝对值。2ACOS()返回数值表达式的反余弦值,如果该值不在-1到1之间,则返回NULL。3ASIN()返回数字表达式的反正弦值,如果值不在-1到1的范围内,则返回NU......
  • mysql 配置主从复制
    主库配置#BinaryLogging.#log-binlog-bin=mysql-bin#[必须]启用二进制日志#ErrorLogging.log-error="mysql-error.log"#ServerId.server-id=200#不同步的数据库,可设置多个binlog-ignore-db=information_schemabinlog-ignore-db=performance_schemabinlo......
  • 什么是 MySQL JDBC 连接池中最高效的连接检测语句?
    在回答这个问题之前,首先我们看看MySQL中有哪些常用的JDBC连接池:c3p0DBCPDruidTomcatJDBCPoolHikariCP这些连接池中,这些连接池中,c3p0是一个老牌的连接池,很多流行框架,在其老版本中,都将c3p0作为默认的连接池。DBCP和TomcatJDBCPool(Tomcat的默认连接池)是Apache......
  • MySQL8.0 OCP 103
    Choosethree.Whichthreerequirementsmustbeenabledforgroupreplication?对于组复制,必须启用哪些三个要求?A)replicationfiltersB)semi-syncreplicationpluginC)slaveupdateslogging更新日志记录D)binarylogchecksumE)primarykeyorprimarykeyequ......