GBase 8a中间gctmpdb临时表名的命名规则

GBase 8a在执行时,会使用临时表缓冲中间结果,比如根据hash列临时重分布的表,各个节点的汇总的临时表。

文件名样例

不同数据库版本,名字不同,但从前缀还是能区分是复制表还是分布表。绝大部分情况下,有这个足以。其余部分除了nX表示不同节点分片外,更多的是为了生成一个不重复的,唯一的临时表名字。

临时复制表

仅有_tmp 前缀时,表示这是一个普通临时表(复制表)

_tmp_n1_t11_1_405747_0x45a002a0_0x12eebd68
_tmp_1_15_t11_1_1607409052_s

其中

15 是sessionID

1607409052 是时间戳(秒)

临时分布表

_tmp_rht 前缀表示这是一个动态重分布临时表。

_tmp_rht_n1_t12_1_356508_0x45a00ad0_0x12eebd68
_tmp_rht_169126060_1358717_t838333_4_1605739381_s_n1

n1:发起这条查询的节点后缀,这里表示此查询是从 n1 节点发起的

t12: 查询计数,gcluster server 启动后,执行的第 n 条查询,n 从 1 开始。

1:该查询产生的第 m 个临时表名,m 从 1 开始(因为查询会分解为多步执行,因此可能会产生多个临时表)

356508: 产生临时表名时,系统时间的微秒部分

0x45a00ad0:产生临时表名时,时间结构的内存地址

0x12eebd68:产生临时表名的 thd 对象的内存地址