在GBase 8a数据库集群中,如果数据运算过程中,内存不足以保存所有数据时,会使用磁盘保存临时中间结果。本文介绍该临时数据目录tmpdata的作用和说明。
目录导航
版本
本文使用的版本是9.5.2.36。
gbase> select version();
+-----------------+
| version() |
+-----------------+
| 9.5.2.36.125743 |
+-----------------+
1 row in set (Elapsed: 00:00:00.00)
目录位置
安装目录下/gcluster/tmpdata
安装目录下/gnode/tmpdata
调度节点gcluster的tmpdata目录列表
[root@gbase_rh7_001 tmpdata]# ll *
cache_gcluster:
total 0
drwx------ 2 gbase gbase 6 Jan 25 16:44 HashJoin
drwx------ 2 gbase gbase 6 Jan 25 16:44 tmp_longblob
drwx------ 3 gbase gbase 22 Jan 25 16:44 tmp_materialized
drwx------ 2 gbase gbase 6 Jan 25 16:44 TrashCan
krb5cc_gcluster:
total 4
-rw------- 1 gbase gbase 4 Jan 25 16:44 primary
[root@gbase_rh7_001 tmpdata]#
[root@gbase_rh7_001 tmpdata]#
[root@gbase_rh7_001 tmpdata]#
[root@gbase_rh7_001 tmpdata]# ll
total 0
drwx------. 6 gbase gbase 82 Jan 25 16:44 cache_gcluster
drwx------. 2 gbase gbase 21 Jan 25 16:44 krb5cc_gcluster
krb5cc_gbase
Kerberos的认证文件,属于配置参数的默认位置。可修改。
gbase> show variables like '%krb%';
+---------------------+---------------------------------------------+
| Variable_name | Value |
+---------------------+---------------------------------------------+
| gbase_krb5cc_tmpdir | /opt/gbase/gcluster/tmpdata/krb5cc_gcluster |
+---------------------+---------------------------------------------+
1 row in set (Elapsed: 00:00:00.01)
计算节点gnode目录列表
[gbase@gbase_rh7_001 tmpdata]$ ll
total 0
drwx------. 6 gbase gbase 82 Jan 27 09:22 cache_gbase
drwx------. 2 gbase gbase 21 Jan 25 16:44 krb5cc_gbase
[gbase@gbase_rh7_001 tmpdata]$ ll *
cache_gbase:
total 0
drwx------ 2 gbase gbase 6 Jan 25 16:44 HashJoin
drwx------ 2 gbase gbase 6 Jan 25 16:44 tmp_longblob
drwx------ 3 gbase gbase 22 Jan 25 16:44 tmp_materialized
drwx------ 2 gbase gbase 6 Jan 27 09:22 TrashCan
krb5cc_gbase:
total 4
-rw------- 1 gbase gbase 4 Jan 25 16:44 primary
[gbase@gbase_rh7_001 tmpdata]$
cache_gbase
临时数据缓冲目录,用于保存计算的中间结果。
SRT文件
排序产生的临时文件
HSJ
用于Hash切分时临时文件,比如group,join,distinct等。
MAT文件
HashJoin
One pass Hash Join 的中间临时文件。
tmp_longblob
blob字段数据超过32K时,临时保存目录。
tmp_materialized
物化表目录
tmp_materialized/metadata
物化表的元数据目录。
TrashCan
可清理的垃圾文件。
krb5cc_gbase
Kerberos的认证文件,属于配置参数的默认位置。可修改。
gbase> show variables like '%krb%';
+---------------------+---------------------------------------+
| Variable_name | Value |
+---------------------+---------------------------------------+
| gbase_krb5cc_tmpdir | /opt/gbase/gnode/tmpdata/krb5cc_gbase |
+---------------------+---------------------------------------+
1 row in set (Elapsed: 00:00:00.01)
样例
MAT文件
join后包括行号等的中间结果集物化文件。其中s0000000346对应session id,也就是show processlist里面的连接ID。
s0000000346_GB_MAT0000007E8554A0xbe87080.express_tmp
对应gncli里的ID列。如下第一行ID=346的是一个select join的语句,产生了中间结果集,写到了tmpdata目录下。
[gbase@gbase_rh7_001 cache_gbase]$ gncli -e"show processlist"
+-----+------+------------------+---------+---------+------+-------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------+------------------+---------+---------+------+-------+------------------------------------------------------------------------------------------------------+
| 346 | root | 10.0.2.101:41714 | gctmpdb | Query | 107 | init | SELECT /*10.0.2.101_104_163_2021-01-27_08:47:07*/ /*+ TID('366758') */ `vc01.pm.t1`.`id` AS `c2`, ca |
| 353 | root | 10.0.2.101:41912 | NULL | Sleep | 667 | NULL | NULL |
| 360 | root | 10.0.2.101:42252 | gctmpdb | Sleep | 288 | NULL | NULL |
| 372 | root | localhost | NULL | Query | 0 | NULL | show processlist |
+-----+------+------------------+---------+---------+------+-------+------------------------------------------------------------------------------------------------------+
[gbase@gbase_rh7_001 cache_gbase]$
对应trc跟踪日志里面的MAT部分。如下例子写了1.6G的MAT文件。
2021-01-27 10:48:25.981 [M: 6M, 0B,D: 0B] [DC: 79, 0] SUMMARY
2021-01-27 10:48:25.981 [M: 6M, 0B,D: 0B] [DC: 79, 0] elapsed time: 00:02:14.024
2021-01-27 10:48:25.981 [M: 6M, 0B,D: 0B] [DC: 79, 0] data loaded from storage: 0B, 0s, 0 DC.
2021-01-27 10:48:25.981 [M: 6M, 0B,D: 0B] [DC: 79, 0] data decompressed: 0B, 0s.
2021-01-27 10:48:25.982 [M: 6M, 0B,D: 0B] [DC: 79, 0] temp space IO stats:
2021-01-27 10:48:25.982 [M: 6M, 0B,D: 0B] [DC: 79, 0] CB write( 0B, 0time, 0sec), read( 0B, 0time, 0sec)
2021-01-27 10:48:25.982 [M: 6M, 0B,D: 0B] [DC: 79, 0] SRT write( 0B, 0time, 0sec), read( 0B, 0time, 0sec)
2021-01-27 10:48:25.982 [M: 6M, 0B,D: 0B] [DC: 79, 0] GDC write( 0B, 0time, 0sec), read( 0B, 0time, 0sec)
2021-01-27 10:48:25.982 [M: 6M, 0B,D: 0B] [DC: 79, 0] MAT write(1.60G, 114time, 2sec), read(3.00G, 197148time, 1sec)
2021-01-27 10:48:25.982 [M: 6M, 0B,D: 0B] [DC: 79, 0] HSJ write( 0B, 0time, 0sec), read( 0B, 0time, 0sec)
2021-01-27 10:48:25.982 [M: 6M, 0B,D: 0B] [DC: 79, 0] ======================================================
2021-01-27 10:48:25.982 [M: 6M, 0B,D: 0B] [DC: 79, 0] SUMMARY for SIS