Show Profile 进行 SQL 分析

数据库优化 学习笔记

一、Show Profile 进行 SQL 分析


        是 MySQL 提供可以用来分析当前会话中语句执行的资源消耗情况,可以用于 SQL 的调优的测量。默认情况下,参数处于关闭状态,并保存最近 15 次的运行结果。

1.1、Show Profile 分析步骤

  • 是否支持,看看当前 MySQL 版本是否支持(大于 5.5 的基本上都支持)。

  • 开启功能,默认是关闭,使用前需要开启。

	-- 查看是否开启, 默认关闭 OFF
	show variables like 'profiling';
	-- 开启
	set profiling=on;

	-- 开启有什么用? 可保存最近 15 次的运行结果
	'(随便写几条语句测试一下)'
	
	-- 查看每条语句使用的时间
	show profiles;

	-- 查看语句具体执行了哪些步骤及其时间
	show profile cpu,block io for query 1;

在这里插入图片描述
在这里插入图片描述

1.2、查看的参数

  • all 显示所有的开销信息
  • block io 显示块IO相关开销
  • cpu 显示CPU相关开销信息
  • ipc 显示发送和接收相关开销信息
  • memory 显示内存相关开销信息
  • page faults 显示页面错误相关开销信息

    主要关注下面几个:

  • converting HEAP to MyISAM 查询结果太大,内存都不够用了往磁盘上搬

  • Creating tmp table 创建临时表(这个很耗时)

  • Copying to tmp table on disk 把内存中临时表复制到磁盘(这个很危险)

  • locked 锁(这也是个很危险的东西)



二、全局查询日志


        在生产过程中不要开启,因为它会把每一条语句(有可能用户点击一次就是一条)都会被记录在一个表里。

        那么什么时候开呢?        不是慢查询导致的问题,需要复现的时候开启,查看执行了那些语句。

  • 开启
	set global general_log = 1;
  • 将SQL语句写到表中
	set global log_output = 'TABLE';
  • 所编写的 SQL 语句,会记录到 MySQL 库里的 genral_log 表
	select * from mysql.general_log;
发布了85 篇原创文章 · 获赞 0 · 访问量 1244

猜你喜欢

转载自blog.csdn.net/qq_43621629/article/details/103874638