系统所有线程状态-sys_thd_status
功能描述
sys_thd_status系统表用于管理数据库当前节点线程状态信息。
字段说明
序号 | 字段名 | 类型 | 说明 |
---|---|---|---|
0 | NODEID | INTEGER | 节点ID |
1 | ID | INTEGER | 线程号(OS进程的线程号) |
2 | TYPE | INTEGER | 线程类型 |
3 | STATE | INTEGER | 线程状态 |
4 | CURR_TID | BIGINT | 线程当前执行的事务ID |
5 | WAIT_TYPE | INTEGER | 线程等候的资源类型 |
6 | WAIT_OBJ | BIGINT | 线程等候的资源 |
7 | DATABASE | INTEGER | 线程工作上下文库ID |
8 | USER_NAME | VARCHAR | 线程工作上下文用户名 |
9 | LOOP_NUM | BIGINT | 最大视图个数 |
10 | MEM_SIZE | BIGINT | 线程当前持有内存 |
11 | SCHED_GRP | INTEGER | - |
12 | SCHED_ID | INTEGER | - |
13 | NUMA_ID | INTEGER | - |
说明:
SCHED_GRP、SCHED_ID和NUMA_ID在较低版本的数据库中不支持,详细信息请联系运维人员获取。
TYPE
数据库线程类型ID说明
ID | 类型 | 描述 |
---|---|---|
1 | 主线程 | 系统引导启动 |
2 | TCP监听线程 | - |
3 | TCP数据读取线程 | - |
4 | 空闲buffer保障线程 | - |
5 | 脏buffer写盘提交线程 | - |
6 | buffer数据写盘线程 | 线程数由max_write_back_num控制 |
7 | 重做日志写盘线程 | 进行redo日志实时写盘 |
8 | 重做日志归档辅助线程 | - |
9 | 任务处理线程 | 进行用户请求以及内部远程(rfc、rpc等)任务处理 |
10 | 自动化作业调度线程 | 实时监控启动或执行待执行作业 |
11 | 集群维护线程 | 监控维护集群所有节点及通讯端口活性 |
12 | 系统事件处理线程 | 处理系统内部事件如死亡事件、数据读写错误事件、数据同步错误事件、checkpoint等 |
13 | 存储维护线程 | 处理存储延迟删除,缓变数据维护,存储修复,存储自动均衡 |
14 | 内部消息通讯维护 | 处理消息回执、重发等 |
15 | 内部消息发送线程 | - |
16 | 内部消息接收线程 | - |
17 | 数据同步线程 | 处理主副存储版本间同步 |
18 | 死锁检测线程 | 处理死锁相关事务 |
19 | 全局锁处理线程 | 处理全局加锁放锁等锁管理 |
20 | 代理事务处理线程 | 保障分布式事务一致性 |
21 | IB网监听线程 | 处理集群内部通讯IB通道建立 |
22 | IB网通讯的消息处理线程 | 读取处理IB网通讯消息 |
23 | 大buffer交换线程 | 处理排序、join操作时数据内存到磁盘的交换过程 |
24 | 变更消息服务线程 | 接收预处理变更消息 |
25 | 变更消息写盘线程 | 负责变更日志消息的集中写盘任务 |
26 | 测试线程 | 调试和测试使用 |
27 | 回滚维护线程 | 维护回滚数据段的延迟清理等 |
28 | 系统时钟线程 | 维护数据库系统时钟 |
29 | 自动分析维护线程 | 负责表数据的自动分析 |
30 | 任务线程池维护线程 | 负责任务线程池扩容 |
31 | TCP网络接收线程 | 负责监听TCP端口 |
32 | 节点故障辅助处理线程 | 负责节点故障后相关事项处理 |
33 | 节点故障消息广播处理线程 | 负责报告节点死亡事件 |
34 | CHKPT收集服务线程 | 负责定时采集系统中日志位置 |
35 | CHKPT推进服务线程 | 负责定时检测并推进检测点 |
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所有调用返回 | - |
19 | RPC读取等候数据 | - |
20 | RPC发送等候窗口 | - |
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 | 字符串(用户名表名文件名等) | - |
11 | MASTER节点 | 存储创建删除迁移修复时使用 |
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