云服务器内容精选

  • 使用限制 当前仅20MB/s/TiB、40MB/s/TiB、125MB/s/TiB、250MB/s/TiB、500MB/s/TiB、1000MB/s/TiB规格文件系统支持目录级配额。 只能对空目录设置配额,删除配额。 支持设置配额的最大目录深度为16层,不允许对根目录使用此功能。(注:根目录为第一层目录) 修改目录配额时,配额只能高于或等于已使用配额,不允许子目录配额高于父目录配额。 建议设置配额目录深度不超过3层,否则会出现修改类操作性能下降,性能下降幅度与配额目录深度有关。 不允许跨配额目录创建硬链接、rename操作。 图1 跨配额目录 跨配额目录操作为图1 跨配额目录红线所示,会穿过黑色虚线。 配额目录: D1,D2_0。 目录深度:根目录/往下到当前目录的层数,例如,目录/D1/D2_0/D3_1深度为4。 配额目录深度:当前目录不断往上找,穿过黑色矩形虚线的层数。例如,目录/D1/D2_0/D3_1配额目录深度为2。 红线与绿线:mv或者link操作,绿色表示允许操作,红色表示不允许操作。 虚线矩形:配额目录区域。
  • 段页式存储函数 在AStore存储引擎下创建段页式表,需要在创建数据表时指定参数segment=on。例如: CREATE TABLE t1(id int) WITH (segment=on, storage_type=astore); 段页式存储函数相关字段取值说明: forknum:数据文件分支。 取值范围:【0:mainfork;1:fsmfork; 2:vm fork】。 file id:数据文件编号。 取值范围: 【1:元数据文件;2 ~ 5:数据文件】。 blocks:扩展大小。 取值范围:【1:1号文件;8:2号文件;128:3号文件;1024:4号文件;4096:5号文件】。 file_block_id/head_block_id/block_id:物理页面在数据文件中的偏移页面号,以及其他含义为页面号的字段皆为此意。 取值范围:【0 ~ 4,294,967,294 】。 page_ type: 页面类型。 取值范围: 元页面:file head/file_header:文件头;spc head/spc_header:空间头;map head/map_header:映射头;map page/map_pages:映射页面;reverse pointer page/inverse pointer page/ip pages/:反向指针页面;segment head page/segment head:段头页面;level1 page:level1页面;data_pages/data extent:数据页面;fork head:分支头。 数据页面:heap、uheap、btree、ubtree。 未知页面:unknown(data extent):全零段页式页面,无法判断页面类型;unknown(fsm indexurq):fsm或indexurq 页面。 contents:数据文件的存储内容。 取值范围:【permanent:永久;unlogged:不记录日志;temporary:全局临时;temporary2:本地临时】。 local_space_shrink(tablespacename TEXT, databasename TEXT) 描述:当前节点上对指定段页式空间做物理空间收缩。目前只支持对当前连接的database做shrink。 返回值:空 gs_space_shrink(tablespace int4, database int4, extent_type int4, forknum int4) 描述:效果跟local_space_shrink类似,对指定段页式空间做物理空间收缩,但参数不同,传入的是tablespace和database的oid,extent_type为[2,5]的int值。extent_type为 1表示段页式元数据,目前不支持对元数据所在的物理文件做收缩。该函数仅限工具使用,不建议用户直接使用。 返回值:空 global_space_shrink(tablespacename TEXT, databasename TEXT) 描述:在cn上执行,对整个集群上所有dn执行段页式存储空间压缩。 注意:global_space_shrink 锁cluster,在此期间不能执行DDL操作。而local_space_shrink不会锁集群。 gs_stat_remain_segment_info() 描述:在CN上执行,展示在DN节点上,因为故障等原因,残留的extent。默认只有初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以查看,其余用户需要赋权后才可以使用。只支持在主机上执行。残留extent主要分为两类:分配而未被利用的segment和分配出去而未被利用的extent。两者主要区别在于segment会包含多个extent,回收时,要将segment上的extent一并全部回收。 返回值类型: 名称 描述 node_name 节点名称。 space_id 表空间ID。 db_id 数据库ID。 block_id Extent的ID。 type Extent的类型,当前有三种:ALLOC_SEGMENT|DROP_SEGMENT|SHRINK_EXTENT。 其中type的三种类型分别表示: ALLOC_SEGMENT:用户创建一张段页式表,当segment刚被分配,但是建表语句所在事务仍未提交时,节点故障,导致该segment被分配后,没有被使用。 DROP_SEGMENT:用户删除段页式表,当该事务成功提交,但是此表的segment页面对应的bit位未被重置,就发生掉电等故障,造成该segment未被使用,也未被释放。 SHRINK_EXTENT:用户对段页式表执行shrink操作,在未对空置出的extent进行释放时,发生掉电等故障,造成该extent残留,无法被重新利用。 例如: gaussdb=# SELECT * FROM gs_stat_remain_segment_info(); node_name | space_id | db_id | block_id | type -------------------+----------+-------+----------+--------------- dn_6001_6002_6003 | 16804 | 16803 | 4157 | ALLOC_SEGMENT (1 row) gs_free_remain_segment() 描述:清理通过函数gs_stat_remain_segment_info查询出的当前库的残留。默认只有初始用户、具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以执行,其余用户需要赋权后才可以使用。只支持在主机上执行。 返回值:Boolean gs_local_stat_remain_segment_info() 描述:在主DN上执行,显示当前节点的段页式残留信息。用户权限、返回值请参考gs_stat_remain_segment_info。 gs_local_free_remain_segment() 描述:在主DN上执行,清理通过函数gs_local_stat_remain_segment_info查询出的当前库的残留。用户权限、返回值请参考gs_free_remain_segment。 gs_seg_dump_page(tablespace_name name, file_id int4, bucketnode int4, file_block_id bigint, forknum int4 default 0) 描述:解析段页式的指定页面并返回解析内容。只有具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以执行。该函数为物理页面解析方式,每次返回一个页面的解析结果(返回的结果中不会包含实际的用户数据信息)。本函数不要求用户输入页面类型,在实现时,先尝试确定页面类型;如果不能确定,则输出可能的解析结果。 参数说明: 名称 类型 描述 table_space_name NAME 段对象所属的表空间。取值范围:合法存在的表空间name。 file_id INTEGER 数据文件标识。取值范围:[1, 5]的int4值。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 file_block_id BIGINT 物理页面在数据文件中的偏移页面号。取值范围:【0~4294967294】。 forknum INTEGER DEFAULT 0 数据文件fork号,默认为0。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 返回值类型: 名称 类型 描述 page_type TEXT 页面类型。取值范围: 业务页面:heap、uheap、btree、ubtree、gsivfflat_index、gsdiskann_index。 段页式元页面:bucket main head、file head、spc head、map head、map page、reverse pointer page、segment head page、level1 page。 未知页面: unknown(data extent):全零段页式页面, 无法判断页面类型。 unknown(fsm indexurq):fsm或indexurq页面。 result TEXT 解析结果。 例如(下列操作需要在创建过段页式普通表后再执行): gaussdb=# SELECT * FROM gs_seg_dump_page('pg_default', 1, 1024, 4157); page_type | result -------------------+----------------------------------------------------------------------------- segment head page | Page information of block 4157/4157 + | pd_lsn: 0/2C90608 ,len 8 ,offset 0 + | + | pd_checksum: 0x8A7F, verify success,len 2, offset 8 + | pd_flags: + | pd_lower: 24, empty, len 2, offset 12 + | pd_upper: 8192, old, len 2, offset 14 + | pd_special: 8192, size 0, len 2, offset 16 + | Page size & version: 8192, 8, len 2, offset 18 + | pd_xid_base: 0, len 8, offset 24 pd_multi_base: 0, len 8, offset 32+ | pd_prune_xid: 0, len 4 ,offset 20 + | + | Segment head information on this page + | magic: 44414548544E454D + | lsn is: 0/2C90540 + | nblocks: 0 + | total_blocks: 8 + | reserved: 0 + | Level 0 slots information on this page + | The BlockNumber of level0 slots 0 is: 4157 + | fork head information on this page + | 4157(valid) + | 4294967295(invalid) + | 4294967295(invalid) (1 row) gs_seg_dump_page(relid oid, bucketnode int, block_id bigint, partition bool default false, forknum int4 default 0) 描述:在DN上执行,解析段页式的指定页面并返回解析内容。只有具有sysadmin属性的用户以及在运维模式下具有运维管理员属性的用户可以执行。该函数为逻辑页面解析方式,每次返回一个页面的解析结果(返回的结果中不会包含实际的用户数据信息)。本函数不要求用户输入页面类型,在实现时,先尝试确定页面类型;如果不能确定,则输出可能的解析结果。 参数说明: 名称 类型 描述 relid OID 段对象标识。取值范围:合法存在的段页式对象oid,否则报错。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 block_id BIGINT 逻辑页面号。取值范围:【0~4294967294】。 partition BOOLEAN DEFAULT FALSE 段对象是否为分区,默认为false。取值范围:bool,代表所传入的oid对应的对象是否为分区。 forknum INTEGER DEFAULT 0 数据文件fork号,默认为0。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 返回值说明: 名称 类型 描述 page_type TEXT 页面类型。取值范围: 业务页面:heap、uheap、btree、ubtree、gsivfflat_index、gsdiskann_index。 段页式元页面:bucket_main_head、file head、spc head、map head、map page、reverse pointer page、segment head page、level1 page。 未知页面: unknown(data extent):全零段页式页面,无法判断页面类型。 unknown(fsm indexurq):fsm或indexurq页面。 result TEXT 解析结果。 例如(下列操作需要在DN上执行,relid必须为合法的段页式对象在该DN上的oid,且该对象需要存在数据,才能查到页面信息): gaussdb=# SELECT * FROM gs_seg_dump_page(16788, 1024, 0); page_type | result -----------+------------------------------------------------------------------------------------------------------------------------- heap | Page information of block 6021/6021 + | pd_lsn: 0/4463418 ,len 8 ,offset 0 + | + | pd_checksum: 0xD4CD, verify success,len 2, offset 8 + | pd_flags: + | pd_lower: 44, non-empty, len 2, offset 12 + | pd_upper: 8160, old, len 2, offset 14 + | pd_special: 8192, size 0, len 2, offset 16 + | Page size & version: 8192, 6, len 2, offset 18 + | pd_xid_base: 17049, len 8, offset 24 pd_multi_base: 0, len 8, offset 32 + | pd_prune_xid: 17049, len 4 ,offset 20 + | + | Heap tuple information on this page + | + | Tuple #1 is normal: length 28, offset 8160 + | (uint64)xmin/xmax/t_cid: 17052/0/0 + | (uint32)t_xmin/t_xmax: 3/3(check ilm flag to indicate whether t_xmin/t_xmax is xid or ilm time)+ | ctid:(block 0/0, offset 1) + | t_infomask: HEAP_XMAX_INVALID HEAP_HAS_NO_UID + | t_infomask2: Attrs Num: 1 + | t_hoff: 24 + | t_bits: NNNNNNNN + | Summary (1 total): 1 normal, 0 unused, 0 dead + | + | Normal Heap Page, special space is 0 + | + | (1 row) gs_seg_get_spc_location(tablespace_name NAME, bucketnode INTEGER, head_block_id BIGINT, block_id BIGINT) 描述:给定段和逻辑页面号,计算物理位置。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 tablespace_name NAME 段对象所属的表空间。 bucketnode INTEGER 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 head_block_id BIGINT 指定的段头页面号。 block_id BIGINT 指定的逻辑页面号。 返回值说明: 名称 类型 描述 extent_id INTEGER 逻辑页面所在的逻辑扩展号。 extent_size INTEGER 逻辑页面所在的逻辑扩展的大小。 file_id INTEGER 物理页面所在的数据文件标识。取值范围:[1, 5]的int4值。 file_block_id BIGINT 物理页面在数据文件中的偏移页面号。 例如(下列操作需要在DN上执行,需要提前在表空间下创建过段页式普通表并插入过数据): gaussdb=# SELECT * FROM gs_seg_get_spc_location('pg_default', 1024, 4157, 0); extent_id | extent_size | file_id | file_block_id -----------+-------------+---------+--------------- 0 | 8 | 2 | 4157 (1 row) gs_seg_get_spc_location(relid OID, bucketnode INTEGER,block_id BIGINT, partition BOOLEAD DEFAULT FALSE,forknum INTEGER DEFAULT 0) 描述:给定段和逻辑页面号,计算物理位置。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 relid OID 段对象标识。 bucketnode INTEGER 0~1023表示hashbucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 block_id BIGINT 指定逻辑页面号。 partition BOOLEAD DEFAULT FALSE 段对象是否为分区,默认为FALSE。 forknum INTEGER DEFAULT 0 段对象的分支,默认为0。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 返回值说明: 名称 类型 描述 extent_id INTEGER 逻辑页面所在的逻辑扩展号。 extent_size INTEGER 逻辑页面所在的逻辑扩展的大小。 file_id INTEGER 物理页面所在的数据文件标识。取值范围:[1, 5]的int4值。 file_block_id BIGINT 物理页面在数据文件中的偏移页面号。 例如(下列操作需要在DN上执行,relid必须为合法的的段页式对象在该DN上的oid,且该对象需要存在数据): gaussdb=# SELECT * FROM gs_seg_get_spc_location(24578,1024, 0); extent_id | extent_size | file_id | file_block_id -----------+-------------+---------+--------------- 0 | 8 | 2 | 4157 (1 row) gs_seg_get_location(block_id BIGINT, as_extent BOOLEAN DEFAULT FALSE) 描述:给定段和逻辑页面号,计算物理位置。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 block_id BIGINT 指定逻辑页面号。 as_extent BOOLEAN DEFAULT FALSE 参数block_id是否为扩展号,默认FALSE。 返回值说明: 名称 类型 描述 extent_id BIGINT 扩展号。 extent_size INTEGER 扩展的大小。 extent_offset INTEGER 扩展的偏移块号。 level0_slots_idx INTEGER 扩展在段头level0槽位数组下标。 level1_slots_idx INTEGER 扩展在段头level1槽位数组下标。 level1_page_offset INTEGER 扩展在段头level1槽位页面的偏移。 segment_blocks BIGINT 包含此页面或扩展的段的页面数。 relative_fno INTEGER 包含此页面或扩展的相对文件编号。 例如: gaussdb=# SELECT * FROM gs_seg_get_location(4157); extent_id | extent_size | extent_offset | level0_slots_idx | level1_slots_idx | level1_page_offset | segment_blocks | relative_fno -----------+-------------+---------------+------------------+------------------+--------------------+----------------+-------------- 47 | 128 | 61 | 47 | | | 4158 | 3 (1 row) gs_seg_get_segment_layout() 描述:输出段的静态布局。只支持管理员权限用户查询。 返回值说明: 名称 类型 描述 version TEXT 段页式版本。默认:1.0。 section_id INTEGER 段划分的数据区号。 section_type TEXT 段数据区扩展类型。 取值范围: meta:段头。 data:数据。 extent_size INTEGER 扩展大小。单位为字节。 extent_page_count INTEGER 扩展页面数。 extent_count_start BIGINT 起始扩展号。 extent_count_end BIGINT 终止扩展号。 total_size BIGINT 段数据区的大小。单位为字节。 例如: gaussdb=# SELECT * FROM gs_seg_get_segment_layout(); version | section_id | section_type | extent_size | extent_page_count | extent_count_start | extent_count_end | total_size ---------+------------+--------------+-------------+-------------------+--------------------+------------------+---------------- 1.0 | 1 | meta | 8192 | 1 | 0 | 0 | 8192 1.0 | 2 | data | 65536 | 8 | 1 | 16 | 1048576 1.0 | 3 | data | 1048576 | 128 | 17 | 143 | 134217728 1.0 | 4 | data | 8388608 | 1024 | 144 | 255 | 1073741824 1.0 | 5 | data | 33554432 | 4096 | 256 | 1025255 | 34394366541824 (5 rows) gs_seg_get_datafile_layout() 描述:查看1~5号数据文件的静态布局。只支持管理员权限用户查询。 返回值说明: 名称 类型 描述 version TEXT 段页式版本。默认:1.0。 seg_storage_type TEXT segment表示普通段页式数据。 hashbucket表示hashbucket数据。 file_id INTEGER 数据文件标识。取值范围:[1, 5]的int4值。 section_id INTEGER 数据文件划分的数据区号。 section_type TEXT 数据文件区类型。 取值范围: file_header表示文件头。 spc_header表示空间头。 map_header表示映射头。 map_pages表示映射页面。 ip_pages(inverse pointer pages)表示反向指针页面。 data_pages表示数据页面。 page_start BIGINT 数据区域起始页面号。 page_end BIGINT 数据区域结束页面号。 page_count BIGINT 数据区域页面数。 total_size BIGINT 数据区的大小。单位为字节。 例如: gaussdb=# SELECT * FROM gs_seg_get_datafile_layout(); version | seg_storage_type | file_id | section_id | section_type | page_start | page_end | page_count | total_size ---------+------------------+---------+------------+--------------+--------------+--------------+-------------+----------------- 1.0 | segment | 1 | 0 | file_header | 0 | 0 | 1 | 8192 1.0 | segment | 1 | 1 | spc_header | 1 | 1 | 1 | 8192 1.0 | segment | 1 | 2 | map_header | 2 | 2 | 1 | 8192 1.0 | segment | 1 | 3 | map_pages | 3 | 66 | 64 | 524288 1.0 | segment | 1 | 4 | ip_pages | 67 | 4156 | 4090 | 33505280 1.0 | segment | 1 | 5 | data_pages | 4157 | 4147260 | 4143104 | 33940307968 ...(数据较多,仅展示部分) gs_seg_get_slice_layout(file_id INTEGER, bucketnode INTEGER,slice_id INTEGER) 描述:输出给定数据文件分片的静态布局。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 file_id INTEGER 数据文件标识。取值范围:[1, 5]的int4值。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 slice_id INTEGER Slice文件标识。 返回值说明: 名称 类型 描述 version TEXT 段页式版本。默认:1.0。 section_id INTEGER 数据文件划分的数据区号。 section_type INTEGER 数据文件区类型。 取值范围: file_header表示文件头。 spc_header表示空间头。 map_header表示映射头。 map_pages表示映射页面。 ip_pages(inverse pointer pages)表示反向指针页面。 data_pages表示数据页面。 page_start BIGINT 数据区域起始页面号。 page_end BIGINT 数据区域结束页面号。 page_count BIGINT 数据区域页面数。 total_size BIGINT 数据区的大小。单位为字节。 例如: gaussdb=# SELECT * FROM gs_seg_get_slice_layout(1,1024,0); version | section_id | section_type | page_start | page_end | page_count | total_size ---------+------------+--------------+------------+----------+------------+------------ 1.0 | 0 | file_header | 0 | 0 | 1 | 8192 1.0 | 1 | spc_header | 1 | 1 | 1 | 8192 1.0 | 2 | map_header | 2 | 2 | 1 | 8192 1.0 | 3 | map_pages | 3 | 66 | 64 | 524288 1.0 | 4 | ip_pages | 67 | 4156 | 4090 | 33505280 1.0 | 5 | data_pages | 4157 | 131071 | 126915 | 1039687680 (6 rows) gs_seg_get_segment(tablespace_name NAME, bucketnode INTEGER, head_block_id BIGINT) 描述:输出该表空间下段头文件里段头页面的段头信息。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 tablespace_name NAME 段对象所属的表空间。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 head_block_id BIGINT 段头页面号。 返回值说明: 名称 类型 描述 blocks BIGINT 段对象的逻辑页面数。 total_blocks BIGINT 段对象的物理页面数。 extents INTEGER 段对象的逻辑扩展数。 total_extents INTEGER 段对象的物理扩展数。 head_lsn TEXT 段头lsn标识。 level0_slots BIGINT[] 段扩展映射level0槽位数组。 level1_slots BIGINT[] 段扩展映射level1槽位数组。 fork_head BIGINT[] 段对象的分支段头数组。 例如(下列操作需要在创建过段页式普通表后再执行): gaussdb=# SELECT * FROM gs_seg_get_segment('pg_default', 1024, 4157); blocks | total_blocks | extents | total_extents | head_lsn | level0_slots | level1_slots | fork_head --------+--------------+---------+---------------+----------+--------------+--------------+---------------- 9 | 16 | 2 | 2 | 62211744 | {4157,4165} | {} | {4157,4158,-1} (1 row) gs_seg_get_segment(relid OID, bucketnode INTEGER, partition BOOLEAD DEFAULT FALSE,forknum INTEGER DEFAULT 0) 描述:给定relid,bucketnode等信息输出对应的段头信息。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 relid OID 表对应的OID。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 partition BOOLEAN DEFAULT FALSE 段对象是否为分区,默认为false。 取值范围:bool,代表所传入的oid对应的对象是否为分区。 forknum INTEGER DEFAULT 0 数据文件fork号,默认为0。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 返回值说明: 名称 类型 描述 blocks BIGINT 段对象的逻辑页面数。 total_blocks BIGINT 段对象的物理页面数。 extents INTEGER 段对象的逻辑扩展数。 total_extents INTEGER 段对象的物理扩展数。 head_lsn TEXT 段头lsn标识。 level0_slots BIGINT[] 段扩展映射level0槽位数组。 level1_slots BIGINT[] 段扩展映射level1槽位数组。 fork_head BIGINT[] 段对象的分支段头数组。 例如(下列操作需要在DN上执行,relid必须为查询的段页式对象在该DN上的oid): gaussdb=# SELECT * FROM gs_seg_get_segment(16768, 1024); blocks | total_blocks | extents | total_extents | head_lsn | level0_slots | level1_slots | fork_head --------+--------------+---------+---------------+----------+--------------+--------------+---------------- 9 | 16 | 2 | 2 | 62211744 | {4157,4165} | {} | {4157,4158,4294967295} (1 row) gs_seg_get_extents(tablespace_name NAME, bucketnode INTEGER, head_block_id BIGINT) 描述:输出该表空间下段头文件里段头页面的段对象的所有扩展,包含1号文件中的segment head、fork head、level1 page,2~5号文件中的data extent。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 tablespace_name NAME 段对象所属的表空间。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 head_block_id BIGINT 段头页面号。 返回值说明: 名称 类型 描述 extent_id INTEGER 逻辑扩展号。 file_id INTEGER 扩展所在的数据文件标识。取值范围:[1, 5]的int4值。 forknum INTEGER 段对象的分支。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 block_id BIGINT 扩展所在的数据文件中的起始页面号。 blocks INTEGER 扩展大小。 取值范围: 1表示1号文件。 8表示2号文件。 128表示3号文件。 1024表示4号文件。 4096表示5号文件。 usage_type TEXT Extent的使用类型。 取值范围: segment head表示段头。 fork head表示分支头。 level1 page表示level页面。 data extent表示数据扩展。 例如(下列操作需要在创建过段页式普通表后再执行): gaussdb=# SELECT * FROM gs_seg_get_extents('pg_default', 1024, 4157); extent_id | file_id | forknum | block_id | blocks | usage_type -----------+---------+---------+----------+--------+-------------- | 1 | 0 | 4157 | 1 | segment head 0 | 2 | 0 | 4157 | 8 | data extent 1 | 2 | 0 | 4165 | 8 | data extent (3 rows) gs_seg_get_extents(relid OID, bucketnode INTEGER, partition BOOLEAD DEFAULT FALSE,forknum INTEGER DEFAULT 0) 描述:输出对应段头文件里段头页面的段对象的所有扩展,包含1号文件中的segment head、fork head、level1 page,2~5号文件中的data extent。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 relid OID 表对应的OID。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 partition BOOLEAN DEFAULT FALSE 段对象是否为分区,默认为false。 取值范围:boolean,代表所传入的oid对应的对象是否为分区。 forknum INTEGER DEFAULT 0 数据文件fork号,默认为0。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 返回值说明: 名称 类型 描述 extent_id INTEGER 逻辑扩展号。 file_id INTEGER 扩展所在的数据文件标识。取值范围:[1, 5]的int4值。 forknum INTEGER 段对象的分支。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 block_id BIGINT 扩展所在的数据文件中的起始页面号。 blocks INTEGER 扩展大小。 取值范围: 1表示1号文件。 8表示2号文件。 128表示3号文件。 1024表示4号文件。 4096表示5号文件。 usage_type TEXT Extent的使用类型。 取值范围: segment head表示段头。 fork head表示分支头。 level1 page表示level页面。 data extent表示数据扩展。 例如(下列操作中relid必须是合法的段页式对象的oid): gaussdb=# SELECT * FROM gs_seg_get_extents(16768, 1024); extent_id | file_id | forknum | block_id | blocks | usage_type -----------+---------+---------+----------+--------+-------------- | 1 | 0 | 4157 | 1 | segment head 0 | 2 | 0 | 4157 | 8 | data extent 1 | 2 | 0 | 4165 | 8 | data extent (3 rows) gs_seg_free_spc_remain_segment(tablespace_name NAME, head_file_id INTEGER, bucketnode INTEGER, head_block_id BIGINT) 描述:释放指定表空间上的段页式残留段在1号文件上占用的页面。残留段可以在GS_SEG_SPC_REMAIN_SEGMENTS视图中查询。只支持管理员权限用户查询。且仅允许在主机执行。 当前该函数存在缺陷,计划在后续版本重构,以彻底解决段页式残留问题,该函数为离线兜底的段页式清理手段。 为保证查询到的残留段和残留扩展的一致性,以及残留清理的一致性,该函数及GS_SEG_SPC_REMAIN_SEGMENTS视图应在DDL\DML受限状态下执行。鉴于当前版本并未提供DML\DDL受限能力,用户在是使用该特性时,应保证其执行环境DML\DDL受限状态。 该函数需要在参数enable_segment_remain_cleanup取值为off时使用。 参数说明: 名称 类型 描述 tablespace_name NAME 表空间名称。 head_file_id INTEGER 段页式残留段的段头所在的数据文件标识。取值范围:【1】。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 head_block_id BIGINT 指定的段头页面号。 返回值说明:void 例如: gaussdb=# SELECT * FROM gs_seg_free_spc_remain_segment('pg_default', 1, 1024, 4159); gs_seg_free_spc_remain_segment -------------------------------- (1 row) gs_seg_free_spc_remain_extent(tablespace_name NAME, file_id INTEGER, bucketnode INTEGER, forknum INTEGER, block_id BIGINT) 描述:释放指定表空间上残留的段页式孤立扩展。残留的孤立扩展可以在GS_SEG_SPC_REMAIN_EXTENTS视图中查询。只支持管理员权限用户查询。且仅允许在主机执行。 该函数需要在参数enable_segment_remain_cleanup取值为off时使用。 参数说明: 名称 类型 描述 tablespace_name NAME 表空间名称。 file_id INTEGER 段页式残留扩展所在数据文件标识。取值范围:【1~5】号文件。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 forknum INTEGER 数据文件分支编号。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 block_id BIGINT 指定的段头页面号。 返回值说明:void 例如: gaussdb=# SELECT * FROM gs_seg_free_spc_remain_extent('pg_default', 1, 1024, 0, 4159); gs_seg_free_spc_remain_extent ------------------------------- (1 row) gs_seg_get_datafiles(database_name NAME) 描述:输出查看实例所有数据文件信息。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 database_name NAME 数据库名称。默认为current_database(),代表当前数据库名称。 返回值说明: 名称 类型 描述 file_name TEXT 数据文件名。例如:base/17467/2_fsm。 file_id INTEGER 数据文件标识。取值范围:【1~5】号文件。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 forknum INTEGER 数据文件分支类型。 tablespace_name NAME 数据文件所属的表空间名称。 contents TEXT 数据文件的存储内容。 取值范围: permanent:永久。 unlogged:不记录日志。 temporary:全局临时。 temporary2:本地临时。 extent_size INTEGER 数据文件的扩展大小。 meta_blocks BIGINT 数据文件的已分配的元页面数。 data_blocks BIGINT 数据文件的已分配的数据页面数。 total_blocks BIGINT 数据文件的总物理页面数。 high_water_mark BIGINT 数据文件使用页数的高水位线。 utilization REAL 使用的block数占总block数的百分比。即(data_blocks+meta_blocks)/total_blocks。 例如(下列操作需要在创建过段页式表后再执行): gaussdb=# SELECT * FROM gs_seg_get_datafiles(); file_name | file_id | bucketnode | forknum | tablespace_name | contents | extent_size | meta_blocks | data_blocks | total_blocks | high_water_mark | utilization --------------+---------+------------+---------+-----------------+-----------+-------------+-------------+-------------+--------------+-----------------+------------- base/15949/1 | 1 | 1024 | 0 | pg_default | permanent | 1 | 4157 | 1 | 16384 | 1048702976 | 2.24208e-44 base/15949/2 | 2 | 1024 | 0 | pg_default | permanent | 8 | 4157 | 8 | 16384 | 1048717312 | 2.24208e-44 (2 rows) gs_seg_get_spc_extents(tablespace_name NAME, file_id INTEGER, bucketnode INTEGER, forknum INTEGER, skip_unused BOOLEAN DEFAULT TRUE) 描述:获取指定表空间所有扩展信息。只支持管理员权限用户查询。 参数说明: 名称 类型 描述 tablespace_name NAME 表空间名称。 file_id INTEGER 数据文件标识。取值范围:[1, 5]的int4值。 bucketnode INTEGER 0~1023表示hash bucket表的bucketnode。 1024表示段页式普通表的bucketnode。 1025表示段页式全局临时表的bucketnode。 1026表示段页式unlogged表的bucketnode。 1027表示段页式本地临时表的bucketnode。 forknum INTEGER 数据文件分支。 取值范围: 0:main fork。 1:fsm fork。 2:vm fork。 skip_unused BOOLEAN DEFAULT TRUE 是否只输出已分配的extent,默认为TRUE,代表只输出已分配的extent。 返回值说明: 名称 类型 描述 block_id BIGINT 数据扩展的起始页面号。 blocks INTEGER 数据扩展大小。 取值范围: 1表示1号文件。 8表示2号文件。 128表示3号文件。 1024表示4号文件。 4096表示5号文件。 contents TEXT 存储内容。 取值范围: permanent表示永久。 unlogged表示不记录日志。 temporary表示全局临时。 temporary2表示本地临时。 in_used TEXT 是否已分配。 取值范围: Y表示已分配。 N表示未分配。 mapblock_location TEXT 扩展在map block中的位置。格式:(page_id, offset)。 head_file_id INTEGER 段头所在数据文件标识。 head_block_id BIGINT 段头页面号。 usage_type TEXT Extent的使用类型。 取值范围: segment head表示段头。 fork head表示分支头。 level1 page表示level页面。 data extent表示数据扩展。 remain_flag TEXT 是否为shrink残留扩展。 取值范围: Y表示是shrink残留扩展。 N表示不是shrink残留扩展。 special_data INTEGER 扩展对应反向指针的特殊数据区。 ipblock_location TEXT 扩展反向指针位置。格式:(block_id, offset)。 例如: gaussdb=# SELECT * FROM gs_seg_get_spc_extents('pg_default', 1,1024, 0); block_id | blocks | contents | in_used | mapblock_location | head_file_id | head_block_id | usage_type | remain_flag | special_data | ipblock_location ----------+--------+-----------+---------+-------------------+--------------+---------------+--------------+-------------+--------------+------------------ 4157 | 1 | permanent | Y | (4157,0) | 1 | 4157 | segment head | N | 0 | (67,0) 4158 | 1 | permanent | Y | (4157,1) | 1 | 4158 | fork head | N | 1 | (67,1) (2 rows) 父主题: 系统管理函数
  • 服务器信号函数 服务器信号函数向其他服务器线程发送控制信号。只有系统管理员有权执行以下函数。 pg_cancel_backend(pid int) 描述:取消一个后端线程正在执行的语句。 返回值类型:Boolean 备注:pg_cancel_backend向由pid标识的后端线程发送一个查询取消(SIGINT)信号。一个活动的后端线程的PID可以从PG_STAT_ACTIVITY视图的pid字段找到,或者在服务器上用ps列出数据库线程。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 pg_cancel_session(pid bigint, sessionid bigint) 描述:线程池模式下,取消一个活跃状态会话正在执行的语句。多租场景下,PDB中调用该函数仅能取消本PDB的会话,Non-PDB调用该函数可对全局进行操作。 返回值类型:Boolean 备注:pg_cancel_session的入参可以通过pg_stat_activity中的pid字段和sessionid的字段查询,可以取消线程池模式下,活跃状态会话正在执行的语句。当入参pid和sessionid相同,且均为线程id时,功能和pg_cancel_backend相同。 pg_reload_conf() 描述:导致所有服务器线程重新装载它们的配置文件。多租场景下,PDB内部禁用该函数。 返回值类型:Boolean 备注:pg_reload_conf给服务器发送一个SIGHUP信号,导致所有服务器线程重新装载配置文件。 pg_rotate_logfile() 描述:滚动服务器的日志文件。多租场景下,non-PDB调用该函数时正常运行,PDB调用该函数时报错。 返回值类型:Boolean 备注:pg_rotate_logfile给日志文件管理器发送信号,使之立即切换到一个新的输出文件。这个函数只有在redirect_stderr用于日志输出的时候才有用,否则不会产生日志文件管理器子线程。 pg_terminate_backend(pid int) 描述:终止一个后台线程。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。若执行该函数后未成功终止目标会话,则会强制关闭该会话和客户端的socket连接。 该函数可终止非线程池的线程、活跃状态的线程池线程,但无法终止非活跃状态的线程池线程。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT pid from pg_stat_activity; pid ----------------- 140657876268816 (1 rows) gaussdb=# SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t (1 row) pg_terminate_session(pid int64, sessionid int64) 描述:线程池模式下,终止一个后台session。多租场景下,PDB中调用该函数仅能终止本PDB的会话,Non-PDB调用该函数可对全局进行操作。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户、会话所连接的数据库的属主、会话的属主、或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。若执行该函数后未成功终止目标会话,则会强制关闭该会话和客户端的socket连接。 当入参pid和sessionid相同,且均为线程id时,该函数可终止非线程池的线程、活跃状态的线程池线程。 当入参pid和sessionid不同时,该函数可终止活跃状态的会话,或关闭非活跃状态会话和客户端的socket连接。 pg_terminate_active_session_socket(pid int64, sessionid int64) 描述:关闭一个活跃session和客户端的socket连接。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 terminate_session_has_temp_file() 描述:中断所有正在打开临时文件的会话。 返回值类型:void 备注:仅系统管理员有权限执行该函数。该函数仅由CM组件在特定流程中自动调用,不建议用户手动进行调用。 父主题: 系统管理函数
  • hashbucket系统函数 gs_redis_get_plan(origin_group_id OID,target_group_id OID) 描述:获取完整的迁移计划。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。 参数说明: 名称 类型 描述 origin_group_id OID 源节点的node group。 target_group_id OID 新节点的node group。 返回值说明: 名称 类型 描述 sender_id OID 源节点的node oid。 sender_name CS TRING 源节点的节点名称。 receiver_id OID 新节点的node oid。 receiver_name CSTRING 新节点的节点名称。 bucket_number INT4 bucket_list中包含的bucket个数。 bucket_list OIDVECTOR_EXTEND 迁移计划涉及的bucket列表。 示例: gaussdb=# SELECT * FROM gs_redis_get_plan(16388, 16417); sender_id | sender_name | receiver_id | receiver_name | bucket_number | bucket_list -----------+-------------+-------------+---------------+---------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 16385 | datanode1 | 16415 | datanode3 | 256 | 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 18 8 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 2 48 249 250 251 252 253 254 255 16386 | datanode2 | 16416 | datanode4 | 256 | 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 55 3 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 6 13 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 (2 rows) gs_redis_get_bucket_statistics 描述:获取日志流传输状态。只支持在扩容期间调用;只支持管理员权限用户查询。 参数:void 返回值说明: 名称 类型 描述 bucket_id OID bucket id redis_state INT1 bucket的扩容状态,0表示扩容未开始,1表示扩容基线数据已完成。 xlog_count INT8 bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)在原DN产生的xlog数量。 sndr_latest_lsn INT8 bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)在原DN产生的最新LSN。 parser_latest_lsn INT8 bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被原DN的扩容相关线程解析到的最新LSN。 parser_latest_lsn_new INT8 bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被原DN的扩容相关线程解析到bucketxlog的最新LSN。 rcvr_redo_latest_lsn INT8 bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被新DN的扩容相关线程回放到的最新LSN。 rcvr_redo_latest_lsn_new INT8 bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)被原DN的扩容相关线程解析到bucketxlog的最新LSN。 rcvr_checkpoint INT8 bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)的checkpoint点。 rcvr_redo_start_lsn INT8 bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)回放开始的原始LSN。 rcvr_redo_end_lsn INT8 bucket在当前database扩容开始后(即上次调用gs_redis_set_distributed_db后)回放结束的原始LSN。 示例: gaussdb=# SELECT * FROM gs_redis_get_bucket_statistics(); bucket_id | redis_state | xlog_count | sndr_latest_lsn | parser_latest_lsn | parser_latest_lsn_new | rcvr_redo_latest_lsn | rcvr_redo_latest_lsn_new | rcvr_checkpoint | rcvr_redo_start_lsn | rcvr_redo_end_lsn -----------+-------------+------------+-----------------+-------------------+-----------------------+----------------------+--------------------------+-----------------+ --------------------+------------------- 0 | 1 | 1 | 79303808 | 79303808 | 16777352 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 1 | 1 | 1 | 79303896 | 79303896 | 16777448 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 2 | 1 | 1 | 79303984 | 79303984 | 16777544 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 3 | 1 | 1 | 79304072 | 79304072 | 16777640 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 4 | 1 | 1 | 79304160 | 79304160 | 16777736 | 79326320 | 16801904 | 762624525 | 77256412 | 79326320 ...(数据较多,仅展示部分) gs_redis_set_distributed_db(db_name CSTRING) 描述:设置当前正在hashbucket重分布的数据库。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。 参数说明: db_name:本次要重分布的数据库库名。 返回值说明:void 示例: gaussdb=# SELECT gs_redis_set_distributed_db('gaussdb'); gs_redis_set_distributed_db ----------------------------- 0 (1 row) gs_redis_hashbucket_update_segment_header(origin_group_id OID,target_group_id OID) 描述:更新当前数据库所有hashbucket表的header。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。 参数说明: 名称 类型 描述 origin_group_id OID 源节点的node group。 target_group_id OID 新节点的node group。 返回值类型:Boolean 示例: gaussdb=# SELECT * FROM gs_redis_hashbucket_update_segment_header(16388, 16417); gs_redis_hashbucket_update_segment_header ------------------------------------------- t (1 row) gs_redis_local_get_segment_header(table_name REGCLASS,bucketlist OIDVECTOR_EXTEND) 描述:获取段页式表header。只支持DN上调用。 参数说明: 名称 类型 描述 table_name REGCLASS 表名 bucketlist OIDVECTOR_EXTEND bucket列表。 返回值类型:header_info 示例: gaussdb=# SELECT * FROM gs_redis_local_get_segment_header('mytable', '256'); gs_redis_local_get_segment_header ---------------------------------------------------------------------------------------------------------------------------- 4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,4294967295,...(数据较多,仅展示部分) (1 row) gs_redis_local_update_segment_header(table_name REGCLASS,header_info CSTRING) 描述:更新段页式表header。只支持DN上调用。 参数说明: 名称 类型 描述 table_name REGCLASS 表名 header_info CSTRING 段页式表header。 返回值类型:void 示例: gaussdb=# SELECT * FROM gs_redis_local_update_segment_header('mytable', '4294967295,4294967295,4294967295,4294967295,....'); (数据较多,仅展示部分) gs_redis_local_update_segment_header ------------------------------------------- 0 (1 row) gs_redis_hashbucket_update_inverse_pointer(buckets TEXT, origin_dn_name TEXT, new_dn_name TEXT) 描述:更新当前db所有hashbucket表本批次bucket的反向指针。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。 参数说明: 名称 类型 描述 buckets TEXT 本次上线的bucket列表。 origin_dn_name TEXT 源节点名称。 new_dn_name TEXT 新节点名称。 返回值类型:void 示例: gaussdb=# SELECT * FROM gs_redis_hashbucket_update_inverse_pointer('0,1,2,3,4,5,6,7,8,9,10','datanode1','datanode3'); gs_redis_hashbucket_update_inverse_pointer ------------------------------------------- 0 (1 row) gs_redis_local_get_inverse_pointer(buckets TEXT,origin_dn_name TEXT, new_dn_name TEXT) 描述:获取反向指针。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。 参数说明: 名称 类型 描述 buckets TEXT 本次上线的bucket列表。 origin_dn_name TEXT 源节点名称。 new_dn_name TEXT 新节点名称。 返回值类型:void 示例: gaussdb=# SELECT * FROM gs_redis_hashbucket_update_inverse_pointer('0,1,2,3,4,5,6,7,8,9,10','datanode1','datanode3'); gs_redis_hashbucket_update_inverse_pointer ------------------------------------------- 0 (1 row) gs_redis_local_update_inverse_pointer(table_name TEXT,header_info TEXT, bucketlist TEXT) 描述:记录更新反向指针的X LOG 。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。 参数说明: 名称 类型 描述 table_name REGCLASS 表名。 header_info TEXT 段页式表header。 bucketlist TEXT bucket列表。 返回值类型:void 示例: gaussdb=# SELECT * FROM gs_redis_local_update_inverse_pointer('mytable', '4294967295,4294967295,4294967295,4294967295,....','1 2 3'); (数据较多,仅展示部分) gs_redis_local_update_inverse_pointer ------------------------------------------- 0 (1 row) gs_redis_local_set_hashbucket_frozenxid 描述:修改hashbucket表在系统表中的relfrozenxid64值。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。 参数说明:void 返回值类型:void 示例: gaussdb=# SELECT * FROM gs_redis_local_set_hashbucket_frozenxid(); gs_redis_local_set_hashbucket_frozenxid ------------------------------------------- 0 (1 row) gs_redis_set_hashbucket_frozenxid(origin_group_id OID,target_group_id OID) 描述:修改新DN节点hashbucket表在系统表中的relfrozenxid64值。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。 参数说明: 名称 类型 描述 origin_group_id OID 源节点的node group。 target_group_id OID 新节点的node group。 返回值类型:void 示例: gaussdb=# SELECT * FROM gs_redis_set_hashbucket_frozenxid(16388, 16417); gs_redis_set_hashbucket_frozenxid ------------------------------------------- 0 (1 row) gs_redis_set_nextxid(xid BIGINT) 描述:修改DN节点next_xid值。只支持在扩容期间调用。只支持管理员权限用户查询;只支持DN上调用。 参数说明:xid:预期next_xid的值 返回值类型:void 示例: gaussdb=# SELECT * FROM gs_redis_set_nextxid('15268817'); gs_redis_set_nextxid ------------------------------------------- 0 (1 row) gs_redis_set_csn(csn BIGINT) 描述:修改DN节点next_csn值。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用;只支持在GTM_FREE模式下调用。 参数说明: csn:预期next_csn的值。 返回值类型:void 示例: gaussdb=# SELECT * FROM gs_redis_set_csn('15268817'); gs_redis_set_csn ------------------------------------------- 0 (1 row) gs_redis_check_bucket_flush(dn_array NAME[]) 描述:查询RTO回放私有buffer是否全部刷下去。只支持在扩容期间调用;只支持管理员权限用户查询。 参数说明: dn_array:DN节点名称列表 返回值类型:Boolean 示例: gaussdb=# SELECT * FROM gs_redis_check_bucket_flush('{datanode1, datanode2}'); gs_redis_check_bucket_flush ----------------------------- f (1 row) gs_redis_get_flush_page_lsn(isclean bool) 描述:查询bucket扩容回放的刷页信息。 权限:只支持debug版本调用,只支持在扩容期间调用;只支持管理员权限用户查询。 参数说明:isclean:BOOLEAN类型,是否清理刷页信息。 返回值说明: 名称 类型 描述 node_name TEXT 页面所在dn名 space_id OID 表空间id db_id OID 数据库id file_id OID 数据文件编号,取值范围1-5 bucket_id OID bucket分区id,取值范围0-1023 forknum OID 数据文件分支,取值范围0-2 blocknum OID 物理页面在数据文件中的偏移页面号 latest_flush_lsn UINT8 刷脏页面最新的lsn 示例: gaussdb=# SELECT * FROM gs_redis_get_flush_page_lsn(false); node_name | space_id | db_id | file_id | bucket_id | forknum | blocknum | last_flush_lsn ------------------------------------------------------------------------------------------- datanode2 | 1633 | 16387 | 1 | 66 | 0 | 20 | 1571838992 (1 row) gs_redis_show_bucketxid(bucketid_list OIDVECTOR_EXTEND) 描述:查询指定bucket对应的bucketxid。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。 参数说明: bucketid_list:bucket列表。 返回值类型:CSTRING 示例: gaussdb=# SELECT * FROM gs_redis_show_bucketxid('1 2 3'); gs_redis_show_bucketxid ---------------------------- 88880001 88880001 88880001 (1 row) gs_redis_drop_bucket_files(origin_group_id OID,target_group_id OID) 描述:删除源节点已经物理搬迁的文件。只支持在扩容期间调用;只支持管理员权限用户查询;只支持CN上调用。 参数说明: 名称 类型 描述 origin_group_id OID 源节点的node group target_group_id OID 新节点的node group 返回值类型:BOOLEAN 示例: gaussdb=# SELECT * FROM gs_redis_drop_bucket_files(16388, 16417); gs_redis_drop_bucket_files ------------------------------------------- t (1 row) gs_redis_local_drop_bucket_files(bucketlist CSTRING,bucketnum SMALLINT) 描述:删除对应的bucket list。只支持在扩容期间调用;只支持管理员权限用户查询;只支持DN上调用。 参数说明: 名称 类型 描述 bucketlist CSTRING 指定bucket列表 bucketnum SMALLINT bucket的个数 返回值类型:Boolean 示例: gaussdb=# SELECT * FROM gs_redis_local_drop_bucket_files('1 2 3', 3); gs_redis_local_drop_bucket_files ------------------------------------------- t (1 row) 父主题: 系统管理函数
  • HTAP系统函数 gs_htap_tmu_data(rel_oid oid, rowgroup_id integer) 描述:查看实时事务单元TMU中的活跃事务数据。当rowgroup_id为0时,返回表中所有活跃事务数据;当rowgroup_id非0时,返回表中指定行组中的活跃事务数据。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 本函数对OLTP业务有一定影响,仅作为运维接口使用,且不建议频繁执行。 表1 gs_htap_tmu_data参数说明 参数类型 参数名 类型 描述 输入参数 rel_oid oid 行存表oid信息。 输入参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 rel_oid oid 行存表oid信息。 输出参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 xid xid 操作该数据的事务id。 输出参数 ctid cstring 该数据在页面上的位置。 输出参数 flag smallint unsigned 二进制标记位,每一数位表示TMU记录的不同操作属性。其中: 第4位为1时,表示该记录是一条更新操作。 第3位为1时,表示该记录是一条删除操作。 第2位为1时,表示该记录是一条插入操作。 示例: 当enable_htap=off时: gaussdb=# select * from gs_htap_tmu_data(16796,0); ERROR: Query failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_htap_tmu_data(16796,0); rel_oid | rowgroup_id | xid | ctid | flag ---------+-------------+-------+-------+------- 16796 | 1 | 78437 | (0,1) | 16385 16796 | 1 | 78437 | (0,2) | 16385 16796 | 1 | 78439 | (0,1) | 4097 16796 | 1 | 78439 | (0,2) | 4097 (4 rows) gs_htap_tmu_chunk_meta(rel_oid oid, rowgroup_id integer) 描述:查看实时事务单元TMU元数据信息。当rowgroup_id为0时,返回所有行组中的实时事务单元TMU数据信息;当rowgroup_id非0时,返回表中指定行组中的实时事务单元TMU数据信息。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 表2 gs_htap_tmu_chunk_meta参数说明 参数类型 参数名 类型 描述 输入参数 rel_oid oid 行存表oid信息。 输入参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 rel_oid oid 行存表oid信息。 输出参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 status smallint unsigned 表示TMU的状态。 1表示TMU没有被清理过。 2表示TMU被清理过。 输出参数 row_count integer unsigned 数据行数。 输出参数 buffer_count integer unsigned 包含的buffer个数。 输出参数 mem_usage bigint 申请内存大小。 输出参数 inprogress cstring 表示插入TMU数据的事务处于活跃状态的占比。 输出参数 completed cstring 表示插入TMU数据的事务处于提交或回滚状态的占比。 示例: 当enable_htap=off时: gaussdb=# select * from gs_htap_tmu_chunk_meta(16796,0); ERROR: Query failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_htap_tmu_chunk_meta(16796,0); rel_oid | rowgroup_id | status | row_count | buffer_count | mem_usage | inprogress | completed ---------+-------------+--------+-----------+--------------+-----------+------------+----------- 16796 | 1 | 1 | 4 | 1 | 65536 | 0.00% | 100.00% (1 row) gs_imcv_bgworker_status() 描述:显示执行IMCV表重建的bgworker的状态信息。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 表3 gs_imcv_bgworker_status参数说明 参数类型 参数名 类型 描述 输出参数 worker_pid bigint 线程号。 输出参数 relation_id oid 正在处理的IMCV表的oid。 输出参数 worker_status cstring 表示idle(准备)、running(进行中)、finished(完成)三种线程工作状态。 输出参数 start_time timestamp with time zone 重建开始的时间戳。 示例: 当enable_htap=off时: gaussdb=# select * from gs_imcv_bgworker_status(); ERROR: Query failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_imcv_bgworker_status(); worker_pid | relation_id | worker_status | start_time ------------+-------------+---------------+------------ 0 | 0 | finished | 0 | 0 | idle | 0 | 0 | idle | (3 rows) gs_imcv_flush(reloid oid) 描述:对数据库中指定的IMCV表立即进行一次重建,并显示重建的结果。重建过程将刷新IMCV表,移除旧数据并同步当前表的非活跃数据。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 当IMCV表内的数据足够新鲜时,可能会跳过重建。本函数对OLTP业务有一定影响,仅作为运维接口使用,且不建议频繁执行。 表4 gs_imcv_flush参数说明 参数类型 参数名 类型 描述 输入参数 reloid oid 行存表oid。 输出参数 output text 返回本次重建的结果。显示行组重建成功的数量以及跳过重建的数量。 示例: 当enable_htap=off时: gaussdb=# select * from gs_imcv_flush(16796); ERROR: Manual row group rebuilding failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_imcv_flush(16796); gs_imcv_flush ------------------------------------------------ 2 row groups rebuilt successfully, 1 skipped. (1 row) gs_imcv_taskbuffer_view() 描述:gs_imcv_taskbuffer_view显示HTAP业务中重建任务队列使用情况,入参为空。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 表5 gs_imcv_taskbuffer_view参数说明 参数类型 参数名 类型 描述 输出参数 buffer_is_empty boolean 任务队列是否为空。默认值为t。 输出参数 buffer_is_full boolean 任务队列是否存满。默认值为f。 输出参数 buffer_used_space integer 任务已使用空间。默认值为0。 输出参数 buffer_free_space integer 任务剩余空间。默认值为999。 示例: 当enable_htap=off时: gaussdb=# select * from gs_imcv_taskbuffer_view(); ERROR: Query failed due to ENABLE_HTAP is not enabled. 当enable_htap=on时: gaussdb=# select * from gs_imcv_taskbuffer_view(); buffer_is_empty | buffer_is_full | buffer_used_space | buffer_free_space -----------------+----------------+-------------------+------------------- t | f | 0 | 999 (1 row) gs_imcu_meta(rel_name) 描述:gs_imcu_meta用于显示指定rel_name的IMCV表下的IMCU元信息。 返回值类型:record 表6 gs_imcu_meta参数列表 参数类型 参数 类型 描述 输入参数 relname text IMCV表名。 输出参数 reloid oid 表id。 输出参数 relname text 表名。 输出参数 imcu_xmin xid 预留,暂不使用。 输出参数 imcu_id integer IMCU id。 输出参数 row_count integer IMCU行数。 输出参数 imcu_size integer IMCU大小,单位字节。 输出参数 imcu_mode integer IMCU加载列数据特征: 普通。 全部为空。 相同值。 无最大最小值。 有空行。 输出参数 imcu_pointer bigint 预留,暂不使用。 输出参数 magic integer IMCU校验magic。 输出参数 attnum smallint IMCU加载列对应的attnum。 示例: gaussdb=# SELECT * FROM gs_imcu_meta('test2'); I reloid | relname | imcu_xmin | imcu_id | row_count | imcu_size | imcu_mode | imcu_pointer | magic | attnum --------+---------+-----------+---------+-----------+-----------+-----------+--------------+-------+-------- 115114 | test2 | 0 | 1 | 9 | 8192 | 1 | 0 | 74802 | 0 115114 | test2 | 0 | 1 | 9 | 8192 | 1 | 0 | 74802 | 1 115114 | test2 | 0 | 1 | 9 | 8192 | 1 | 0 | 74802 | 2 115114 | test2 | 0 | 1 | 9 | 8192 | 1 | 0 | 74802 | 3 115114 | test2 | 0 | 1 | 9 | 8192 | 0 | 0 | 74802 | 4 115114 | test2 | 0 | 1 | 9 | 8192 | 0 | 0 | 74802 | 5 (6 rows) 备注:该示例表示共有1个行组(imcu_id为1),每一行代表一个cu(其中attnum为0的列为ctid列),每个cu行数为9行。 gs_imcv_status() 描述:gs_imcv_status函数用于显示当前所有IMCV表的状态信息。 返回值类型:record 表7 gs_imcv_status参数列表 参数 参数 类型 描述 输出参数 reloid oid 表id。 输出参数 relname name 表名。 输出参数 dbname name 数据库名。 输出参数 username name 用户名。 输出参数 parentoid oid 父表id。 输出参数 imcvstatus char IMCV表状态: 'I': POPULATE_STAT_INIT初始化。 'L': POPULATE_STAT_LOAD_START开始加载。 'M': POPULATE_STAT_LOAD_META_DONE加载元数据。 'F': POPULATE_STAT_LOAD_FINISH加载完成。 'D': POPULATE_STAT_DROP已删除。 'E': POPULATE_STAT_ERROR异常。 输出参数 imcvnattr smallint 加载列数量。 输出参数 imcvkey int2vector 加载的列数组。 输出参数 priority smallint 加载优先级。 输出参数 rowgroup_num integer 行组数。 输出参数 cu_num_in_mem integer 内存中的IMCU数量。 输出参数 cu_mem_size bigint IMCU占用的内存大小,单位字节。 输出参数 cu_num_in_disk integer 暂不支持,值为0。 输出参数 cu_disk_size bigint 暂不支持,值为0。 示例: gaussdb=# SELECT * FROM gs_imcv_status(); reloid | relname | dbname | username | parentoid | imcvstatus | imcvnattr | imcvkey | priority | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size --------+---------+----------+----------+-----------+------------+-----------+-----------+----------+--------------+---------------+-------------+----------------+-------------- 115114 | test2 | postgres | lqy | 0 | F | 5 | 1 2 3 4 5 | 1 | 1 | 6 | 49152 | 0 | 0 (1 row) gs_imcu_slot_status() 描述:gs_imcu_slot_status记录了IMCV表下的IMCU对应的缓存slot信息。 返回值类型:record 表8 gs_imcu_slot_status参数列表 参数类型 参数 类型 描述 输出参数 reloid oid 表id。 输出参数 cu_id integer IMCU id。 输出参数 col_id integer IMCU 所属列id。 输出参数 slot_id integer 缓存区slot id。 输出参数 block_size integer IMCU内存大小,单位字节。 输出参数 flag char 缓存块标志位。 示例(flag为\x01表示缓存slot包含有效数据): gaussdb=# SELECT * FROM gs_imcu_slot_status(); reloid | cu_id | col_id | slot_id | block_size | flag --------+-------+--------+---------+------------+------ 115114 | 1 | 1 | 0 | 8192 | \x01 115114 | 1 | 2 | 1 | 8192 | \x01 115114 | 1 | 3 | 2 | 8192 | \x01 115114 | 1 | 4 | 3 | 8192 | \x01 115114 | 1 | 5 | 4 | 8192 | \x01 115114 | 1 | 0 | 5 | 8192 | \x01 (6 rows) 父主题: 系统管理函数
  • 快照同步函数 快照同步函数是导出当前快照的标识符。 pg_export_snapshot() 描述:保存当前的快照并返回它的标识符。 返回值类型:text 备注:函数pg_export_snapshot保存当前的快照并返回一个文本字符串标识此快照。这个字符串必须传递给想要导入快照的客户端。可用在set transaction snapshot snapshot_id时导入snapshot,但是应用的前提是该事务设置了SERIALIZABLE或REPEATABLE READ隔离级别。而 GaussDB 目前是不支持这两种隔离级别的。该函数的输出不可用做set transaction snapshot的输入。 pg_export_snapshot_and_csn() 描述:保存当前的快照并返回它的标识符。比pg_export_snapshot()多返回一列CSN,表示当前快照的CSN。 返回值类型:text 父主题: 系统管理函数
  • 数据库对象位置函数 pg_relation_filenode(relation regclass) 描述:指定关系的文件节点数。 返回值类型:oid 备注:pg_relation_filenode接受一个表、索引、序列或压缩表的OID或者名称,并且返回当前分配给它的“filenode”数。文件节点是关系使用的文件名称的基本组件。对大多数表来说,结果和pg_class.relfilenode相同,但对确定的系统目录来说,relfilenode为0而且这个函数必须用来获取正确的值。如果传递一个没有存储的关系,比如一个视图,那么这个函数返回NULL。 pg_relation_filepath(relation regclass) 描述:指定关系的文件路径名。只能用于非段页式关系。 返回值类型:text 备注:pg_relation_filepath类似于pg_relation_filenode,但是它返回关系的整个文件路径名(相对于数据库的数据目录PGDATA)。 段页式关系建议使用段页式相关函数或视图,例如: SELECT e.*, f.file_name FROM gs_seg_extents e, gs_seg_datafiles f WHERE e.tablespace_name = f.tablespace_name ADN e.bucketnode = f.bucketnode ADN e.file_id = f.file_id ADN e.forknum = f.forknum; pg_filenode_relation(tablespace oid, filenode oid) 描述:获取对应的tablespace和relfilenode所对应的表名。 返回类型:regclass pg_partition_filenode(partition_oid) 描述:获取到指定分区表的oid锁对应的filenode。 返回类型:oid pg_partition_filepath(partition_oid) 描述:指定分区的文件路径名。只能用于非段页式关系。 返回值类型:text 备注:段页式关系建议使用段页式相关函数或视图,例如: SELECT e.*, f.file_name FROM gs_seg_extents e, gs_seg_datafiles f WHERE e.tablespace_name = f.tablespace_name ADN e.bucketnode = f.bucketnode ADN e.file_id = f.file_id ADN e.forknum = f.forknum;
  • 数据库对象尺寸函数 数据库对象尺寸函数计算数据库对象使用的实际磁盘空间。 pg_column_size(any) 描述:存储一个指定的数值需要的字节数(可能压缩过)。 返回值类型:int 备注:pg_column_size显示用于存储某个独立数据值的空间。 1 2 3 4 5 gaussdb=# SELECT pg_column_size(1); pg_column_size ---------------- 4 (1 row) pg_database_size(oid) 描述:指定OID代表的数据库使用的磁盘空间。 返回值类型:bigint pg_database_size(name) 描述:指定名称的数据库使用的磁盘空间。 返回值类型:bigint 备注:pg_database_size接受一个数据库的OID或者名称,然后返回该对象使用的全部磁盘空间。 示例: 1 2 3 4 5 gaussdb=# SELECT pg_database_size('testdb'); pg_database_size ------------------ 51590112 (1 row) pg_relation_size(oid) 描述:指定OID代表的表或者索引所使用的磁盘空间。 返回值类型:bigint get_db_source_datasize() 描述:估算当前数据库非压缩态的数据总容量。 返回值类型:bigint 备注:调用该函数前需要做analyze。 示例: 1 2 3 4 5 6 7 gaussdb=# analyze; ANALYZE gaussdb=# SELECT get_db_source_datasize(); get_db_source_datasize ------------------------ 35384925667 (1 row) pg_relation_size(text) 描述:指定名称的表或者索引使用的磁盘空间。表名称可以用模式名修饰。 返回值类型:bigint pg_relation_size(relation regclass, fork text) 描述:指定表或索引的指定分叉树('main','fsm'或'vm')使用的磁盘空间。 返回值类型:bigint pg_relation_size(relation regclass) 描述:pg_relation_size(..., 'main')的简写。 返回值类型:bigint 备注:pg_relation_size接受一个表、索引、压缩表的OID或者名称,然后返回它们的字节大小。 pg_partition_size(oid, oid) 描述:指定OID代表的分区使用的磁盘空间。其中,第一个oid为表的OID,第二个oid为分区的OID。 返回值类型:bigint pg_partition_size(text, text) 描述:指定名称的分区使用的磁盘空间。其中,第一个text为表名,第二个text为分区名。 返回值类型:bigint pg_partition_indexes_size(oid, oid) 描述:指定OID代表的分区的索引使用的磁盘空间。其中,第一个oid为表的OID,第二个oid为分区的OID。 返回值类型:bigint pg_partition_indexes_size(text, text) 描述:指定名称的分区的索引使用的磁盘空间。其中,第一个text为表名,第二个text为分区名。 返回值类型:bigint pg_indexes_size(regclass) 描述:附加到指定表的索引使用的总磁盘空间。 返回值类型:bigint pg_size_pretty(bigint) 描述:将以64位整数表示的字节值转换为具有单位的易读格式。 返回值类型:text pg_size_pretty(numeric) 描述:将以数值表示的字节值转换为具有单位的易读格式。 返回值类型:text 备注:pg_size_pretty用于把其他函数的结果格式化成一种易读的格式,可以根据情况使用kB 、MB 、GB 、TB。 pg_table_size(regclass) 描述:指定的表使用的磁盘空间,不计索引(但是包含TOAST,自由空间映射和可见性映射)。 返回值类型:bigint pg_tablespace_size(oid) 描述:指定OID代表的表空间使用的磁盘空间。 返回值类型:bigint pg_tablespace_size(name) 描述:指定名称的表空间使用的磁盘空间。 返回值类型:bigint 备注: pg_tablespace_size接受一个数据库的OID或者名称,然后返回该对象使用的全部磁盘空间。 pg_total_relation_size(oid) 描述:指定OID代表的表使用的磁盘空间,包括索引和压缩数据。 返回值类型:bigint pg_total_relation_size(regclass) 描述:指定的表使用的总磁盘空间,包括所有的索引和TOAST数据。 返回值类型:bigint pg_total_relation_size(text) 描述:指定名称的表所使用的全部磁盘空间,包括索引和压缩数据。表名称可以用模式名修饰。 返回值类型:bigint 备注:pg_total_relation_size接受一个表或者一个压缩表的OID或者名称,然后返回以字节计的数据和所有相关的索引和压缩表的尺寸。 datalength(any) 描述:计算一个指定的数据需要的字节数(不考虑数据的管理空间和数据压缩,数据类型转换等情况)。 返回值类型:int 备注:datalength用于计算某个独立数据值的空间。 示例: gaussdb=# SELECT datalength(1); datalength ------------ 4 (1 row) 目前支持的数据类型及计算方式见下表: 数据类型 存储空间 数值类型 整数类型 TINYINT 1 SMALLINT 2 INTEGER 4 BINARY_INTEGER 4 BIGINT 8 任意精度型 DECIMAL 每4位十进制数占两个字节,小数点前后数字分别计算。 NUMERIC 每4位十进制数占两个字节,小数点前后数字分别计算。 NUMBER 每4位十进制数占两个字节,小数点前后数字分别计算。 序列整型 SMALLSERIAL 2 SERIAL 4 BIGSERIAL 8 LARGESERIAL 每4位十进制数占两个字节,小数点前后数字分别计算。 浮点类型 FLOAT4 4 DOUBLE PRECISION 8 FLOAT8 8 BINARY_DOUBLE 8 FLOAT[(p)] 每4位十进制数占两个字节,小数点前后数字分别计算。 DEC[(p[,s])] 每4位十进制数占两个字节,小数点前后数字分别计算。 INTEGER[(p[,s])] 每4位十进制数占两个字节,小数点前后数字分别计算。 布尔类型 布尔类型 BOOLEAN 1 字符类型 字符类型 CHAR n CHAR(n) n CHARACTER(n) n NCHAR(n) n VARCHAR(n) n CHARACTER 字符实际字节数。 VARYING(n) 字符实际字节数。 VARCHAR2(n) 字符实际字节数。 NVARCHAR(n) 字符实际字节数。 NVARCHAR2(n) 字符实际字节数。 TEXT 字符实际字节数。 CLOB 字符实际字节数。 时间类型 时间类型 DATE 8 TIME 8 TIMEZ 12 TIMESTAMP 8 TIMESTAMPZ 8 SMALLDATETIME 8 INTERVAL DAY TO SECOND 16 INTERVAL 16 RELTIME 4 ABSTIME 4 TINTERVAL 12
  • 服务器信号函数 服务器信号函数向其他服务器线程发送控制信号。仅系统管理员有权执行以下函数。 pg_cancel_backend(pid int) 描述:取消一个后端线程正在执行的语句。 返回值类型:Boolean 备注:pg_cancel_backend向由pid标识的后端线程发送一个查询取消(SIGINT)信号。一个活动的后端线程的PID可以从PG_STAT_ACTIVITY视图的pid字段找到,或者在服务器上用ps列出数据库线程。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 pg_cancel_session(pid bigint, sessionid bigint) 描述:线程池模式下,取消一个活跃状态会话正在执行的语句。 返回值类型:Boolean 备注:pg_cancel_session的入参可以通过pg_stat_activity中的pid字段和sessionid的字段查询,可以取消线程池模式下,活跃状态会话正在执行的语句。当入参pid和sessionid相同,且均为线程id时,功能和pg_cancel_backend相同。 pg_cancel_invalid_query() 描述:取消一个后端的无效查询。 返回值类型:Boolean 备注:只有系统管理员才有权限取消连接到降级的GTM的后端中运行的查询。 pg_reload_conf() 描述:导致所有服务器线程重新装载它们的配置文件。 返回值类型:Boolean 备注:pg_reload_conf给服务器发送一个SIGHUP信号,导致所有服务器线程重新装载配置文件。 pg_rotate_logfile() 描述:滚动服务器的日志文件。 返回值类型:Boolean 备注:pg_rotate_logfile给日志文件管理器发送信号,使之立即切换到一个新的输出文件。这个函数只有在redirect_stderr用于日志输出的时候才有用,否则不会产生日志文件管理器子线程。 pg_terminate_session(pid bigint, sessionid bigint) 描述:线程池模式下,终止一个后台会话。 返回值类型:Boolean 备注:本函数的入参可以通过pg_stat_activity中的pid字段和sessionid的字段查询。具有SYSADMIN权限的用户、会话所连接的数据库的属主、会话的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。若执行该函数后未成功终止目标会话,则会强制关闭该会话和客户端的socket连接。 当入参pid和sessionid相同,且均为线程id时,该函数可终止非线程池的线程、活跃状态的线程池线程。 当入参pid和sessionid不同时,该函数可终止活跃状态的会话,或关闭非活跃状态会话和客户端的socket连接。 pg_terminate_active_session_socket(pid int64, sessionid int64) 描述:关闭一个活跃session和客户端的socket连接。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。 pg_terminate_backend(pid int) 描述:终止一个后台线程。仅系统管理员和线程所有者可执行该函数。 返回值类型:Boolean 备注:如果成功,函数返回true,否则返回false。具有SYSADMIN权限的用户,后端线程所连接的数据库的属主,后端线程的属主或者继承了内置角色gs_role_signal_backend权限的用户有权使用该函数。若执行该函数后未成功终止目标会话,则会强制关闭该会话和客户端的socket连接。 该函数可终止非线程池的线程、活跃状态的线程池线程,但无法终止非活跃状态的线程池线程。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT pid from pg_stat_activity; pid ----------------- 140657876268816 (1 rows) gaussdb=# SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t (1 row) gs_cancel_invalid_gtm_query(cstring) 描述:断开与指定地址的GTM连接的所有会话。函数参数为逗号分隔的字符串,分隔后的每个子串格式为IP[:port](中括号表示可选)。 返回值类型:void 备注:只有系统管理员才有权限执行该函数。该函数仅由CM组件在特定流程中自动调用,不建议用户手动进行调用。 terminate_session_has_temp_file() 描述:中断所有正在打开临时文件的会话。 返回值类型:void 备注:仅系统管理员有权限执行该函数。该函数仅由CM组件在特定流程中自动调用,不建议用户手动进行调用。 父主题: 系统管理函数
  • HTAP系统函数 由于HTAP特性不支持分布式,enable_htap在分布式中不可以设置为on,所以查以下系统函数时会显示为空或者报错:enable_htap未打开。 gs_htap_tmu_data(rel_oid oid, rowgroup_id integer) 描述:查看实时事务单元TMU中的活跃事务数据。当rowgroup_id为0时,返回表中所有活跃事务数据;当rowgroup_id非0时,返回表中指定行组中的活跃事务数据。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 本函数对OLTP业务有一定影响,仅作为运维接口使用,且不建议频繁执行。 表1 gs_htap_tmu_data参数说明 参数类型 参数名 类型 描述 输入参数 rel_oid oid 行存表oid信息。 输入参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 rel_oid oid 行存表oid信息。 输出参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 xid xid 操作该数据的事务id。 输出参数 ctid cstring 该数据在页面上的位置。 输出参数 flag smallint unsigned 二进制标记位,每一数位表示TMU记录的不同操作属性。其中: 第4位为1时,表示该记录是一条更新操作。 第3位为1时,表示该记录是一条删除操作。 第2位为1时,表示该记录是一条插入操作。 示例:查询gs_htap_tmu_data系统函数。 gaussdb=# select * from gs_htap_tmu_data(16796,0); ERROR: Query failed due to ENABLE_HTAP is not enabled. gs_htap_tmu_chunk_meta(rel_oid oid, rowgroup_id integer) 描述:查看实时事务单元TMU元数据信息。当rowgroup_id为0时,返回所有行组中的实时事务单元TMU数据信息;当rowgroup_id非0时,返回表中指定行组中的实时事务单元TMU数据信息。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 表2 gs_htap_tmu_chunk_meta参数说明 参数类型 参数名 类型 描述 输入参数 rel_oid oid 行存表oid信息。 输入参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 rel_oid oid 行存表oid信息。 输出参数 rowgroup_id integer unsigned 行组唯一标识。 输出参数 status smallint unsigned 表示TMU的状态。 1表示TMU没有被清理过。 2表示TMU被清理过。 输出参数 row_count integer unsigned 数据行数。 输出参数 buffer_count integer unsigned 包含的buffer个数。 输出参数 mem_usage bigint 申请内存大小。 输出参数 inprogress cstring 表示插入TMU数据的事务处于活跃状态的占比。 输出参数 completed cstring 表示插入TMU数据的事务处于提交或回滚状态的占比。 示例:查询gs_htap_tmu_chunk_meta系统函数。 gaussdb=# select * from gs_htap_tmu_chunk_meta(16796,0); ERROR: Query failed due to ENABLE_HTAP is not enabled. gs_imcv_bgworker_status() 描述:显示执行IMCV表重建的bgworker的状态信息。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 表3 gs_imcv_bgworker_status参数说明 参数类型 参数名 类型 描述 输出参数 worker_pid bigint 线程号。 输出参数 relation_id oid 正在处理的IMCV表的oid。 输出参数 worker_status cstring 表示idle(准备)、running(进行中)、finished(完成)三种线程工作状态。 输出参数 start_time timestamp with time zone 重建开始的时间戳。 示例:查询gs_imcv_bgworker_status系统函数。 gaussdb=# select * from gs_imcv_bgworker_status(); ERROR: Query failed due to ENABLE_HTAP is not enabled. gs_imcv_flush(reloid oid) 描述:对数据库中指定的IMCV表立即进行一次重建,并显示重建的结果。重建过程将刷新IMCV表,移除旧数据并同步当前表的非活跃数据。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 当IMCV表内的数据足够新鲜时,可能会跳过重建。本函数对OLTP业务有一定影响,仅作为运维接口使用,且不建议频繁执行。 表4 gs_imcv_flush参数说明 参数类型 参数名 类型 描述 输入参数 reloid oid 行存表oid。 输出参数 output text 返回本次重建的结果。显示行组重建成功的数量以及跳过重建的数量。 示例:查询gs_imcv_flush系统函数。 gaussdb=# select * from gs_imcv_flush(16796); ERROR: Manual row group rebuilding failed due to ENABLE_HTAP is not enabled. gs_imcv_taskbuffer_view() 描述:gs_imcv_taskbuffer_view显示HTAP业务中重建任务队列使用情况,入参为空。 返回值类型:record 备注:必须是系统管理员或运维管理员才能执行此函数。 表5 gs_imcv_taskbuffer_view参数说明 参数类型 参数名 类型 描述 输出参数 buffer_is_empty boolean 任务队列是否为空。默认值为t。 输出参数 buffer_is_full boolean 任务队列是否存满。默认值为f。 输出参数 buffer_used_space integer 任务已使用空间。默认值为0。 输出参数 buffer_free_space integer 任务剩余空间。默认值为999。 示例:查询gs_imcv_taskbuffer_view系统函数。 gaussdb=# select * from gs_imcv_taskbuffer_view(); ERROR: Query failed due to ENABLE_HTAP is not enabled. gs_imcu_meta(rel_name) 描述:gs_imcu_meta用于显示指定rel_name的IMCV表下的IMCU元信息。 返回值类型:record 表6 gs_imcu_meta参数列表 参数类型 参数 类型 描述 输入参数 relname text IMCV表名。 输出参数 reloid oid 表id。 输出参数 relname text 表名。 输出参数 imcu_xmin xid 预留,暂不使用。 输出参数 imcu_id integer IMCU id。 输出参数 row_count integer IMCU行数。 输出参数 imcu_size integer IMCU大小,单位字节。 输出参数 imcu_mode integer IMCU加载列数据特征: 普通。 全部为空。 相同值。 无最大最小值。 有空行。 输出参数 imcu_pointer bigint 预留,暂不使用。 输出参数 magic integer IMCU校验magic。 输出参数 attnum smallint IMCU加载列对应的attnum。 示例: gaussdb=# SELECT * FROM gs_imcu_meta('test2'); reloid | relname | imcu_xmin | imcu_id | row_count | imcu_size | imcu_mode | imcu_pointer | magic | attnum --------+---------+-----------+---------+-----------+-----------+-----------+--------------+-------+-------- (0 rows) gs_imcv_status() 描述:gs_imcv_status函数用于显示当前所有IMCV表的状态信息。 返回值类型:record 表7 gs_imcv_status参数列表 参数 参数 类型 描述 输出参数 reloid oid 表id。 输出参数 relname name 表名。 输出参数 dbname name 数据库名。 输出参数 username name 用户名。 输出参数 parentoid oid 父表id。 输出参数 imcvstatus char IMCV表状态: 'I': POPULATE_STAT_INIT初始化。 'L': POPULATE_STAT_LOAD_START开始加载。 'M': POPULATE_STAT_LOAD_META_DONE加载元数据。 'F': POPULATE_STAT_LOAD_FINISH加载完成。 'D': POPULATE_STAT_DROP已删除。 'E': POPULATE_STAT_ERROR异常。 输出参数 imcvnattr smallint 加载列数量。 输出参数 imcvkey int2vector 加载的列数组。 输出参数 priority smallint 加载优先级。 输出参数 rowgroup_num integer 行组数。 输出参数 cu_num_in_mem integer 内存中的IMCU数量。 输出参数 cu_mem_size bigint IMCU占用的内存大小,单位字节。 输出参数 cu_num_in_disk integer 暂不支持,值为0。 输出参数 cu_disk_size bigint 暂不支持,值为0。 示例: gaussdb=# SELECT * FROM gs_imcv_status(); reloid | relname | dbname | username | parentoid | imcvstatus | imcvnattr | imcvkey | priority | rowgroup_num | cu_num_in_mem | cu_mem_size | cu_num_in_disk | cu_disk_size --------+---------+----------+----------+-----------+------------+-----------+-----------+----------+--------------+---------------+-------------+----------------+-------------- (0 row) gs_imcu_slot_status() 描述:gs_imcu_slot_status记录了IMCV表下的IMCU对应的缓存slot信息。 返回值类型:record 表8 gs_imcu_slot_status参数列表 参数类型 参数 类型 描述 输出参数 reloid oid 表id。 输出参数 cu_id integer IMCU id。 输出参数 col_id integer IMCU 所属列id。 输出参数 slot_id integer 缓存区slot id。 输出参数 block_size integer IMCU内存大小,单位字节。 输出参数 flag char 缓存块标志位。 示例: gaussdb=# SELECT * FROM gs_imcu_slot_status(); reloid | cu_id | col_id | slot_id | block_size | flag --------+-------+--------+---------+------------+------ (0 rows) 父主题: 系统管理函数
  • 配置设置函数 配置设置函数可以用于查询以及修改运行时配置参数的函数。 current_setting(setting_name) 描述:当前的设置值。 返回值类型:text 备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如: 1 2 3 4 5 6 gaussdb=# SELECT current_setting('datestyle'); current_setting ----------------- ISO, MDY (1 row) set_working_grand_version_num_manually(tmp_version) 描述:通过切换授权版本号来更新和升级数据库的新特性。 返回值类型:void shell_in(type) 描述: 为shell类型输入路由(那些尚未填充的类型)。 返回值类型:void shell_out(type) 描述:为shell 类型输出路由(那些尚未填充的类型)。 返回值类型:void set_config(setting_name, new_value, is_local) 描述:设置参数并返回新值。 返回值类型:text 备注:set_config将参数setting_name设置为new_value。如果is_local为true,则new_value将只应用于当前事务。如果希望new_value应用于当前会话,可以使用false,和SQL语句SET是等效的。例如: 1 2 3 4 5 6 gaussdb=# SELECT set_config('log_statement_stats', 'off', false); set_config ------------ off (1 row) 父主题: 系统管理函数
  • 通用文件访问函数 通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有数据库目录和log_directory目录里面的文件可以访问。使用相对路径访问数据库目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库初始化用户才能使用这些函数。 pg_ls_dir(dirname text) 描述:列出目录中的文件。 返回值类型:setof text 备注:pg_ls_dir返回指定目录里面的除了特殊项“.”和“..”之外所有名称。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 gaussdb=# SELECT pg_ls_dir('./'); pg_ls_dir ---------------------- .gaussdb.conf.swp gaussdb.conf pg_tblspc PG_VERSION gs_ident.conf core server.crt pg_serial pg_twophase gaussdb.conf.lock pg_stat_tmp pg_notify pg_subtrans pg_ctl.lock pg_xlog pg_clog base pg_snapshots postmaster.opts postmaster.pid server.key.rand server.key.cipher pg_multixact pg_errorinfo server.key gs_hba.conf pg_replslot .gs_hba.conf.swp cacert.pem gs_hba.conf.lock global gaussdb.state (32 rows) pg_read_file(filename text, offset bigint, length bigint) 描述:返回一个文本文件的内容。 返回值类型:text 备注:pg_read_file返回一个文本文件的一部分,从offset开始,最多返回length字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,则它是相对于文件结尾回退的长度。如果省略了offset和length,则返回整个文件。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/hadoop/data1/dbnode+ 1500022474 + 8000 + /var/run/ FusionInsight + localhost + 2 (1 row) pg_read_binary_file(filename text [, offset bigint, length bigint,missing_ok boolean]) 描述:返回一个二进制文件的内容。多租场景下,non-PDB调用该函数时正常运行,PDB调用该函数时报错。 返回值类型:bytea 备注:pg_read_binary_file的功能与pg_read_file类似,除了结果的返回值为bytea类型不一致,相应地不会执行编码检查。与convert_from函数结合,这个函数可以用来读取用指定编码的一个文件。 1 gaussdb=# SELECT convert_from(pg_read_binary_file('filename'), 'UTF8'); pg_read_binary_file_blocks(filename text, blocknum bigint, blockcount bigint) 描述:返回一个压缩文件的指定页面区域的二进制内容。多租场景下,non-PDB调用该函数时正常运行,PDB调用该函数时报错。 返回值类型:bytea 备注:pg_read_binary_file_blocks仅用于读取压缩文件的二进制内容。 pg_stat_file(filename text) 描述:返回一个文本文件的状态信息。 返回值类型:record 备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的Boolean值。典型的用法: 1 gaussdb=# SELECT * FROM pg_stat_file('filename'); 1 gaussdb=# SELECT (pg_stat_file('filename')).modification; 示例: 1 2 3 4 5 6 7 8 9 10 11 12 gaussdb=# SELECT convert_from(pg_read_binary_file('postmaster.pid'), 'UTF8'); convert_from -------------------------------------- 4881 + /srv/BigData/gaussdb/data1/dbnode+ 1496308688 + 25108 + /opt/user/Bigdata/gaussdb/gaussdb_tmp + * + 25108001 43352069 + (1 row) 1 2 3 4 5 6 7 8 9 gaussdb=# SELECT * FROM pg_stat_file('postmaster.pid'); size | access | modification | change | creation | isdir ------+------------------------+------------------------+------------------------ +----------+------- 117 | 2017-06-05 11:06:34+08 | 2017-06-01 17:18:08+08 | 2017-06-01 17:18:08+08 | | f (1 row) 1 2 3 4 5 gaussdb=# SELECT (pg_stat_file('postmaster.pid')).modification; modification ------------------------ 2017-06-01 17:18:08+08 (1 row) 父主题: 系统管理函数
  • 配置设置函数 配置设置函数是可以用于查询以及修改运行时配置参数的函数。 current_setting(setting_name) 描述:当前的设置值。 返回值类型:text 备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如: 1 2 3 4 5 6 gaussdb=# SELECT current_setting('datestyle'); current_setting ----------------- ISO, MDY (1 row) set_working_grand_version_num_manually(tmp_version) 描述:通过切换授权版本号来更新和升级高斯数据库的新特性。 返回值类型:void shell_in(type) 描述:为shell类型输入路由(那些尚未填充的类型)。 返回值类型:void shell_out(type) 描述:为shell类型输出路由(那些尚未填充的类型)。 返回值类型:void set_config(setting_name, new_value, is_local) 描述:设置参数并返回新值。 返回值类型:text 备注:set_config将参数setting_name设置为new_value,如果is_local为true,则new_value将只应用于当前事务。如果希望new_value应用于当前会话,可以使用false,和SQL语句SET是等效的。 示例: 1 2 3 4 5 6 gaussdb=# SELECT set_config('log_statement_stats', 'off', false); set_config ------------ off (1 row) 父主题: 系统管理函数
  • 通用文件访问函数 通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有数据库集群目录和log_directory目录里面的文件可以访问。使用相对路径访问集群目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库初始化用户才能使用这些函数。 pg_ls_dir(dirname text) 描述:列出目录中的文件。 返回值类型:setof text 备注:pg_ls_dir返回指定目录里面的除了特殊项“.”和“..”之外所有名称。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 gaussdb=# SELECT pg_ls_dir('./'); pg_ls_dir ---------------------- .gaussdb.conf.swp gaussdb.conf pg_tblspc PG_VERSION gs_ident.conf core server.crt pg_serial pg_twophase gaussdb.conf.lock pg_stat_tmp pg_notify pg_subtrans pg_ctl.lock pg_xlog pg_clog base pg_snapshots postmaster.opts postmaster.pid server.key.rand server.key.cipher pg_multixact pg_errorinfo server.key gs_hba.conf pg_replslot .gs_hba.conf.swp cacert.pem gs_hba.conf.lock global gaussdb.state (32 rows) pg_read_file(filename text, offset bigint, length bigint) 描述:返回一个文本文件的内容。 返回值类型:text 备注:pg_read_file返回一个文本文件的一部分,从offset开始,最多返回length字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,则它是相对于文件结尾回退的长度。如果省略了offset和length,则返回整个文件。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/testdir/data1/coordinator+ 1500022474 + 8000 + /var/run/FusionInsight + localhost + 2 (1 row) pg_read_binary_file(filename text [, offset bigint, length bigint,missing_ok boolean]) 描述:返回一个二进制文件的内容。 返回值类型:bytea 备注:pg_read_binary_file的功能与pg_read_file类似,除了结果的返回值为bytea类型不一致,相应地不会执行编码检查。与convert_from函数结合,这个函数可以用来读取用指定编码的一个文件。 1 gaussdb=# SELECT convert_from(pg_read_binary_file('filename'), 'UTF8'); pg_stat_file(filename text) 描述:返回一个文本文件的状态信息。 返回值类型:record 备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的Boolean值。典型的用法: 1 gaussdb=# SELECT * FROM pg_stat_file('filename'); 1 gaussdb=# SELECT (pg_stat_file('filename')).modification; 示例: 1 2 3 4 5 6 7 8 9 10 11 12 gaussdb=# SELECT convert_from(pg_read_binary_file('postmaster.pid'), 'UTF8'); convert_from -------------------------------------- 4881 + /srv/BigData/gaussdb/data1/coordinator+ 1496308688 + 25108 + /opt/huawei/Bigdata/gaussdb/gaussdb_tmp + * + 25108001 43352069 + (1 row) 1 2 3 4 5 6 7 8 9 gaussdb=# SELECT * FROM pg_stat_file('postmaster.pid'); size | access | modification | change | creation | isdir ------+------------------------+------------------------+------------------------ +----------+------- 117 | 2017-06-05 11:06:34+08 | 2017-06-01 17:18:08+08 | 2017-06-01 17:18:08+08 | | f (1 row) 1 2 3 4 5 gaussdb=# SELECT (pg_stat_file('postmaster.pid')).modification; modification ------------------------ 2017-06-01 17:18:08+08 (1 row) 父主题: 系统管理函数
  • 恢复控制函数 恢复信息函数提供了当前备机状态的信息。这些函数可能在恢复期间或正常运行中执行。 pg_is_in_recovery() 描述:如果恢复仍然在进行中则返回true。 返回值类型:Boolean pg_last_xlog_receive_location() 描述:获取最后接收事务日志的位置并通过流复制将其同步到磁盘。当流复制正在进行时,事务日志将持续递增。如果恢复已完成,则最后一次获取的WAL记录会被静态保持并在恢复过程中同步到磁盘。如果流复制不可用,或还没有开始,这个函数返回NULL。 返回值类型:text pg_last_xlog_replay_location() 描述:获取最后一个事务日志在恢复时重放的位置。如果恢复仍在进行,事务日志将持续递增。如果已经完成恢复,则将保持在恢复期间最后接收WAL记录的值。如果未进行恢复但服务器正常启动时,则这个函数返回NULL。 返回值类型:text pg_last_xact_replay_timestamp() 描述:获取最后一个事务在恢复时重放的时间戳。这是为在主节点上生成事务提交或终止WAL记录的时间。如果在恢复时没有事务重放,则这个函数返回NULL。如果恢复仍在进行,则事务日志将持续递增。如果恢复已经完成,则将保持在恢复期间最后接收WAL记录的值。如果服务器无需恢复就已正常启动,则这个函数返回NULL。 返回值类型:timestamp with time zone 恢复控制函数控制恢复的线程。这些函数可能只在恢复时被执行。 pg_is_xlog_replay_paused() 描述:如果恢复暂停则返回true。 返回值类型:Boolean pg_xlog_replay_pause() 描述:立即暂停恢复。在多租场景下,在PDB内部禁用。 返回值类型:void pg_xlog_replay_resume() 描述:如果恢复处于暂停状态,则重新启动。在多租场景下,在PDB内部禁用。 返回值类型:void gs_get_active_archiving_standby() 描述:查询同一分片内归档备机的信息。返回备机名,备机归档位置和已归档日志个数。 返回值类型:text,,int gs_pitr_get_warning_for_xlog_force_recycle() 描述:查询开启归档后是否因归档槽不推进日志大量堆积导致日志被回收。 返回值类型:bool gs_pitr_clean_history_global_barriers(stop_barrier_timestamp cstring) 描述:清理指定时间之前所有barrier记录。返回时间最远的barrier记录。入参为cstring类型,linux时间戳。需要管理员角色或运维管理员角色执行。 返回值类型:text gs_pitr_archive_slot_force_advance(stop_barrier_timestamp cstring) 描述:强制推进归档槽,并清理不需要的barrier记录。返回新的归档槽位置。入参为cstring类型,linux时间戳。需要管理员角色或运维管理员角色执行。 返回值类型:text gs_recent_barrier_buffer_info(start_time text, end_time text) 描述:根据用户输入的时间范围,进行相应的barrier信息查询,获取time_stamp、CSN、LSN和standard_time。 返回值类型:records 说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。输入参数start_time和end_time采用“年-月-日 时间”格式,其中时间采用clock格式。查询最大时间跨度为1天,超出跨度约束,根据查询起始时间将结束时间自动转换为极限边界进行查询。例如: gaussdb=# SELECT * FROM gs_recent_barrier_buffer_info('2024-01-15 23:27:50', '2024-01-15 23:28:00'); timestamp | lsn | csn | standard_time ------------+-------------------+----------+--------------------- 1705332470 | 00000000/15FFBBA0 | 41020421 | 2024-01-15 23:27:50 1705332471 | 00000000/15FFBDF0 | 41020422 | 2024-01-15 23:27:51 1705332472 | 00000000/15FFC058 | 41020423 | 2024-01-15 23:27:52 1705332472 | 00000000/15FFC0F8 | 41020424 | 2024-01-15 23:27:52 1705332473 | 00000000/15FFC348 | 41020425 | 2024-01-15 23:27:53 1705332474 | 00000000/15FFC598 | 41020426 | 2024-01-15 23:27:54 1705332475 | 00000000/15FFC638 | 41020427 | 2024-01-15 23:27:55 1705332476 | 00000000/15FFC888 | 41020428 | 2024-01-15 23:27:56 1705332476 | 00000000/15FFDC80 | 41020433 | 2024-01-15 23:27:56 1705332477 | 00000000/15FFDD20 | 41020434 | 2024-01-15 23:27:57 1705332478 | 00000000/15FFDF70 | 41020435 | 2024-01-15 23:27:58 1705332479 | 00000000/15FFE1D8 | 41020436 | 2024-01-15 23:27:59 1705332480 | 00000000/15FFE278 | 41020437 | 2024-01-15 23:28:00 1705332480 | 00000000/15FFE4C8 | 41020438 | 2024-01-15 23:28:00 (14 rows) gs_show_obs_media_files(slot_name cstring, src cstring, offset int32, limit int32) 描述:根据用户输入的归档槽(slot_name)和OBS目录地址(src),查询OBS文件列表。 返回值类型:records 说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。Offset为查询结果偏移,limit为输出最大行数,查询src下所有文件。例如: gaussdb=# SELECT gs_show_obs_archive_files('ssh','dn1/pg_xlog',0, 5); gs_show_obs_archive_files --------------------------------------------------------------------------------------------- (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_00_01_00000004_00000002_00000000) (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_00_01_00000103_00000003_00000000) (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_01_01_00000004_00000002_00000000) (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_01_01_00000103_00000003_00000000) (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_02_01_00000004_00000002_00000000) (5 rows) gs_upload_obs_media_file(slot_name cstring, src cstring, dest cstring, is_forced bool) 描述:根据用户输入的归档槽(slot_name)、上传文件原地址(src)、OBS地址(dest)和是否强制上传(is_forced),上传OBS文件。 返回值类型:void 说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。原文件目录仅允许为$GAUSSLOG目录。例如: gaussdb=# SELECT * FROM gs_upload_obs_media_file('ssh', '/data/gauss/log/stwang/test/000000010000000000000007_02_01_00000004_00000002_00000000', 'dn1/pg_xlog/000000010000000000000019_02_01_00000000_00000000_00000003', true); gs_upload_obs_media_file ---------------------------- (1 row) gs_download_obs_media_file(slot_name cstring, src cstring, dest cstring) 描述:根据用户输入的归档槽(slot_name)、下载原地址(src)和本地目标地址(dest),下载OBS文件。 返回值类型:void 说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。下载目录仅允许为$GAUSSLOG目录。例如: gaussdb=# SELECT * FROM gs_download_obs_media_file('ssh','dn1/pg_xlog/000000010000000000000019_02_01_00000000_00000000_00000003','/data/gauss/log/stwang/test'); gs_download_obs_media_file ------------------------------ (1 row) 当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。 如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。