数据库的运行时环境有很多数据值得我们关注,无论对系统运行,还是SQL性能,都是有所帮助的,像Oracle、MySQL动态性能视图,就起到这个作用,技术社群的这篇文章《MySQL运行时的可观测性》,借鉴学习。

在MySQL里,一条SQL运行时产生多少磁盘I/O,占用多少内存,是否有创建临时表,这些指标如果都能观测到,有助于更快发现SQL瓶颈,扑灭潜在隐患。

从MySQL 5.7版本开始,performance_schema就默认启用了,并且还增加了sys schema,到了8.0版本又进一步得到增强提升,在SQL运行时就能观察到很多有用的信息,实现一定程度的可观测性。

下面举例说明如何进行观测,以及主要观测哪些指标。

MySQL运行时的可观测性_SQL

MySQL运行时的可观测性_SQL_02

MySQL运行时的可观测性_mysql_03

MySQL运行时的可观测性_mysql_04

MySQL运行时的可观测性_MySQL_05

MySQL运行时的可观测性_数据库_06

MySQL运行时的可观测性_公众号_07

MySQL运行时的可观测性_mysql_08

MySQL运行时的可观测性_数据库_09

上面就是这条SQL的运行进度展示,以及各个阶段的耗时,和PROFILING的输出一样,当我们了解一条SQL运行所需要经历的各个阶段时,从上面的输出结果中也就能估算出该SQL大概还要多久能跑完,决定是否要提前kill它。

更多的观测指标、维度还有待继续挖掘。

另外,我们还可以利用MySQL Workbench工具,或MySQL Enterprise Monitor,都已集成了很多可观测性指标,相当不错的体验。

如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"