Show profile 简介
Show Profile 是 MySQL 提供的可以用来分析当前会话中,SQL 语句资源消耗情 况的工具,可用于 SQL 调优的测量。在当前会话中.默认情况下处于 show profile 是关闭状态,打开之后保存最近 15 次的运行结果 针对运行慢的 SQL,通过 profile 工具进行详细分析.可以得到 SQL 执行过程中 所有的资源开销情况. 如 IO 开销,CPU 开销,内存开销等
通常在工作当中,我们会通过一些Mysql提供的一些语法来使用Show profile ;
#查看数据库是否支持show Profile,如果查询profiling出来的结果是是off,可以通过以下语句自行开启。
show variables like '%profiling%';
###################开启profile################
set profiling = on;
##################关闭profile################
set profiling = off;
#########查看show profiles 开启后执行记录
show PROFILES;
# 返回如下属性
# Query_ID 开启后profiling查询的记录数
# Duration 代表查询这条SQL持续的时间
# 诊断SQL(会展示某个sql查询的具体生命周期)
show profile cpu ,block io for query 1;
# 返回如下属性
# ALL :显示所有的开销
# BLOCK IO 显示块IO开销
# CONTEXT SWITCHES :上下文切换的开销
# CPU :显示CPU相关的开销
# IPC:显示发送和接收的开销
# MEMORY:显示内存相关的开销
# PAGE FAULTS 显示页面错误方面的开销
# SOURCE:显示source_function ,source_file方面开销
# SWAPS:显示交换次数方面的开销
# converting HEAP to MyISM :查询结果太大,内存不够用往磁盘上写
# creating temp table :创建临时表,将数据拷贝到临时表中,用完再删除(十分耗时)。
# copying to temp table on disk :把内存中的临时表复制到磁盘(十分危险,必须优化)
# locked :死锁
# 除了用show profile 外还可以通过全局日志查询(千万不能在生产环境中用!!!!!!,只能在测试环境中用)(不推荐,建议通show profile)
# 查看全局日志开启状态 show variables like '%general_log%'
MySQL 程序配置优化
Mysql的配置优化
一般是通过
Mysql
中的配置文件
my.cnf
来完成的,
比如: Mysql5.7 版本默认的最大连接数是
151
个,这个值可以在
my.cnf
中修改。
binlog
日志,默认是不开启
缓存池
bufferpoll
的默认大小配置等。
由于这些配置一般都和用户安装的硬件环境以及使用场景有关系,因此这些配置
官方只会提供一个默认值,具体情况还得由使用者来修改。
关于配置项的修改,需要关注两个方面。
l 配置的作用域,分为会话级别和全局
l 是否支持热加载
因此,针对这两个点,我们需要注意的是:
l 全局参数的设定对于已经存在的会话无法生效
l 会话参数的设定随着会话的销毁而失效
l 全局类的统一配置建议配置在默认配置文件中,否则重启服务会导致配置失效