MySQL调优总结——1 show profile,Performance Schema, show processlist

SQL优化器有两种,RBO(基于规则优化),CBO(基于成本优化),现在工作中一般基本使用CBO。

话不多说,直接上步骤。

一、性能监控

1. profiling

通过开启profiling,使用show profile查询剖析工具。
先写一条查询语句,我查询了整张表的信息,如图所示:
在这里插入图片描述

最后一行,可以看到,显示时间为 0.00sec, 说明只显示到了小数点后两位,为了更精确、清楚的看到时间,我们开启profiling.

MySQL在5.0之后有个分析查询语句非常重要的利器,就是profiling。

mysql> set profiling = 1;
Query OK, 0 rows affected (0.00 sec)

开启后再进行查询操作,使用show profiles查看开启profiling后被记录分析的操作。如图:
在这里插入图片描述
由Duration可以看到Query_ID为1 的SQL语句的查询时间。
进行多次操作后,使用show profile查询最近一条语句的具体执行过程分析。

在这里插入图片描述
通过Query_ID查看指定语句的具体执行过程分析:
eg, show profile for query 3

在这里插入图片描述
通过分析查询器我们可以找到SQL语句中耗时多的地方,从而进行优化。
选择类型剖析查询:

命令类型解释用法
all显示所有性能信息show profile all;
block io显示块IO次数show profile block io for query n;
context switches显示上下文切换次数,被动/主动show profile context switches for query n;
cpu显示CPU时间show profile cpu;
ipc显示发送和接收消息的数量show profile ipc;
page faults显示页错误数量show profile page faults for query n;
source显示源码中的函数名称和位置show profile source;
swaps显示swap的次数show profile swaps;

2. Performance Schema

The MySQL Performance Schema is a feature for monitoring MySQL Server
execution at a low level. The Performance Schema has these
characteristics.

这是MySQL官网上对Performance Schema解释的一句话,大意是Performance Schema是一个运行在较低级别里的具有监控MySQL Server执行的功能。
具体可看:https://dev.mysql.com/doc/refman/8.0/en/performance-schema.html
用法:
通过select * from events_waits_current\G; 从表中信息可得到该表中有多少当前线程在运行以及线程运行的其它信息,用来显示每个线程的最新监视事件。
好处是Performance Schemashow profile功能更全,当从SQL语句执行时间等的执行过程分析中无法找到原因进行优化时,用Performance Schema可以直接查看表中有哪些线程在运行,从每个线程的包含信息记录中找到耗时原因。

3. show processlist

使用show processlist查看连接的线程个数,对长时间连接的、无用的线程可通过quit进行关闭.
在这里插入图片描述
Id: 线程id(/session id)

User: 表示操作的用户。

Host: 表示操作的主机。

db: 表示操作的数据库。

Command: 表示命令的类型。

Time: 表示该命令执行的时间。

State: 表示命令执行的状态。

Info: 表示详细的SQL语句。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值