知识

MySQL运行时的可观测性

字号+作者:益华科技来源:域名2025-11-05 08:20:32我要评论(0)

1. 说在前面的话在MySQL里,一条SQL运行时产生多少磁盘I/O,占用多少内存,是否有创建临时表,这些指标如果都能观测到,有助于更快发现SQL瓶颈,扑灭潜在隐患。从MySQL 5.7版本开始,pe

1. 说在前面的行时性话

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

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

MySQL运行时的可观测性

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

2. 安装employees测试库

安装MySQL官方提供的employees测试数据库,戳此链接(https://dev.mysql.com/doc/index-other.html)下载,解压缩后开始安装:

复制$ mysql -f < employees.sql; INFO CREATING DATABASE STRUCTURE INFO storage engine: InnoDB INFO LOADING departments INFO LOADING employees INFO LOADING dept_emp INFO LOADING dept_manager INFO LOADING titles INFO LOADING salaries data_load_time_diff 00:00:371.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.

MySQL还提供了相应的使用文档:https://dev.mysql.com/doc/employee/en/

本次测试采用GreatSQL 8.0.32-24版本,且运行在MGR环境中:

复制greatsql> \s ... Server version: 8.0.32-24 GreatSQL, Release 24, Revision 3714067bc8c ... greatsql> select MEMBER_ID, MEMBER_ROLE, MEMBER_VERSION from performance_schema.replication_group_members; +--------------------------------------+-------------+----------------+ | MEMBER_ID | MEMBER_ROLE | MEMBER_VERSION | +--------------------------------------+-------------+----------------+ | 2adec6d2-febb-11ed-baca-d08e7908bcb1 | SECONDARY | 8.0.32 | | 2f68fee2-febb-11ed-b51e-d08e7908bcb1 | ARBITRATOR | 8.0.32 | | 5e34a5e2-feb6-11ed-b288-d08e7908bcb1 | PRIMARY | 8.0.32 | +--------------------------------------+-------------+----------------+1.2.3.4.5.6.7.8.9.10.11.12.13.

3. 观测SQL运行状态

查看当前连接/会话的连接ID、内部线程ID:

复制greatsql> select processlist_id, thread_id from performance_schema.threads where processlist_id = connection_id(); +----------------+-----------+ | processlist_id | thread_id | +----------------+-----------+ | 110 | 207 | +----------------+-----------+1.2.3.4.5.6.

查询得到当前的连接ID=110,内部线程ID=207。源码下载

P.S,由于本文整理过程不是连续的,所以下面看到的 thread_id 值可能会有好几个,每次都不同。

3.1 观测SQL运行时的内存消耗

执行下面的SQL,查询所有员工的薪资总额,按员工号分组,并按薪资总额倒序,高防服务器取前10条记录:

复制greatsql> explain select emp_no, sum(salary) as total_salary from salaries group by emp_no order by total_salary desc limit 10\G

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 电脑百度打开显示错误,如何解决?(遇到电脑百度打开显示错误该怎么办?)

    电脑百度打开显示错误,如何解决?(遇到电脑百度打开显示错误该怎么办?)

    2025-11-05 07:46

  • 索尼笔记本SVT141的性能与特点剖析(一款轻薄便携的高性能笔记本电脑)

    索尼笔记本SVT141的性能与特点剖析(一款轻薄便携的高性能笔记本电脑)

    2025-11-05 07:36

  • XP系统装机教程(适用于各种电脑配置,让你轻松搭建稳定的XP系统)

    XP系统装机教程(适用于各种电脑配置,让你轻松搭建稳定的XP系统)

    2025-11-05 07:16

  • 小米装Win10教程(轻松实现小米手机安装Windows10的全过程)

    小米装Win10教程(轻松实现小米手机安装Windows10的全过程)

    2025-11-05 07:14

网友点评