会员登录 - 用户注册 - 设为首页 - 加入收藏 - 网站地图 MySQL运行时的可观测性!

MySQL运行时的可观测性

时间:2025-11-04 13:40:49 来源:益强数据堂 作者:数据库 阅读:713次

1. 说在前面的行时性话

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

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

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。IT技术网

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

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

执行下面的SQL,查询所有员工的薪资总额,按员工号分组,并按薪资总额倒序,b2b信息网取前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

(责任编辑:应用开发)

推荐内容
  • 电脑服装制作设计教程(利用电脑软件与技巧,让你成为时尚设计大师)
  • HPpe刷BIOS教程(利用HPpe工具进行BIOS刷写,提升计算机性能与稳定性)
  • 精钢Q5(打造高品质体验的精钢Q5手机)
  • 小米水壶(品质保证,随时随地都能享受温暖)
  • vivo手机4寸屏手机的特点与优势(小巧便携,功能强大,实用性超越预期)
  • 全面指南(轻松学习并安装Ghost的最佳方法)