IT袋

当前位置:主页 > 经验教程 > 建站编程 >

MySQL运行时的可观测性

MySQL运行时的可观测性 观察MySQL运行时的可见性

时间:2024-01-23 18:47:47 来源:IT袋 作者:马勇
导读:MySQL运行时的可观测性,关于MySQL运行时的可观测性方面的知识,相关内容具体如下: 1. 说在前面的话 在MySQL里,一条SQL运行时产生多少磁盘I/O,占用多少内存,是否有创建临时表,这些指标如果

MySQL运行时的可观测性

关于MySQL运行时的可观测性方面的知识,相关内容具体如下:

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:37

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         |
+--------------------------------------+-------------+----------------+

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 |
+----------------+-----------+

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

PS:由于本文整理过程不是连续的,所以下面看到的 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. row ***************************
           id: 1
  select_type: SIMPLE
        table: salaries
   partitions: NULL
         type: index
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 7
          ref: NULL
         rows: 2838426
     filtered: 100.00
        Extra: Using temporary; Using filesort

相关阅读

  • 虚拟化ESXi常见故障问题及解决方案

    虚拟化ESXi常见故障问题及解决方案

    为网友们详解虚拟化ESXi常见故障问题及解决方案的介绍,相关内容具体如下: 一、 针对VMWare集群相关问题 1.1 问题 1) ESXi集群资源不足,存在很多虚拟机,配置很高,资源利用率很低;业务

  • vSphere之VMkernel网络层

    vSphere之VMkernel网络层

    今日重点为您介绍vSphere之VMkernel网络层方面的内容,请看下面详细的介绍。 VMkernel 网络层用于VSS(标准交换机),提供与主机的连接,并处理 vSphere vMotion、IP 存储、Fault Tolerance、vSAN 等其他服

  • 广域网 WAN的主要特点是什么

    广域网 WAN的主要特点是什么

    如果想知道的相关介绍,接下来IT袋网小编为大家介绍。 广域网(Wide Area Network)跨越更大的地理区域,通常连接不同城市、国家甚至大洲的设备。 特点 广泛范围: WAN的范围非常广泛,可以连

  • UDP是什么协议? UDP的主要特点和功能

    UDP是什么协议? UDP的主要特点和功能

    为网友们详解UDP是什么协议的相关经验,接下来IT袋网带大家一起了解。 UDP(用户数据报协议,User Datagram Protocol)是一种传输层协议,用于在网络中的两个节点(例如计算机、服务器等)之间