tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

METADATA_LOCKS

PDF
聚焦模式
字号
最后更新时间: 2026-02-10 11:06:28

功能

METADATA_LOCKS记录着当前 SQLEngine 元数据锁的占用情况,包含:
已授予的锁:显示哪些会话当前拥有哪些元数据锁。
已请求但尚未授予的锁:显示哪些会话正在等待哪些元数据锁。
已被死锁检测器终止的锁定请求。
已超时并等待请求会话释放锁的锁请求。
方便用户快速定位元数据锁(Metadata Locks,MDL)相关的问题,提高系统的稳定性和性能。

字段说明

字段名
类型
描述
OBJECT_TYPE
varchar(64)
锁定的对象类型,例如 TABLE、SCHEMA、FUNCTION、MC 等。
其中 MC 是 TDSQL Boundless 新增的全局对象锁,在集群层面对数据库对象加锁。
OBJECT_SCHEMA
varchar(64)
锁定对象所在的数据库名称。
OBJECT_NAME
varchar(64)
锁定对象的名称。
COLUMN_NAME
varchar(64)
锁定对象的具体列名称。
OBJECT_INSTANCE_BEGIN
bigint unsigned
锁定对象在内存中的地址。
LOCK_TYPE
varchar(32)
锁的类型。
INTENTION_EXCLUSIVE:意图独占锁。这种锁通常用于表示一个事务打算获取一个独占锁,但目前还没有实际获取到。
SHARED:共享锁。允许多个事务同时持有这种锁,但阻止任何事务获取独占锁。
SHARED_HIGH_PRIO:高优先级共享锁。这是一种特殊类型的共享锁,用于高优先级的事务。
SHARED_READ:共享读锁。允许事务读取数据,但阻止其他事务写入或获取独占锁。
SHARED_UPGRADABLE:可升级的共享锁。这种锁允许事务在持有共享锁的同时尝试获取独占锁,而不会被阻塞。
SHARED_NO_WRITE:不允许写的共享锁。这种锁可能阻止事务写入数据,但允许读取。
SHARED_NO_READ_WRITE:不允许读写的共享锁。这种锁阻止事务读取和写入数据。
EXCLUSIVE:独占锁。只允许一个事务持有这种锁,阻止其他事务获取任何类型的锁。
LOCK_DURATION
varchar(32)
锁的持续时间,例如 TRANSACTION、 LONG 等。
LOCK_STATUS
varchar(32)
表示每个锁的状态:
PENDING:当元数据锁被请求但未立即获得时,插入一行状态为 PENDING 的记录。
GRANTED:当元数据锁被请求并立即获得时,插入一行状态为GRANTED 的记录。
VICTIM:当死锁检测器取消挂起的锁请求以打破死锁(ER_LOCK_DEADLOCK)时,将其行状态从 PENDING 更新为VICTIM。这表示该锁行即将被删除。
TIMEOUT:当挂起的锁请求超时(ER_LOCK_WAIT_TIMEOUT)时,将其行状态从 PENDING 更新为 TIMEOUT。这表示该锁行即将被删除。
KILLED:当被授予的锁或挂起的锁请求被终止时,将其行状态从GRANTED 或 PENDING 更新为 KILLED。这表示该锁行即将被删除。
SOURCE
varchar(64)
包含生成事件的已检测代码的源文件的名称以及文件中发生检测的行号。
OWNER_THREAD_ID
bigint unsigned
持有锁的线程 ID。
OWNER_EVENT_ID
bigint unsigned
请求元数据锁的事件ID。

示例

#session1
BEGIN
UPDATE test1 SET k = 0 WHERE id = 999;

#session2
ALTER TABLE test1 ADD COLUMN new_column VARCHAR(255);

#查看metadata_locks可以看到ddl获取元数据锁被挂起
tdsql [performance_schema]> select * from metadata_locks where OBJECT_NAME='test1' \\G
*************************** 1. row ***************************
OBJECT_TYPE: TABLE
OBJECT_SCHEMA: etest
OBJECT_NAME: test1
COLUMN_NAME: NULL
OBJECT_INSTANCE_BEGIN: 140400821752448
LOCK_TYPE: EXCLUSIVE
LOCK_DURATION: TRANSACTION
LOCK_STATUS: PENDING
SOURCE: mdl.cc:3924
OWNER_THREAD_ID: 5670
OWNER_EVENT_ID: 1
1 row in set (0.00 sec)

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈