MYSQL 从performance_schema说起,但不止于PS (2)

d9c14835f48c51a1e9d59e52239542e2.png

接上期,上期的连接在文字最下方,上期已经分别对 MYSQL PS 的 threads , instrumnents , consumers 进行了说明和相关的配置方式进行了说明,本期需要继续对PS中的监控信息体系中的events 进行说明, events 是PS 中对于 instruments 标签记录的结果,也就是最终我们要看的结果都是体现在events 中, events 中包含了 四个层次, transactions , statements  , stages , waits  这 四个方面, 

8403818c6a0b9538cbb873aaaeaccb71.png

事务: 在events中的事务是针对事务的隔离级别,事务的状态,等信息进行记录,针对每个连接的threads 的事务进行记录,默认为当前的10个事务进行收集。

语句:这部分是普通监控者最关注的部分,一般关于慢查询的信息也可以从这部分取出,而不用在使用slow query log +  pt-query-digest + 流式数据记录到数据表的方式,当然这里需要熟悉statemnts 中的一些参数以及获取信息的方式。这里的信息包含一个语句执行了多少行,返回了多少信息行,以及是否使用了INDEX ,执行的时间等等信息,这个方式和 POSTGRESQL 的 pg_stat_statements 是类似的。 随时你 可以获知你的语句执行的情况,同样默认的情况,会保留最近的10条语句。

stage:这里包含了 show processlist 的信息。

waits: 这部分包含的信息很多,包含多个mutexes的等待信息,例如 I/O 的等待信息针对系统中各个部分的mutexe, 但如果想看懂这部分信息,需要对提供的参数含义有明确的了解,但这不是很容易的一件事,可以从一些关键的信息入手。

上面的是events的 横向的维度, 那么纵向的维度,就是 current , history , history-long 这几个项目了, current 就是刚才提到的,每种维度的信息大概默认都是保留最近10条, history 保留的是一个历史的信息保证系统在出现故障重启后,你还能获得刚才已经丢失的信息,history-long 则是可以设置保留这些信息最大的容量,一般默认是10000条。

所以到此为止,如通你从第一期看的话,你就明白为什么第一次对于instruments 要进行设置,而不是 直接去全部OPEN。 

但实际上这样的问题并不单纯,每个事件本身可能是事务中的某个部分,这就造成事件发生后,还会有上一层就是触发他发生问题的另一个时间。

0d654b0bb614f62b073dd5e81040e28f.png

在这些events中会有 nesting_events_id  nesting_event_type 来这对这个时间是否存在上一个父时间,或关联时间进行注释。所以可以针对表写出递归查询。

c241e91dc6255c93a8814a505d9de5c8.png

对于事件中的信息,包含了 timer_start, time_end, timer_wait  等信息,从中可以判断这个事务等待的时间,何时开始,合适结束。对于其中使用的时间单位,皮秒可以使用提供的 format_pico_time 函数来解决,将其转换为可以识别的人类时间。这个函数是在MYSQL 8.016 提供的,所以使用MYSQL 8 的情况下,尽量使用更新的版本目前最新的版本是 8.027

51bb08978af5206380d421ae1c19a223.png

f4c85af3c8c92985efaea89e21e3415e.png

同时举例如events_statements_current ,通过这个表可以查看当前正在执行的语句中的最后10条,这里使用了一项类似PT-QUERY-DIGEST 的技术,就是针对语句进行分类, 语句的条件是变化的,但语句的结构是一致的,可以通过 statment_digest 函数针对你想要查询的语句进行 digest 码的生成,可以瞬间找到类似的语句,以及计算整体这样的语句的数量。

1fbd7e67426c0ac7daf1e85e7efc8b03.png

通过函数 statement_digest 来计算每个语句的 digest 值,通过这个值可以对比结构类似条件不一致的语句。

c5aeed6bbe88ce6dc5a23a33e7025cac.png

通过可以通过performance_schema 中的setup  表对于其中获取信息的组件进行信息的停止收集和打开。

a671c263b79b1764b53fad0f68d5113d.png

对于SETUP 表,直接使用UPDATE 语句对其中的ENABLED值进行改变

7390e559c46100c630fc014515baa7f4.png

e75294de1645e5e1089999561c6a8505.png

MYSQL 从performance_schema说起,但不止于PS (1)

https://mp.weixin.qq.com/s?__biz=Mzg4NDA0NTEwNA==&mid=2247494482&idx=1&sn=c6fd81b9a6303df9285147d9b87df5cd&chksm=cfbc8f0df8cb061b019945d3d523bb32f563edde3b2914a907e571a09461668a9b5f60561bda&token=1980463622&lang=zh_CN#rd

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值