数据库工作台 DBW 支持性能监控功能,该功能可以提供丰富的性能监控指标项。通过这些指标,您可以查看数据库实例的性能趋势,及时发现数据库实例中可能存在的风险。本文将介绍性能监控的指标和查看性能监控的操作步骤,协助您了解数据库实例的运行情况。
已创建云数据库 MySQL 版实例且实例状态为运行中。详细操作,请参见创建实例。
指标项 | 英文名称 | 单位 | 说明 |
---|---|---|---|
慢查询数 | slow_queries_ps | count/s | 查询时间超过 long_query_time 秒的查询的个数。 |
InnoDB 表当前等待 Row Locks 次数 | InnoDB_row_lock_current_waits | count | InnoDB 表等待 Row Locks 的次数。 |
更新数 | com_update_ps | count/s | 每秒更新数。 |
插入数 | com_insert_ps | count/s | 每秒执行的 INSERT 请求数。 |
删除数 | com_delete_ps | count/s | 每秒删除数。 |
查询数 | com_select_ps | count/s | 每秒数据库接收和处理的查询数。 |
总查询数 | queries_ps | count/s | 数据库接收和处理的所有查询数。 |
全表扫描数 | select_scan_ps | count/s | 执行全表搜索查询的数量。 |
运行线程数 | threads_running | count/s | 激活的(非睡眠状态)线程数。 |
当前打开连接数 | threads_connected | count | 当前打开的连接的数量。 |
InnoDB 每秒写入 Redo Log 日志量 | innodb_os_log_written_ps | bytes/s | InnoDB 每秒写入 Redo Log 的日志量。 |
平均每秒从所有客户端接收到的字节数 | bytes_received_ps | bytes/s | 平均每秒服务器从所有客户端总共接收到的数据大小。 |
平均每秒发送给所有客户端的字节数 | bytes_sent_ps | bytes/s | 平均每秒服务器向客户端发送的数据大小。 |
InnoDB 读取量 | innodb_data_read_ps | count/s | InnoDB 引擎每秒已经完成读取数据的字节数。 |
InnoDB 写入量 | innodb_data_written_ps | count/s | InnoDB 引擎每秒已经完成写数据的字节数。 |
InnoDB 平均每秒物理写 Redo Log File 次数 | innodb_log_writes_ps | count/s | InnoDB 平均每秒物理写 Redo Log File 的次数。 |
InnoDB 平均每秒执行 Fsync 操作的次数 | innodb_os_log_fsyncs_ps | count/s | 平均每秒 MySQL 数据库 InnoDB 存储引擎对磁盘进行 I/O 操作次数。 |
InnoDB 行删除量 | innodb_rows_deleted_ps | count/s | 每秒 InnoDB 引擎删除的行数。 |
InnoDB 行插入量 | innodb_rows_inserted_ps | count/s | 每秒 InnoDB 引擎插入的行数。 |
InnoDB 行读取量 | innodb_rows_read_ps | count/s | 每秒 InnoDB 引擎读取的行数。 |
InnoDB 行更新量 | innodb_rows_updated_ps | count/s | 每秒 InnoDB 引擎更新的行数。 |
CPU 使用率 | cpu_usage | % | 数据库的 CPU 使用率。 |
内存使用率 | mem_usage | % | 数据库的内存使用率。 |
磁盘使用率 | disk_usage | % | 磁盘使用空间或实例购买空间。 |
InnoDB Buffer Pool 刷 Page 请求数量 | innodb_buffer_pool_pages_flushed_ps | count/s | 每秒 InnoDB Buffer Pool 刷 Page 的请求数量。 |
InnoDB 平均每秒从 Buffer Pool 读取页的次数(逻辑读) | innodb_buffer_pool_read_requests_ps | count/s | 每秒 InnoDB 存储引擎从 Buffer Pool(缓冲池)读取的页数。 |
InnoDB 平均每秒往 Buffer Pool写入页的次数 | innodb_buffer_pool_write_requests_ps | count/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_ps | count/s | 平均每秒等待空闲页可以的次数。 |
您可以查看在查询时间段内性能的发展趋势。
登录 DBW 控制台。
在左侧导航栏,选择运维管理 > 观测诊断。
在顶部菜单栏,选择地域。
在观测诊断页面,单击性能监控。
说明
您也可以通过实例 ID 搜索切换至目标实例。
在性能监控页签左上角,切换至目标实例。
在性能监控页签,按需设置查询时间、节点和指标项,查看指标信息。
关于性能监控的详细信息,请参见监控指标。
数据库工作台 DBW 支持对慢查询数和 InnoDB 表当前等待 Row Locks 次数性能指标项进行诊断分析。
登录 DBW 控制台。
在左侧导航栏,选择运维管理 > 观测诊断。
在顶部菜单栏,选择地域。
在观测诊断页面,单击性能监控。
说明
您也可以通过实例 ID 搜索切换至目标实例。
在性能监控页签左上角,切换至目标实例。
在性能监控页签,按需设置查询时间、节点,查看慢查询数和 InnoDB 表当前等待 Row Locks 次数的诊断分析结果。
指标项 | 说明 |
---|---|
慢查询数 | 在慢查询数(count/s)区域,将鼠标悬浮在该区域的某个时间点,在弹出的对话框中单击诊断分析,在诊断分析控制面板,查看以下信息:
|
InnoDB 表当前等待 Row Locks 次数 | 在 InnoDB 表当前等待 Row Locks 次数区域,将鼠标悬浮在该区域的某个时间点,单击诊断分析,在诊断分析控制面板,查看以下信息:
|
由于云监控和数据收集器 Collector 的采集频率不一致,导致这两个性能指标在性能监控页面和诊断分析控制面板的数据不一致。
InnoDB 表当前等待 Row Locks 锁、事务持有锁和死锁不一致的原因如下所示:
InnoDB 表当前等待 Row Locks 锁(Row Locks Waiting):当一个事务尝试获取已被另一事务锁定的行数据的锁时,该事务将在获取锁之前进入等待状态,这种锁被称为等待行锁。这是数据库为了确保数据一致性而实施的一种并发控制机制。
事务持有锁(Holding Locks): 事务在开始执行后,会对其需要访问的数据加锁,从而保护这部分数据在事务执行过程中不会被其他事务更改。这种锁就被称为持有锁。一个事务可以持有多个锁,这些锁可以是行锁(锁定单条记录)或者表锁(锁定整个表)。
死锁(Deadlocks):死锁是指两个或多个事务在执行过程中,因互相持有对方所需的资源而导致的阻塞状态。例如,事务 A 持有资源 1 并等待获取资源 2,而事务 B 持有资源 2 并等待获取资源 1,这就构成了一个死锁。当死锁发生时,数据库系统通常会通过某种机制(如死锁检测和超时机制等)来终止并回滚其中一个事务,以解决死锁。