You need to enable JavaScript to run this app.
导航
性能监控管理
最近更新时间:2024.09.27 14:48:06首次发布时间:2024.07.08 20:23:40

数据库工作台 DBW 支持性能监控功能,该功能可以提供丰富的性能监控指标项。通过这些指标,您可以查看数据库实例的性能趋势,及时发现数据库实例中可能存在的风险。本文将介绍性能监控的指标和查看性能监控的操作步骤,协助您了解数据库实例的运行情况。

前提条件

已创建云数据库 MySQL 版实例且实例状态为运行中。详细操作,请参见创建实例

注意事项

  • 查看 SQL 索引优化建议时大约需要 10 到 20 秒。
  • 索引优化建议是基于对表的部分数据进行采样分析得出的,生成的优化建议仅供参考,需要根据实际情况进一步评估。
  • 性能监控指标的监控粒度与查询时间范围相关,查询时间范围跨度越大,指标监控粒度也越大。例如时间范围在 6 小时内时,监控粒度为 30s;时间范围在 24 小时内时,监控粒度为 1min;时间范围为 3 天时,监控粒度为 5min。

监控指标

指标项英文名称单位说明
慢查询数slow_queries_pscount/s查询时间超过 long_query_time 秒的查询的个数。
InnoDB 表当前等待 Row Locks 次数InnoDB_row_lock_current_waitscountInnoDB 表等待 Row Locks 的次数。
更新数com_update_pscount/s每秒更新数。
插入数com_insert_pscount/s每秒执行的 INSERT 请求数。
删除数com_delete_pscount/s每秒删除数。
查询数com_select_pscount/s每秒数据库接收和处理的查询数。
总查询数queries_pscount/s数据库接收和处理的所有查询数。
全表扫描数select_scan_pscount/s执行全表搜索查询的数量。
运行线程数threads_runningcount/s激活的(非睡眠状态)线程数。
当前打开连接数threads_connectedcount当前打开的连接的数量。
InnoDB 每秒写入 Redo Log 日志量innodb_os_log_written_psbytes/sInnoDB 每秒写入 Redo Log 的日志量。
平均每秒从所有客户端接收到的字节数bytes_received_psbytes/s平均每秒服务器从所有客户端总共接收到的数据大小。
平均每秒发送给所有客户端的字节数bytes_sent_psbytes/s平均每秒服务器向客户端发送的数据大小。
InnoDB 读取量innodb_data_read_pscount/sInnoDB 引擎每秒已经完成读取数据的字节数。
InnoDB 写入量innodb_data_written_pscount/sInnoDB 引擎每秒已经完成写数据的字节数。

InnoDB 平均每秒物理写 Redo Log File 次数

innodb_log_writes_ps

count/s

InnoDB 平均每秒物理写 Redo Log File 的次数。

InnoDB 平均每秒执行 Fsync 操作的次数innodb_os_log_fsyncs_pscount/s平均每秒 MySQL 数据库 InnoDB 存储引擎对磁盘进行 I/O 操作次数。
InnoDB 行删除量innodb_rows_deleted_pscount/s每秒 InnoDB 引擎删除的行数。
InnoDB 行插入量innodb_rows_inserted_pscount/s每秒 InnoDB 引擎插入的行数。
InnoDB 行读取量innodb_rows_read_pscount/s每秒 InnoDB 引擎读取的行数。
InnoDB 行更新量innodb_rows_updated_pscount/s每秒 InnoDB 引擎更新的行数。
CPU 使用率cpu_usage%数据库的 CPU 使用率。
内存使用率mem_usage%数据库的内存使用率。
磁盘使用率disk_usage%磁盘使用空间或实例购买空间。
InnoDB Buffer Pool 刷 Page 请求数量innodb_buffer_pool_pages_flushed_pscount/s每秒 InnoDB Buffer Pool 刷 Page 的请求数量。
InnoDB 平均每秒从 Buffer Pool 读取页的次数(逻辑读)innodb_buffer_pool_read_requests_pscount/s每秒 InnoDB 存储引擎从 Buffer Pool(缓冲池)读取的页数。
InnoDB 平均每秒往 Buffer Pool写入页的次数innodb_buffer_pool_write_requests_pscount/s每秒 InnoDB 存储引擎向 Buffer Pool(缓冲池)写入的页数。
InnoDB Buffer Pool 脏页比率innodb_bp_dirty_pct%InnoDB Buffer Pool 脏页比率,计算公式为 Innodb_buffer_pool_pages_dirty/Innodb_buffer_pool_pages_da
平均每秒等待空闲页可用的次数innodb_buffer_pool_wait_free_pscount/s平均每秒等待空闲页可以的次数。

查看性能监控指标

您可以查看在查询时间段内性能的发展趋势。

  1. 登录 DBW 控制台

  2. 在左侧导航栏,选择运维管理 > 观测诊断

  3. 在顶部菜单栏,选择项目和地域。

  4. 观测诊断页面,单击性能监控

    说明

    您也可以通过实例 ID 搜索切换至目标实例。

  5. 性能监控页签左上角,切换至目标实例。

  6. 性能监控页签,按需设置查询时间、节点和指标项,查看指标信息。

    关于性能监控的详细信息,请参见监控指标

查看性能监控分析结果

数据库工作台 DBW 支持对慢查询数和 InnoDB 表当前等待 Row Locks 次数性能指标项进行诊断分析。

  1. 登录 DBW 控制台

  2. 在左侧导航栏,选择运维管理 > 观测诊断

  3. 在顶部菜单栏,选择项目和地域。

  4. 观测诊断页面,单击性能监控

    说明

    您也可以通过实例 ID 搜索切换至目标实例。

  5. 性能监控页签左上角,切换至目标实例。

  6. 性能监控页签,按需设置查询时间、节点,查看慢查询数和 InnoDB 表当前等待 Row Locks 次数的诊断分析结果。

    指标项说明

    慢查询数

    慢查询数(count/s)区域,将鼠标悬浮在该区域的某个时间点,在弹出的对话框中单击诊断分析,在诊断分析控制面板,查看以下信息:

    • 慢查询数:在该区域,查看某个诊断时间点慢查询数的发展趋势。

    • TOP8 慢 SQL:在该区域,按需选择节点 ID,进行以下操作:

      • 查看 SQL 模板信息:包括 SQL 模板数据库执行 UserIP 来源执行次数总耗时最大化执行时间(s)平均执行时间 (s)最大锁等待时间 (s)最大返回行数平均返回行数最大扫描行数平均扫描行数首次出现时间最后出现时间

      • 查看 SQL 索引优化建议:

        1. 单击目标 SQL 模板操作列的 SQL 索引优化,在允许授权对话框,单击授权

          • 索引优化建议功能需要对数据库和表的内容进行采样分析,因此首次查看 SQL 的索引优化建议时,您需要授权数据库工作台 DBW 读取数据库和表。如已开启,则无需再进行该操作。

          • 查看 SQL 索引优化建议大约需要 10 到 20 秒。

        2. SQL 优化建议对话框,查看 SQL 优化建议包括新建索引建议SQL 改写建议

    InnoDB 表当前等待 Row Locks 次数

    InnoDB 表当前等待 Row Locks 次数区域,将鼠标悬浮在该区域的某个时间点,单击诊断分析,在诊断分析控制面板,查看以下信息:

    • InnoDB 表当前等待 Row Locks 次数:在该区域查看某个诊断时间点的 InnoDB 表当前等待 Row Locks 次数的发展趋势。

    • 锁等待列表:在该区域,按需选择节点 ID,进行以下操作:

      • 查看事务 ID 信息:包括事务 ID事务状态行锁等待 SQL事务开始时间事务等待开始时间阻塞等待时间(s)事务修改行数事务锁定行数事务操作状态阻塞事务 ID阻塞事务状态事务上下文信息(阻塞者 SQL)阻塞事务开始时间阻塞事务等待开始时间阻塞事务修改行数阻塞事务操作状态

      • 查看锁等待详情:

        1. 锁等待列表区域,单击目标事务 ID 操作列的查看详情

        2. 锁等待详情对话框,查看会话 ID阻塞事务会话 ID

          • 会话 ID:包括事务 ID事务状态等待查询事务开始时间事务等待开始时间阻塞等待时间事务修改行数锁定行数事务操作状态

          • 阻塞事务会话 ID:包括阻塞事务 ID阻塞事务状态事务上下文信息阻塞事务等待开始时间被阻塞等待时间阻塞事务修改行数阻塞事务锁定行数阻塞事务操作状态

FAQ

为什么在性能监控页面查看慢查询和 InnoDB 表当前等待 Row Locks 次数都有数据,但在诊断分析控制面板却没数据?

由于云监控和数据收集器 Collector 的采集频率不一致,导致这两个性能指标在性能监控页面和诊断分析控制面板的数据不一致。

为什么事务与锁页面采集的死锁时间、死锁次数和性能监控采集的不一致?

InnoDB 表当前等待 Row Locks 锁、事务持有锁和死锁不一致的原因如下所示:

  • InnoDB 表当前等待 Row Locks 锁(Row Locks Waiting):当一个事务尝试获取已被另一事务锁定的行数据的锁时,该事务将在获取锁之前进入等待状态,这种锁被称为等待行锁。这是数据库为了确保数据一致性而实施的一种并发控制机制。

  • 事务持有锁(Holding Locks): 事务在开始执行后,会对其需要访问的数据加锁,从而保护这部分数据在事务执行过程中不会被其他事务更改。这种锁就被称为持有锁。一个事务可以持有多个锁,这些锁可以是行锁(锁定单条记录)或者表锁(锁定整个表)。

  • 死锁(Deadlocks):死锁是指两个或多个事务在执行过程中,因互相持有对方所需的资源而导致的阻塞状态。例如,事务 A 持有资源 1 并等待获取资源 2,而事务 B 持有资源 2 并等待获取资源 1,这就构成了一个死锁。当死锁发生时,数据库系统通常会通过某种机制(如死锁检测和超时机制等)来终止并回滚其中一个事务,以解决死锁。