首页 > 数据库 >#yyds干货盘点#Mysql慢查询日志

#yyds干货盘点#Mysql慢查询日志

时间:2023-09-07 17:34:05浏览次数:42  
标签:yyds Rows mysql time 查询 干货 Mysql query 日志

Mysql慢查询日志

数据库的慢查询是影响项目性能的一大因素,对于数据库我们要优化SQL,首先要找到需要优化的SQL,这就需要我们知道sql执行时间等信息,除了使用SHOW PROFILES;外,mysql也提供了“慢查询日志”功能,用来记录查询时间超过某个设定值的SQL,这将极大程度帮助我们快速定位到症结所在,以便对症下药。

一、慢查询配置

关于慢查询日志,主要涉及三个参数:

  • slow_query_log :是否开启慢查询日志功能(必填)
  • long_query_time :超过设定值,将被视作慢查询,并记录至慢查询日志文件中(必填)
  • slow_query_log_file :慢查询日志文件(不必填),可以通过show variables like '%slow_query%';查询日志位置

打开慢查询日志有两种方式:

1. 通过命令行

不需要重启命令行,临时性的,退出mysql终端就失效。

# 以下操作管理员才有权限

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

# 设置查询“超时”时间(这里为了方便日志打印,将超过0.001s的都作为慢查询)
mysql> set GLOBAL long_query_time = 0.001;
Query OK, 0 rows affected (0.00 sec)

2. 通过配置文件

需要重启mysql

# 慢日志相关配置
slow_query_log = ON
long_query_time = 0.001
slow_query_log_file = /usr/local/mysql/data/slow.log

二、慢日志查询

如果操作正确,那么在日志里面就会看到类似下面的:

# Time: 200303 14:54:38
# User@Host: wangjun[wangjun] @ localhost []
# Thread_id: 47  Schema: scujoo  QC_hit: No
# Query_time: 0.024923  Lock_time: 0.000130  Rows_sent: 3488  Rows_examined: 3488
# Rows_affected: 0  Bytes_sent: 354872
SET timestamp=1583218478;
select * from account;
/usr/sbin/mysqld, Version: 10.3.15-MariaDB-1-log (Raspbian testing-staging). started with:
Tcp port: 0  Unix socket: /run/mysqld/mysqld.sock
Time            Id Command    Argument
# Time: 200303 15:05:30
# User@Host: [root] @ localhost []
# Thread_id: 8  Schema: mysql  QC_hit: No
# Query_time: 0.001743  Lock_time: 0.000168  Rows_sent: 1  Rows_examined: 1
# Rows_affected: 0  Bytes_sent: 252
use mysql;
SET timestamp=1583219130;
show variables like 'datadir';
# User@Host: [root] @ localhost []
# Thread_id: 10  Schema:   QC_hit: No
# Query_time: 0.007002  Lock_time: 0.000238  Rows_sent: 36  Rows_examined: 69
# Rows_affected: 0  Bytes_sent: 2391
SET timestamp=1583219130;
select concat('select count(*) into @discard from `',
                    TABLE_SCHEMA, '`.`', TABLE_NAME, '`') 
      from information_schema.TABLES where TABLE_SCHEMA<>'INFORMATION_SCHEMA' and TABLE_SCHEMA<>'PERFORMANCE_SCHEMA' and ( ENGINE='MyISAM' or ENGINE='Aria' );
# Time: 200303 15:06:41

标签:yyds,Rows,mysql,time,查询,干货,Mysql,query,日志
From: https://blog.51cto.com/u_11365839/7399056

相关文章

  • 40 分钟内同步 500GB MySQL 数据至 Doris
    随着数据分析在业务决策中变得日益重要,数据实时同步和分析成为企业提升竞争力的关键。MySQL作为广泛使用的关系型数据库,其数据存储丰富,但无法满足大规模数据分析和高并发查询的需求。而Doris作为一款专为大数据分析设计的分布式数据仓库,具有高性能、可扩展的特点,其优异的数据处......
  • kubernetes deploy standalone mysql demo
    kubernetes集群内部署单节点mysqlansibleall-mshell-a"mkdir-p/mnt/mysql/data"catmysql-pv-pvc.yamlapiVersion:v1kind:PersistentVolumemetadata:name:mysql-pv-volumelabels:type:localspec:storageClassName:manualcapacity:s......
  • golang操作mysql
    golang操作mysql在Go语言中,你可以使用第三方库来进行MySQL数据库的操作。其中,比较常用的库有database/sql和github.com/go-sql-driver/mysql在安装了MySQL的前提下进行以下操作1下载依赖在终端执行命令:goget-ugithub.com/go-sql-driver/mysql2导入依赖库import(......
  • Mysql 数据库的数据大小查看
    Mysql数据库的数据大小查看:1、进入information_schema数据库(存放了其他的数据库的信息)mysql->useinformation_schema;2、查询所有数据的大小:mysql->selectconcat(round(sum(data_length/1024/1024),2),'MB')asdatafromtables;3、查看指定数据库的大小:比如查看数据库h......
  • MySQL数据库基础与实战应用
    ......
  • Ubentu 16.04.2 LTS安装mysql,jdk1.8
    一、网络设置1、网络设置sudovim/etc/network/interfaces文件中写入以下内容,写完后wq保存退出。#设置网卡名称autoeth0#设置静态IP,如果是使用自动IP用dhcp,后面的不用设置ifaceeth0inetstatic#设置IP地址addressxxx.xxx.xxx.xxx#设置子网掩码netmaskxxx.xxx.xxx.......
  • 从MySQL全库备份中恢复某个库和某张表的方法
    一定要使用测试库操作一、全库备份恢复单个库的数据流程:1.第一种方法:--从全备中导出所需库的建库语句和INSERT语句。sed-n'/^--CurrentDatabase:`库名`/,/^--CurrentDatabase:`/p'全备.sql>test.sql--导入库,会自动建库mysql库名<test.sql2.另一种方法:mysql......
  • Linux系统安装jdk;tomcat;mysql。
    1安装jdk1:下载jdklinux环境jdk-8u161-linux-x64.tar.gz2:把下载好的软件放在linux系统中3:解压:tar-zxvfjdkXXXXX.tar.gz4:重命名:mvjdk1.8.0_161/jdk85:配置环境变量/etc/profile---->配置环境变量6:刷新/etc/profile文件source/etc/profile7:在任何目录输......
  • 【mysql】mysql判断某一张表是否存在的sql语句以及方法
    有四种方式进行判断: 1.--百分号中间为需要查询的表名SHOWTABLESLIKE‘%user%’;2. --dbname为数据库名字tablename为你需要查询的表名称,注意使用TEMPORARY关键字创建出来的临时表无法查询出来。selectTABLE_NAMEfromINFORMATION_SCHEMA.TABLESwhereTABL......
  • 【mysql】mysql分表分库
     MySQL按日期分表sql语句创建+XORM基于XORM框架实现分表MySQL数据库按时间分表的查询方法Mysqlunion与unionall究竟怎么用?到底有什么区别 #gorm分库分表https://gitee.com/lemontree/gorm-shardinghttps://blog.csdn.net/wyhstars/article/details/80609652http......