Skip to content

系统所有线程状态-sys_thd_status

功能描述

sys_thd_status系统表用于管理数据库当前节点线程状态信息。

字段说明

序号字段名类型说明
0NODEIDINTEGER节点ID
1IDINTEGER线程号(OS进程的线程号)
2TYPEINTEGER线程类型
3STATEINTEGER线程状态
4CURR_TIDBIGINT线程当前执行的事务ID
5WAIT_TYPEINTEGER线程等候的资源类型
6WAIT_OBJBIGINT线程等候的资源
7DATABASEINTEGER线程工作上下文库ID
8USER_NAMEVARCHAR线程工作上下文用户名
9LOOP_NUMBIGINT最大视图个数
10MEM_SIZEBIGINT线程当前持有内存
11SCHED_GRPINTEGER -
12SCHED_IDINTEGER-
13NUMA_IDINTEGER-

说明:

SCHED_GRP、SCHED_ID和NUMA_ID在较低版本的数据库中不支持,详细信息请联系运维人员获取。

TYPE

数据库线程类型ID说明

ID类型描述
1主线程系统引导启动
2TCP监听线程-
3TCP数据读取线程-
4空闲buffer保障线程-
5脏buffer写盘提交线程-
6buffer数据写盘线程线程数由max_write_back_num控制
7重做日志写盘线程进行redo日志实时写盘
8重做日志归档辅助线程-
9任务处理线程进行用户请求以及内部远程(rfc、rpc等)任务处理
10自动化作业调度线程实时监控启动或执行待执行作业
11集群维护线程监控维护集群所有节点及通讯端口活性
12系统事件处理线程处理系统内部事件如死亡事件、数据读写错误事件、数据同步错误事件、checkpoint等
13存储维护线程处理存储延迟删除,缓变数据维护,存储修复,存储自动均衡
14内部消息通讯维护处理消息回执、重发等
15内部消息发送线程-
16内部消息接收线程-
17数据同步线程处理主副存储版本间同步
18死锁检测线程处理死锁相关事务
19全局锁处理线程处理全局加锁放锁等锁管理
20代理事务处理线程保障分布式事务一致性
21IB网监听线程处理集群内部通讯IB通道建立
22IB网通讯的消息处理线程读取处理IB网通讯消息
23大buffer交换线程处理排序、join操作时数据内存到磁盘的交换过程
24变更消息服务线程接收预处理变更消息
25变更消息写盘线程负责变更日志消息的集中写盘任务
26测试线程调试和测试使用
27回滚维护线程维护回滚数据段的延迟清理等
28系统时钟线程维护数据库系统时钟
29自动分析维护线程负责表数据的自动分析
30任务线程池维护线程负责任务线程池扩容
31TCP网络接收线程负责监听TCP端口
32节点故障辅助处理线程负责节点故障后相关事项处理
33节点故障消息广播处理线程负责报告节点死亡事件
34CHKPT收集服务线程负责定时采集系统中日志位置
35CHKPT推进服务线程负责定时检测并推进检测点
36变更日志写锁消息处理线程负责处理写锁(MODI_SEND_LOCK)的请求和释放

STATE

线程状态值说明

状态号描述备注
0空闲-
1运行中-
2等候buffer加锁并发修改同一数据块
3等候自由buffer内存[读取数据进入buffer时,无自由buffer内存]
4等候全局锁[欲加锁类型和锁上已加锁不兼容,如重建索引过程中查询表数据]
5同上,但带超时超时后加锁失败,如表资源被事务持时修改表结构
6等候本地锁[欲加锁类型和锁上已加锁不兼容,如数据修改时,存储修复加锁超时]
7同上,但带超时超时后加锁失败
8等候局部锁释放如[并发修改同一行数据]
9同上带超时超时后加锁失败
10等待事务提交完成事务提交时等候其对应redo日志落盘
11等候redo日志内存日志内存耗尽,日志写入等待空闲内存,对应参数 xlog_buff_mem
12等候系统所有日志写盘完成如checkpoint时数据落盘前等候日志先落盘
13等候消息发送窗口消息发送区耗尽,等待进入发送区,相关参数max_send_win
14等候数据同步完成-
15等候RFC调用返回-
16等候RMC所有调用返回-
17等候RBC发送窗口(等候RBC调用返回释放窗口继续发出新的调用)-
18等候RBC所有调用返回-
19RPC读取等候数据-
20RPC发送等候窗口-
21弹射器读等候数据-
22弹射器等候发送窗口-
23弹射器执行异常时,等候所有管线取消任务-
24等候代理事务提交完成-
25等候事务变更日志记载完成-
26等候数据buffer写盘完成-

WAIT_TYPE

等候资源类型说明

类型号对应 wait_obj备注
1计算处理单元(LPU)-
2对象资源(高32位库ID,低32位对象ID),DDL/DML时使用-
3对象资源(高32位库ID,低32位对象ID),存储修复迁移使用-
4内存地址-
5全局存储号-
6局部存储号-
7局部存储号-
8数据行行级锁时使用
9字符串(用户名表名文件名等)-
11MASTER节点存储创建删除迁移修复时使用
12自动扩展分区表(高32位库ID,低32位对象ID)-
17系统库ID安全审计、创库删库时使用
18等候RBC所有调用返回-

对象资源即wait_obj转换例子:

wait_obj=576460842498785288

(wait_obj)~10~=(1000 0000 0000 0000 0000 0001 0101 0000 0000 0001 0000 0000 0000 0000 1000)~2~

对象id=(低32位)~2~=(0001 0101 0000 0000 0001 0000 0000 0000 0000 1000)~2~=(1048584)~10~

库id=(高32位)~2~=(0001 0101)~2~=(21)~10~

示例

  • 查询线程状态
  • 查询等候锁类型

相关系统表

  • sys_trans
  • sys_thd_session
  • sys_gwaiters