MySql慢查询日志

mysql慢查询日志 慢日志查询 阅读详情

慢查询日志

  • mysql提供一种日志记录,它用来记录在mysql中响应时间超过阈值的语句,具体指运行时间超过long_query_time 会被记录到慢查询日志中;long_query_time 默认值为10s,运行时间超过10S的语句会被记录(不包含10S)
  • 由它来查看哪些sql语句超出我们的最大忍耐时间值,对于慢sql我们用explain分析

怎么设置

  • 默认情况下,mysql数据库没有开启慢查询日志,需要我们手动来设置这个参数
  • 如果没有调优需求的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定性能影响。慢查询日志支持将日志记录写入文件
-- 查看慢查询日志是否开启,慢查询日志保存路径
show variables like '%slow_query_log%';

-- 开启慢查询日志(临时),永久修改设置my.ini文件
set global slow_query_log=1;


-- 查看阈值是多少(默认10)
show variables like 'long_query_time%';

-- 设置阈值
set global long_query_time=3;
set global slow_query_log_file=D:/phpStudy/PHPTutorial/MySQL/slow_log.txt

-- 测试
select sleep(5);

--在slow_log.txt可以看到这条语句,查询的时间及语句

慢查询日志工具

  • s:表示按照何种方式排序
  • c:访问次数
  • l:锁定时间
  • r:返回记录
  • t:查询时间
  • al:平均锁定时间
  • ar:平均返回记录数
  • t:即为返回前面多少条的数据

用法

在linux中执行

-- 查看mysqldumpslow有什么功能
mysqldumpslow --help

-- 得到返回记录集最多的10个SQL
mysqldumpslow -s r -t 10  D:/phpStudy/PHPTutorial/MySQL/slow_log.txt

-- 得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 D:/phpStudy/PHPTutorial/MySQL/slow_log.txt

批量插入数据

函数和存储过程

-- 部门表
create table dept(
    id int primary key auto_increment,
    deptno mediumint not null,
    dname varchar(20) not null,
    loc varchar(13) not null
)engine=innodb default charset=utf8;

-- 员工表
create table emp(
    id int primary key auto_increment,
    empno mediumint not null,
    ename varchar(20) not null,
    job varchar(9) not null,
    mgr mediumint not null,
    hiredate date not null,
    sal decimal(7,2) not null,
    comm decimal(7,2) not null,
    deptno mediumint not null
)engine=innodb default charset=utf8;
创建函数

如果报错:this function has none of DETERMINISTIC…查看参数

mysql中各种函数,参考:https://www.runoob.com/mysql/mysql-functions.html

show variables like 'log_bin_trust_function_creators%';

-- 如果是off,打开
set global log_bin_trust_function_creators=1;

-- 随机产生字符串
DELIMITER $$ --分隔符
CREATE FUNCTION rand_string(n INT) RETURNS VARCHAR(255)
BEGIN
DECLARE chars_str VARCHAR(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';
DECLARE return_str VARCHAR(255) DEFAULT '';
DECLARE i INT DEFAULT 0;
WHILE i < n DO
SET return_str = CONCAT(return_str,SUBSTRING(chars_str,FLOOR(1+RAND()*48),1));
SET i = i + 1;
END WHILE;
RETURN return_str;
END $$

-- concat用于字符串的拼接
mysql> select concat('my','sql');
+--------------------+
| concat('my','sql') |
+--------------------+
| mysql              |
+--------------------+
1 row in set (0.00 sec)

-- substring用于截取字符串
substring(string,position,length);
-- string 要截取的字符串,position 起始字符(从1开始),length截取长度
-- 随机产生部门编号
delimiter $$
create function rand_num() returns int(5)
begin
declare i int default 0;
set i = floor(100+rand()*10);
return i;
end $$
创建存储过程

存储过程(stored procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程就是数据库sql语言层面的代码封装与重用。

可参考:https://www.runoob.com/w3cnote/mysql-stored-procedure.html

-- 插入数据
delimiter $$
create procedure insert_emp(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit = 0;
repeat
set i = i + 1;
insert into emp(empno,ename,job,mgr,hiredate,sal,comm,deptno) values((start+i),rand_string(6),'saleman',0001,curdate(),2000,400,rand_num());
until i = max_num
end repeat;
commit;
end $$

-- procedure 就是存储过程
-- repeat 表示循环开始
-- curdate() 返回当前日期(年月日,不带时间)

-- 插入数据
delimiter $$
create procedure insert_dept(in start int(10),in max_num int(10))
begin
declare i int default 0;
set autocommit = 0;
repeat
set i = i + 1;
insert into dept(deptno,dname,loc) values ((start+1),rand_string(10),rand_string(8));
until i = max_num
end repeat;
commit;
end $$

关于mysql中的循环可参考:https://www.cnblogs.com/weibanggang/p/9678312.html

调用存储过程
delimiter ;
call insert_dept(100,10);
call insert_emp(100001,500000);
MySQL——慢查询日志分析 注意通用查询日志和慢查询日志都是使用这个命令,使用时一定要注意,一旦执行这个命令,通用查询日志和慢查询日志都只存在新的日志文件中。如果需要备份旧的慢查询日志文件,必须先将旧的日志改名,然后重启MySQL服务或执行mysqladmin命令。MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。新的慢查询日志会直接覆盖旧的查询日志,不需要再手动删除。... 阅读详情

相关推荐

S32K3xx系列DMA驱动实战:EB配置与Mcal接口应用全解析(含Adc硬件触发示例)

本文深入解析S32K3xx系列MCU的DMA驱动开发,涵盖EB工具配置与Mcal接口应用,特别包含ADC硬件触发示例。通过详细架构分析、实战配置步骤和工业级应用案例,帮助开发者掌握AUTOSAR环境下DMA高效数据传输技术,提升汽车电子和工业控制系统的性能。

weixin_29162439的博客 463

MySQL绕过secure_file_priv利用慢查询写shell

通常情况下,找到一个注入点后,或者进入到一个网站的phpMyAdmin时,想通过into outfile写shell时,会通常会报错 这是因为MySQL配置文件中的secure_file_priv的值默认为NULL。 只有当他为非空值的时候才可以利用into outfile写文件。 我们可以利用日志来进行写shell,然后利用文件包含漏洞来包含日志文件,从而拿到服务器一定的权限。 利用慢查询来写shell 1、设置slow_query_log=1.即启用慢查询日志(默认禁用) set global slow

万丈⾼楼平地起,勿在浮沙筑⾼台学艺不精的安全菜鸡,改行回家养猪了,对博客有疑问欢迎留言,看到一定回 3070

搞定汽车座椅电机EMC超标:一个PCB滤波板的实战设计与避坑心得

本文详细介绍了汽车座椅电机EMC超标问题的解决方案,通过PCB滤波板的实战设计,解决了传导发射测试超标问题。文章分享了在空间受限条件下的滤波电路架构设计、接地系统优化及迭代验证过程,为汽车直流电机的EMC整改提供了实用方法论。

weixin_30336061的博客 378

Mysql数据库getshell方法

今天摸鱼时候,突然有人问我不同的数据库getshell的方式,一时间我想到了mysql还有redis未授权访问到getshell的方式,但是仅仅第一时间只想到了这两种,我有查了查资料,找到了上面两种数据库getshell的补充,以及其他数据库getshell的方式。因此更新一个专栏,各个数据库getshell的方式。

weixin_68408599的博客 2789

基于深度学习的时间序列预测

深度学习在时间序列数据中应用广泛,学术界已经有很多深度学习模型来适应不同领域的时间序列数据集的多样性。那么到底有哪些基于深度学习的时间序列预测模型?他们的优缺点是什么?让我们一起来看一下。

Sharon0408的博客 6580

Windows10检查Cuda和cuDNN是否安装成功?

简介:根据上篇博客已经完成了CUDA和cuDNN的安装步骤,完成对其的安装。下面将来检查它们是否安装成功。 1 .首先win+R进入CMD,在命令行输入nvcc -V,如下图所示,则表示cuda已经安装成功。 2 .进入到cuda的安装路径,C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\demo_suite,找到如下两个.exe文件: 首先执行:deviceQuery.exe,查看是否出现如下界面: 然后执行bandwid

jhsignal的博客 14万+

shell脚本实现Mysql慢日志切割

mysql慢日志一般是不开启的,由于mysql慢日志是记录响应时间较长的SOL语句记录,一般小业务公司不建议开启,它会小范围的影响mysql性能。 开启Mysql慢日志,找到mysql的主配置文件: 我的配置文件路径为: /etc/my.cnf 执行此 vim /etc/my.cnf 命令 添加以下内容: slow_query_log = ON #开启慢日志 slow_query_lo...

weixin_42555019的博客 835

Labwindows CVI写上位机与STM32下位机通信(二)

接着上篇,这篇主要谈谈流量计数据读取。我们使用的MEMS流量计采用Modbus协议Modbus 使用RS-485 作为硬件载体。 一. Modbus协议   该协议定义了 Modbus 总线Master(主设备)与Slave(从设备)之间的通讯报文格式,对于主设备来说,Modbus 协议是联系上位机(如PC、PLC、HMI 等)的接口,而且所有的通讯都是“透明的”。控制器通信使用主-从技术,即

yang2011079080010的专栏 1万+

Mysql写shell的几种方式

Mysql写shell的几种方式 当我们拿到数据库权限时,可通过数据库管理工具写入webshell到目标服务器上,利用webshell控制目标服务器。 复现环境: phpstudy_pro 8.1.0.6 mysql 5.7.26 root权限 网站绝对路径为D:\phpstudy_pro\WWW 利用方式: 通过outfile写入shell 尝试通过outfile写入文件 报错[Code: 1290, SQL State: HY000]The MySQL server is running with

Redredredfish的博客 8957

线性代数知识点整理

线性代数基础知识点摘要整理

cuguanren的博客 3万+

MySQL写Shell方法总结

MySQL注入点,用工具对目标站点写入一句话shell,需要哪些前提条件? **root权限以及网站的绝对路径** outfile 和 dumpfile 写Shell 利用条件 ·数据库当前用户为root权限 ·知道当前网站的绝对路径 ·PHP的GPC为OFF状态;(魔术引号,GET、POST、COOKIE) `写入的那个路径要有写入权限 过滤了单引号into outfile 还可以用吗 不能,GPC要OFF才行,可以测试Hex编码 基于UNION联合查询 ?id=1 UNION ALL SELECT

李同學AI安全 5258

基于Simulink的发动机管理系统中的自适应增压控制系统设计

通过上述详细设计步骤,我们成功开发了一个基于Simulink的自适应增压控制系统。该系统不仅能够实时监测和预测发动机的运行状态,动态调整增压压力目标值,还具备实时监控、故障诊断和保护功能,确保系统的安全性和可靠性。此外,通过仿真实验和硬件在环测试,我们验证了系统的性能,并对其进行了优化,使其能够更好地满足实际应用需求。这个项目展示了如何利用MATLAB/Simulink的强大功能,结合控制理论和工程实践,开发出高效、可靠的自适应增压控制系统。

MHD0815的博客 220

mysql 慢查询日志路径_mysql的慢查询日志

慢查询日志概念MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数...

weixin_29214559的博客 3237

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

MySQL慢查询日志,看完你就会了

运维过程中,当开发反馈程序请求很慢时,底层硬件和基础设施环境又没有问题时候,我们可以通过查询数据库慢请求查询日志,可以定位到是哪一条语句查询比较慢,找到这条语句之后,如何去分析它慢的原因呢?最简单的方法,可以通过explain解析。

运维老生常谈 2712

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

mysql慢查询日志轮转_MySQL慢查询日志

一、概述MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值(long_query_time,单位:秒)的SQL语句。默认情况下,MySQL不启动慢查询日志。本文简单介绍如何开启慢查询日志,如何用mysqldumpslow分析慢查询。二、慢查询日志设置1、临时设置临时开启慢查询日志(重启失效)set global slow_query_log = on;注...

weixin_29972373的博客 3449

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Mysql查看慢查询日志

我们在工作中经常会遇到执行很慢的sql语句,今天我们来看一下慢查询日志 查看通用日志 show variables like ‘%general%’; 默认通用日志是关闭的, 开启通用日志查询: set global general_log=on; 关闭通用日志查询: set global general_log=off; 查看当前慢查询日志输出的格式,可以是FILE(存储在数数据库的数据文件中的hostname.log),也可以是TABLE(存储在数据库中的mysql.general_log

Chen_leilei的博客 1万+

MySQL 慢查询日志如何查看及配置

简介 MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能。 查看是否开启慢查询功能: mysql> show variables like 'slow_query%'; +---------------------+------------------------------------+ | Variable_name | Valu...

Hu_wen的专栏 7595

MySQL慢查询日志分析详解

MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数,因为开启慢...

Mr_lisj的博客 1万+

开启 MySQL 慢查询日志

开启 MySQL 慢查询日志 开启mysql的慢查询日志,可以记录查询超过指定时间的sql语句,可以方便更好的优化数据库系统的性能。 一、参数说明 slow_query_log: 慢查询日志开启状态 slow_query_log_file: 慢查询日志存放位置 long_query_time: 查询超过多少秒才记录 二、设置步骤 1、查询相关参数配置 mysql> show variab...

fantasic_van的博客 5970

MySQL开启慢查询日志

本方案只适应于小的项目、项目未上线或者紧急情况下可采用这种方式,一旦开启慢日志查询会增加数据库的压力,所以一般采用后台对数据操作时间写入日志文件中,每一周定时进行清除日志 mysql优化方案:开启慢查询日志(查询sql执行超过一秒以上sql等等)开启慢查询日志:可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。参数说明: slow_query_...

感冒石头的博客 2万+

MySQL慢查询日志

慢查询日志是MySQL提供的一种日志记录功能,它能够记录执行时间超过预设阈值(long_query_time)的SQL查询语句,并将这些信息写入到日志文件中。

qq_39495959的博客 1735

mysql慢查询日志默认在哪里_MySQL 慢查询日志

慢查询日志概念MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中查询响应时间超过阈值的语句,具体指响应时间超过long_query_time 值的 SQL,会被记录到慢查询日志。long_query_time 的默认值是 10s,意思是查询响应时间超过 10s 的 SQL语句。默认情况下,MySQL 是不开启慢查询日志的,需要我们手动设置这个参数值,当然,如果...

weixin_42499692的博客 4428

mysql慢查询日志在哪里

如何查找MySQL中查询慢的SQL语句 你是指慢查询日志吗? 在my.ini中加上下面两句话 log-slow-queries=e:\mysql5.5\mysql_slow_query.log long_query_time=10 前面一句是设置慢查询日志存放路径,第二句是指多少秒以上算慢查询,上面的语句,就是指...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 2347
上一篇: MySql索引优化
下一篇: MySql排序优化
shell-x
博客等级 码龄7年 16粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值