更新时间:2024-12-30 GMT+08:00

冷热表用户函数

pg_obs_cold_refresh_time(table_name, time)

描述:用来修改冷热表的冷数据切换至OBS上的时间,默认为每日0点。

table_name为冷热表的表名,类型为name,time为数据切换任务调度时间,类型为Time。

返回值:SUCCESS,任务时间修改成功。

示例:

1
2
3
4
5
SELECT * FROM pg_obs_cold_refresh_time('lifecycle_table', '06:30:00');
pg_obs_cold_refresh_time
--------------------------
 SUCCESS
(1 row)

pg_refresh_storage()

描述:切换所有冷热表,将符合冷热切换规则的数据由热数据切换至冷数据(OBS中)。

返回值类型:int

返回值字段:

  • success_count int:切换成功的表个数
  • failed_count int:切换失败的表个数

示例:

1
2
3
4
5
SELECT * FROM pg_refresh_storage();
 success_count | failed_count
---------------+--------------
             1 |            0
(1 row)

pg_lifecycle_table_data_distribute(table_name)

描述:查看某个冷热表的数据分布情况。

table_name为表名,不可缺省。

返回值:record

示例:根据节点数量形成多条记录,如下示例为只有一个dn节点时w1表数据分布情况。

1
2
3
4
5
SELECT * FROM pg_catalog.pg_lifecycle_table_data_distribute('w1');
 schemaname | tablename | nodename | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize 
------------+-----------+----------+--------------+---------------+---------------------+-------------+--------------+--------------------
 public     | w1        | dn_1     | p2           | p1            |                     | 80 KB       | 0 bytes      | 0 bytes
(1 row)

pg_lifecycle_node_data_distribute()

描述:查看所有冷热表数据分布情况。

返回值:record

示例:数据库中当前存在两个冷热表,其数据分布情况如下。

1
2
3
4
5
6
SELECT * FROM pg_catalog.pg_lifecycle_node_data_distribute();
 schemaname | tablename | nodename | hotpartition | coldpartition | switchablepartition | hotdatasize | colddatasize | switchabledatasize 
------------+-----------+----------+--------------+---------------+---------------------+-------------+--------------+--------------------
 public     | w1        | dn_1     | p2           | p1            |                     |       81920 |            0 |                  0
 public     | w2        | dn_1     | p2           | p1            |                     |       81920 |            0 |                  0
(2 rows)

refresh_hot_storage(relname text)

描述:用于将指定冷热表的所有分区数据全部刷到OBS上。返回的数值为执行该函数切换分区的个数。该函数仅8.2.1.100及以上版本支持。

参数:

relname:表名(指定冷热表的表名,使用其他非冷热表的表名,并不会报错,返回值为0)

返回值类型:integer

1
2
3
4
5
SELECT refresh_hot_storage('multi_temper_table');
 refresh_hot_storage
---------------------
            4
(1 row)

refresh_hot_storage(relname text,partname text)

描述:用于将指定冷热表的分区数据刷到OBS上。返回的数值为执行该函数切换分区的个数。该函数仅8.2.1.100及以上版本支持。

参数:

  • relname:表名(指定冷热表的表名,使用其他非冷热表的表名,并不会报错,返回值为0)。
  • partname:分区名(指定冷热表下的分区名)。

返回值类型:integer

1
2
3
4
5
SELECT refresh_hot_storage('multi_temper_table','p1');
 refresh_hot_storage
---------------------
            1
(1 row)

reload_cold_partition(relname text)

描述:用于将指定冷热表的所有冷分区转换成热分区。返回的数值为执行该函数切换分区的个数。该函数仅8.3.0及以上版本支持。

参数:

relname:表名(指定冷热表的表名,使用其他非冷热表的表名,并不会报错,返回值为0)。

返回值类型:integer

1
2
3
4
5
SELECT reload_cold_partition('multi_temper_table');
 reload_cold_partition
---------------------
            4
(1 row)

reload_cold_partition(relname text,partname text)

描述:用于将指定冷热表的特定冷分区转换成热分区。返回的数值为执行该函数切换分区的个数。该函数仅8.3.0及以上版本支持。

参数:

  • relname:表名(指定冷热表的表名,使用其他非冷热表的表名,并不会报错,返回值为0)。
  • partname:分区名(指定冷热表下的分区名)。

返回值类型:integer

1
2
3
4
5
SELECT reload_cold_partition('multi_temper_table','p1');
 reload_cold_partition
---------------------
            1
(1 row)