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 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

TDSTORE_PART_CTX

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

功能

TDSTORE_PART_CTX用于展示集群中所有 hybrid 节点的 TDStore 上所有悲观锁等待信息。

字段说明

字段名
类型
是否可以为 NULL
描述
trans_id
bigint unsigned
事务的唯一标识符。
state
varchar(16)
参与者的状态。
RUNNING:参与者正处于读写阶段(即还未进入提交流程),且未被悲观锁阻塞。
WAIT LOCK:参与者正处于读写阶段,且正在被悲观锁阻塞(此时 requested_lock_id blocking_lock_id 一定不为 NULL)。
COMMITTING:参与者正在尝试提交(并不意味着事务最终一定会提交成功)。
ROLLING BACK:参与者正在回滚。
commit_state
varchar(10)
参与者的提交状态。
INIT:参与者还未进入提交流程,或者已进入提交流程但正在同步 redo/prepare log。
FAILED:参与者 prepare 失败。
PREPARE:参与者 2PC prepare 成功。
COMMIT:参与者 2PC commit 成功。
ABORT:参与者 2PC prepare 成功,但在第二阶段 abort 了。
CLEAR:参与者 commit 或 abort 后,即将释放参与者上下文(这个状态十分短暂)。
状态的推进关系如下图所示:



snapshot_ts
bigint unsigned
参与者的快照读时间戳。
prepare_ts
bigint unsigned
事务的 prepare 时间戳。事务的所有已经 prepare 了的参与者,prepare 时间戳相同。当参与者还未 prepare 的时候,值为 NULL
commit_ts
bigint unsigned
事务的 commit 时间戳。事务的所有已经 commit 了的参与者,commit 时间戳相同。当参与者还未 commit 的时候,值为 NULL
is_replay
int
如果值为 1,代表参与者正在通过 replay raft log 来推进 2PC,这一般发生在 Follower 上,但也有可能发生在 Leader 上任之前。
data_space_type
varchar(32)
参与者对应的 data space。DATA_SPACE_TYPE_USER代表参与者访问了用户表,DATA_SPACE_TYPE_SYSTEM代表参与者访问了系统表。
replication_group_id
bigint unsigned
参与者对应的 replication group ID。
coordinator_replication_group_id
bigint unsigned
协调者对应的 replication group ID。当参与者还未 prepare 的时候,值为 NULL
expired_time
datetime
参与者超时释放时间。
requested_lock_id
varchar(128)
唯一标识正在申请的悲观锁,或者正在读取的 key 范围。格式参考 data_locks 表的 ENGINE_LOCK_ID 字段。如果没有正在等待悲观锁,值为 NULL
blocking_lock_id
varchar(128)
唯一标识正在等待的悲观锁。格式参考 data_locks 表的 ENGINE_LOCK_ID 字段。如果没有正在等待悲观锁,值为 NULL
lock_wait_milliseconds
bigint unsigned
累计等待悲观锁花费的耗时(单位:毫秒)。
single_keys_locked
bigint unsigned
持有的单条 key 悲观锁的数量。
ranges_locked
bigint unsigned
持有的 key 区间悲观锁的数量。
write_batch_size
bigint unsigned
write batch 大小(单位:字节)。NULL 值代表着收集参与者信息的 bthread 没能获取到参与者的锁,因此没能获取到相关信息,此时大概率参与者正在等待某个悲观锁的释放。
lock_memory_usage
bigint unsigned
悲观锁消耗的内存大小(单位:字节)。NULL 值代表着收集参与者信息的 bthread 没能获取到参与者的锁,因此没能获取到相关信息,此时大概率参与者正在等待某个悲观锁的释放。
isolation_level
varchar(16)
隔离级别。TDStore 仅支持两种隔离级别,REPEATABLE_READREAD_COMMITTED
submit_pending_log_num
bigint unsigned
正在同步的 raft 日志数量。NULL 值代表着收集参与者信息的 bthread 没能获取到参与者的锁,因此没能获取到相关信息,此时大概率参与者正在等待某个悲观锁的释放。
note
varchar(256)
备注信息。
空字符串:无备注信息。
fail to acquire participant lock:获取参与者锁失败。这种情况下,部分字段(如 write_batch_size )的值为 NULL
node_name
varchar(256)
开启该事务参与者的 SQLEngine 节点名称。
thread_id
bigint unsigned
运行该事务参与者的线程 ID。这是 Performance Schema 的内部线程 ID,在 Performance Schema 的生命周期内唯一,可用于可靠地关联 Performance Schema 的各类事件表。
sql_session_id
bigint unsigned
对应开启该事务参与者的会话连接(session)ID。

示例

输出示例:
tdsql [(none)]> SELECT * FROM information_schema.tdstore_part_ctx LIMIT 3\\G
*************************** 1. row ***************************
trans_id: 28707112062290305
state: RUNNING
commit_state: INIT
snapshot_ts: 28707112062290305
prepare_ts: NULL
commit_ts: NULL
is_replay: 0
data_space_type: DATA_SPACE_TYPE_USER
replication_group_id: 257
coordinator_replication_group_id: NULL
expired_time: 2024-03-22 11:23:37
requested_lock_id: NULL
blocking_lock_id: NULL
lock_wait_milliseconds: 0
single_keys_locked: 4
ranges_locked: 0
write_batch_size: 3219
lock_memory_usage: 1008
isolation_level: REPEATABLE_READ
submit_pending_log_num: 0
note:
node_name: node-1-001
thread_id: 65
sql_session_id: 1048736
*************************** 2. row ***************************
trans_id: 28707112062290205
state: COMMITTING
commit_state: PREPARE
snapshot_ts: 28707112062290205
prepare_ts: 28707112062290205
commit_ts: 28707112062290368
is_replay: 0
data_space_type: DATA_SPACE_TYPE_USER
replication_group_id: 257
coordinator_replication_group_id: 257
expired_time: 2024-03-22 11:23:37
requested_lock_id: NULL
blocking_lock_id: NULL
lock_wait_milliseconds: 0
single_keys_locked: 7
ranges_locked: 0
write_batch_size: NULL
lock_memory_usage: NULL
isolation_level: REPEATABLE_READ
submit_pending_log_num: NULL
note: fail to acquire participant lock
node_name: node-1-001
thread_id: 65
sql_session_id: 1048736
*************************** 3. row ***************************
trans_id: 28707111676413643
state: LOCK WAIT
commit_state: INIT
snapshot_ts: 28707111676413643
prepare_ts: NULL
commit_ts: NULL
is_replay: 0
data_space_type: DATA_SPACE_TYPE_USER
replication_group_id: 257
coordinator_replication_group_id: NULL
expired_time: 2024-03-22 11:23:14
requested_lock_id: 28707111676413643_0000279C80018657
blocking_lock_id: 28707111676413316_0000279C80018657
lock_wait_milliseconds: 0
single_keys_locked: 4
ranges_locked: 0
write_batch_size: NULL
lock_memory_usage: NULL
isolation_level: REPEATABLE_READ
submit_pending_log_num: NULL
note: fail to acquire participant lock
node_name: node-1-002
thread_id: 65
sql_session_id: 1048704
查询示例:
-- 查询当前节点上参与者的数量
SELECT COUNT(*) FROM information_schema.tdstore_part_ctx \\G

-- 查询当前节点上,replication group 257 的参与者信息
SELECT * FROM information_schema.tdstore_part_ctx WHERE replication_group_id = 257 \\G

-- 查询当前节点上正在提交流程中的参与者信息
SELECT * FROM information_schema.tdstore_part_ctx WHERE state = 'COMMITTING' \\G

-- 查询当前节点上执行时间超过 5s 的事务的信息(目前 trans_id 右移 24 位得到的结果,是事务开始时间的 unix timestamp)
SELECT * FROM information_schema.tdstore_part_ctx WHERE trans_id >> 24 < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 5 SECOND)) \\G

-- 查询当前节点上 write batch 大小超过 128 MB 的大事务的信息(事务写过的数据,存储于 write batch 中)
SELECT * FROM information_schema.tdstore_part_ctx WHERE write_batch_size > 128 * 1024 * 1024 \\G

帮助和支持

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

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

文档反馈