- 文档首页
数据库工作台
veDB MySQL 用户指南
运维管理
观测诊断
事务与锁管理
事务与锁管理
事务与锁功能可以实时捕获并分析云数据库 veDB MySQL 版数据库中当前出现的持有锁、死锁、锁等待等状况。当数据库出现锁等待相关问题时,可运用事务与锁分析功能,直观地剖析和查看数据库中发生的相关锁信息,进而快速定位并解决相关问题,保障数据库的稳定运行,显著缩短故障排查时长。本文介绍如何在 DBW 控制台查看实例数据库内发生的所有事务与锁信息。
- 已创建云数据库 veDB MySQL 版实例和账号,且实例状态处于运行中。详细操作,请参见创建实例和创建账号。
注意事项
- 在使用事务与锁功能期间,请勿操作变更实例的相关配置,否则会导致无法正常查看实例的事务与锁信息。
- 暂不支持查看实例备节点的 InnoDB 事务与锁信息。
- information_schema.INNODB_TRX:用于查看当前所有正在运行的 InnoDB 事务。
- performance_schema.data_locks:用于查看当前所有事务持有的锁(InnoDB 行锁/表锁)。
在 8.0 版本之前,事务与锁的分析来源为表 information_schema.INNODB_LOCKS。
- performance_schema.data_lock_waits:用于查看当前的锁等待关系(即谁在等待谁)。
在 8.0 版本之前,事务与锁的分析来源为表 information_schema.INNODB_LOCK_WAITS。
- 目标实例的参数 innodb_deadlock_detect 需为 ON,否则将无法查询死锁信息。具体参数配置步骤,请参见修改参数。
- 分析结果来源于表 innodb status:用于实时查看 InnoDB 存储引擎的内部运行状态。
- 死锁信息中的请求类型涵盖 alter、show、select、update、drop、delete、create 以及其他类型。
- 当 veDB MySQL 的版本为 8.0 时,如果要获取实例的事务阻塞关系,需要将参数 Performance Schema 配置为 ON。但当 Performance Schema 配置为 ON 时,会对数据库性能产生较大影响,需慎重配置。具体参数配置步骤,请参见修改参数。
- information_schema.INNODB_TRX:用于查看当前所有正在运行的 InnoDB 事务。
- performance_schema.data_locks:用于查看当前所有事务持有的锁(InnoDB 行锁/表锁)。
在 8.0 版本之前,事务与锁的分析来源为表 information_schema.INNODB_LOCKS。
- 在页面右上角的下拉列表中,选择目标数据库类型即云数据库 veDB MySQL 版。
- 在事务与锁页签,按需选择实例节点(默认展示主节点),查看实例的事务与锁信息,具体如下表所示。
说明
- 5.7 版本云数据库 veDB MySQL 版实例,若持有锁但未产生竞争,则无法查看具体锁信息。
- 暂不支持查看实例备节点的 InnoDB 事务与锁信息。
在 InnoDB 事务与锁信息子页签,可以实现以下操作:
- 创建分析任务:在 InnoDB 事务与锁信息子页签,既可以点击创建分析手动创建分析任务,此时生成的任务来源为触发式分析;也可以在下拉列表中根据需求选择 3 秒、5 秒、10 秒或 15 秒的间隔自动创建分析任务,此时生成的任务来源为自动刷新分析。
- 查看分析结果:在 InnoDB 事务与锁信息子页签,可根据需求筛选查看分析任务的生成时间范围。默认展示最近 3 小时内的分析任务,最多可查看最近 30 天内的任务。
- 不存在事务与锁:当您创建的分析任务暂未在数据库发现事务与锁时,发现事务与锁列将显示为否,您仅能看到分析任务生成时间、任务来源、分析数据。
- 存在事务与锁:当您创建的分析任务在数据库中发现事务与锁时,发现事务与锁列将显示为是,单击分析任务生成时间列前的➕图标,您可以看到事务中包含的所有会话信息,包括会话 ID、事务 ID、事务状态、锁状态、事务隔离级别、事务执行时间(s)、事务开始时间、事务等待开始时间、正在执行 SQL、事务锁定表数、事务锁定行数、事务修改行数、阻塞事务的 ID 和 NodeId。
- 当存在事务与锁时,可单击事务与锁中的目标会话 ID,跳转至会话管理页签,在该页签可根据需求终止对应会话。详细操作,请参见终止会话。
- 当存在事务与锁时,可在正在执行 SQL 列复制对应会话执行的 SQL 语句。
在死锁信息子页签,可以实现以下操作:
- 创建分析任务:在死锁信息子页签,既可以点击创建分析手动创建分析任务,此时生成的任务来源为触发式分析;也可以在下拉列表中根据需求选择 3 秒、5 秒、10 秒或 15 秒的间隔自动创建分析任务,此时生成的任务来源为自动刷新分析。
- 查看分析结果:在死锁信息子页签,可根据需求筛选查看分析任务的生成时间范围。默认展示最近 3 小时内的分析任务,最多可查看最近 30 天内的任务。
- 不存在死锁信息:当您创建的分析任务暂未在数据库中发现死锁,发现锁列将展示为否。您仅能看到分析任务生成时间、任务来源、分析数据。
- 存在死锁信息:当您创建的分析任务在数据库中发现死锁,发现锁列将展示为是,单击分析任务生成时间列前的➕图标,您可以看到任务中的死锁信息,包括死锁发生时间、事务信息、会话 ID、请求类型、涉及表、等待锁、等待锁索引名称、等待锁类型、持有锁、持有锁索引名称、持有锁类型、涉及语句和事务处理。
说明
- 每次查询时,都将收集最近一次的死锁信息,查询结果最多可保留 30 天。
- 目标实例的参数 innodb_deadlock_detect 需设置为 ON,否则将无法查询死锁信息,具体操作,请参见修改参数。
说明
当 veDB MySQL 的版本为 8.0 时,如果要获取实例的事务阻塞关系,需要将参数 Performance Schema 配置为 ON。但当 Performance Schema 配置为 ON 时,会对数据库性能产生较大影响,需慎重配置。具体参数配置步骤,请参见修改参数。 在锁等待信息子页签,可实现以下操作:
- 创建分析任务:在锁等待信息子页签,既可以点击创建分析手动创建分析任务,此时生成的任务来源为触发式分析;也可以在下拉列表中根据需求选择 3 秒、5 秒、10 秒或 15 秒的间隔自动创建分析任务,此时生成的任务来源为自动刷新分析。
- 查看分析结果:在锁等待信息子页签,可根据需求筛选查看分析任务的生成时间范围。默认展示最近 3 小时内的分析任务,最多可查看最近 30 天内的任务。
- 不存在锁等待信息:当您创建的分析任务暂未在数据库中发现等待锁,发现锁列将展示为否。您仅能看到分析任务生成时间、任务来源、分析数据。
- 存在锁等待信息:当您创建的分析任务在数据库中发现等待锁,发现锁列将展示为是,单击分析任务生成时间列前的➕图标,您可以看到任务中的等待锁信息,包括:
- 事务 ID、事务状态、锁等待 SQL、事务开始时间、事务等待开始时间、事务修改行数、事务锁定行数和事务操作状态。
- 阻塞等待时间(s)、阻塞事务 ID、阻塞事务状态、阻塞者 SQL、阻塞事务开始时间、阻塞事务等待开始时间、阻塞事务修改行数、阻塞事务锁定行数、阻塞事务操作状态、NodeId。
您也可以单击查看详情,查看会话和阻塞事务会话的对比信息。
最近更新时间:2026.09.01 14:01:59