当前位置:网站首页>MySQL-慢查询日志
MySQL-慢查询日志
2022-08-02 07:00:00 【kk_lina】
目录
一、相关参数
-- 临时方式
# 查询是否开启慢查询日志
show variables like '%slow_query_log%';
# 开启慢查询日志
set global slow_query_log = on;
# 查看时间阈值
show variables like '%long_query_time%';
# 设置时间
set long_query_time=1;
# 查询有多少慢查询记录
show status like 'slow_queries';
# 删除慢查询日志
rm ***.log
# 使用指令来重新生成
mysqladmin -uroot -p flush-logs slow
-- 永久方式
[mysql]
slow_query_log=ON # 开启慢查询日志
slow_query_log_file=/var/lib/mysql/***.log # 慢查询日志的目录和文件名信息 /usr/local/mysql/data/KanlinadeMacBook-Pro-slow.log
long_query_time=3 #设置慢查询的阈值为3秒,超出此设定的sql即被记录为慢查询日志
log_output=FILE二、分析工具 mysqldumpslow
根目录下执行,mysqldumpslow -help; 查看相关指令用法。
# 按照时间排序查看慢查询日志前5条
mysqldumpslow -s t -t 5 /usr/local/mysql/data/KanlinadeMacBook-Pro-slow.log 三、查看执行成本 show profile
# 查看是否开启
show variables like 'profiling';
#设置开启
set profiling='ON';
# 查看最近查询语句
show profiles;
# 查看指定查询语句具体执行成本
show profile cpu,block io for quert 1;四、分析查询语句:EXPLAIN
4.1、能做什么
- 表的读取顺序;
- 数据读取操作的操作类型;
- 哪些索引可以使用;
- 哪些索引实际被使用;
- 表之间的引用;
- 每张表有多少行被优化器查询。
4.2、基本语法
EXPLAIN 语句
或
DESCRIBE 语句
4.3、语句输出各个列的作用

- table:查询的每一条记录对应一个单表;
- id:在一个大的查询语句中每个select关键字都对应一个唯一的id;
- select_type:小查询在大查询中扮演什么角色;
- type:mysql执行查询时对表的访问方法:system(当表中只有一条数据并且该表的存储引擎统计数据是精确的),const(主键或者唯一二级索引与常数进行匹配),eq_ref(连接查询时,被驱动表通过主键或者唯一二级索引列等值匹配的方式进行访问),ref(通过普通二级索引列与常量进行等值匹配是来查询),index_merge(单表访问方法时再某些场景下可以使用Intersection、Union、Sort-Union这三种索引合并的方式来执行查询),unique_subquery(将in查询转换成exists,而且子查询可以使用到主键进行等值匹配),range(范围查询),index(使用索引覆盖,但需要扫描全部索引记录时),all(全表扫描)。
- possible_keys:可能使用到的索引;
- key:真实使用的索引;
- key_len:实际使用到的索引长度(字节数),值越大越好
- ref:与索引列进行等值匹配的对象信息;
4.4、小结
- EXPLAIN不考虑各种Cache;
- EXPLAIN不能显示MySQL在执行查询时所作的优化工作;
- EXPLAIN不会告诉你关于触发器、存储过程的信息或者用户自定义函数对查询的影响;
- 部分统计信息是估算的,并非精确值。
4.5、四种输出格式
- 传统格式:表格形式
- JSON格式:EXPLAIN FORMAT=JSON,多了一个衡量计划好坏的形式
- TREE格式:根据各部分查询顺序与关系
- 可视化输出:mysql workbench
五、分析优化器执行计划:trace
5.1、相关语句
# 开启trace并设置格式为JSON
set optimizer_trace="enabled=on",end_markers_in_json=on;
set optimizer_trace_max_mem_size=1000000;可以写增删改查语句
# mysql如何执行
select * from information_schema.optimizer_trace \G
# 查询冗余索引
select * from sys.schema_redundant_indexes;
# 查询未使用过的索引
select * from sys.schema_unused_indexes;
# 查询索引的使用情况
select index_name,rows_selected,rows_inserted,rows_updated,rows_deleted
from sys.schema_index_statistics where table_schema='dbname';
# 查询表的访问量
select table_schema,table_name,sum(io_read_requests+io_write_requests) as io
from sys.innodb_buffer_stats_by_table
order by allocated
limit 10
# 查询占用bufferPool较多的表
select object_schema,object_name,allocated,DATA
from sys.innodb_buffer_stats_by_table
order by allocated
limit 10
# 查看表的全表扫描情况
select * from sys.statements_with_full_table_scans where db='dbname'
边栏推荐
猜你喜欢

2020美亚团队赛复盘

初探形式化方法基本原理

根据一个字段的内容去更新另一个字段的数据,这样的sql语句该怎么样书写

第06章 索引的数据结构【2.索引及调优篇】【MySQL高级】

企业实训复现指导手册——基于华为ModelArts平台的OpenPose模型的训练和推理、基于关键点数据实现对攀爬和翻越护栏两种行为的识别、并完成在图片中只标注发生行为的人

Day 4 of HCIP

【ROS基础】map、odom、base_link、laser 的理解 及其 tf 树的理解

2022.07.31(LC_6133_分组的最大数量)

正则表达式的理解学习

Vscode connect to remote server "Acquiring the lock on the/home / ~ 'problem
随机推荐
交换--STP协议
sql 远程访问链接服务器
张驰课堂:六西格玛培训工具——箱线图
gdalinfo: error while loading shared libraries: libgdal.so.30: cannot open shared object file: No su
【机器学习】实验4布置:AAAI会议论文聚类分析
【图像去噪】基于matlab双立方插值和稀疏表示图像去噪【含Matlab源码 2009期】
【ROS基础】map、odom、base_link、laser 的理解 及其 tf 树的理解
【暑期每日一题】洛谷 P1551 亲戚
See the picture to understand | How to choose sales indicators to measure the health of business growth
“蔚来杯“2022牛客暑期多校训练营5,签到题KBGHFCD
【CV】OpenVINO安装教程
OC-Category
电商库存系统的防超卖和高并发扣减方案
LeetCode SQL 197. 上升的温度
分离轴定理SAT凸多边形精确碰撞检测
每周推荐短视频:为什么产品开发需要数字化?如何做到数字化?
【故障诊断分析】基于matlab FFT轴承故障诊断(包络谱)【含Matlab源码 2002期】
(Part of it is not understood, and the notes are not completed) [Graph Theory] Difference Constraints
System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可 访问的日志: Security
OC-NSNumber and NSValue are generally used for boxing and unboxing