系统管理函数
配置设置函数
配置设置函数是可以用于查询以及修改运行时配置参数的函数。
current_setting(setting_name)
描述:当前的设置值。
返回值类型:text
备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如:
vastbase=# SELECT current_setting('datestyle'); current_setting ----------------- ISO, MDY (1 row)
set_config(setting_name, new_value, is_local)
描述:设置参数并返回新值。
返回值类型:text
备注:set_config将参数setting_name设置为new_value,如果is_local为true,则新值将只应用于当前事务。如果希望新值应用于当前会话,可以使用false,和SQL语句SET是等效的。比如:
vastbase=# SELECT set_config('log_statement_stats', 'off', false); set_config ------------ off (1 row)
通用文件访问函数
通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有Vastbase目录和log_directory目录里面的文件可以访问。使用相对路径访问Vastbase目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库初始化用户才能使用这些函数。
pg_ls_dir(dirname text)
描述:列出目录中的文件。
返回值类型:setof text
备注:pg_ls_dir返回指定目录里面的除了特殊项”.“和”..“之外所有名称。
示例:
vastbase=# SELECT pg_ls_dir('./'); pg_ls_dir ---------------------- .postgresql.conf.swp postgresql.conf pg_tblspc PG_VERSION pg_ident.conf core server.crt pg_serial pg_twophase postgresql.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 pg_hba.conf pg_replslot .pg_hba.conf.swp cacert.pem pg_hba.conf.lock global vastbase.state (32 rows)
pg_read_file(filename text, offset bigint, length bigint)
描述:返回一个文本文件的内容。
返回值类型:text
备注:pg_read_file返回一个文本文件的一部分,从offset开始,最多返回length字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,则它是相对于文件结尾回退的长度。如果省略了offset和length,则返回整个文件。
示例:
vastbase=# SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/hadoop/data1/dbnode+ 1500022474 + 5432 + /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函数结合,这个函数可以用来读取用指定编码的一个文件。
vastbase=# SELECT convert_from(pg_read_binary_file('filename'), 'UTF8');
pg_stat_file(filename text)
描述:返回一个文本文件的状态信息。
返回值类型:record
备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的Boolean值。典型的用法:
vastbase=# SELECT * FROM pg_stat_file('filename'); vastbase=# SELECT (pg_stat_file('filename')).modification;
示例:
vastbase=# SELECT convert_from(pg_read_binary_file('postmaster.pid'), 'UTF8'); convert_from -------------------------------------- 4881 + /srv/BigData/vastbase/data1/dbnode+ 1496308688 + 25108 + /opt/huawei/Bigdata/vastbase/vastbase_tmp + * + 25108001 43352069 + (1 row) vastbase=# 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) vastbase=# SELECT (pg_stat_file('postmaster.pid')).modification; modification ------------------------ 2017-06-01 17:18:08+08 (1 row)
服务器信号函数
服务器信号函数向其他服务器进程发送控制信号。只有系统管理员才能使用这些函数。
pg_cancel_backend(pid int)
描述:取消一个后端的当前查询。
返回值类型:Boolean
备注:pg_cancel_backend向由pid标识的后端进程发送一个查询取消(SIGINT)信号。一个活动的后端进程的PID可以从pg_stat_activity视图的pid字段找到,或者在服务器上用ps列出数据库进程。
pg_reload_conf()
描述:导致所有服务器进程重新装载它们的配置文件。
返回值类型:Boolean
备注:pg_reload_conf给服务器发送一个SIGHUP信号,导致所有服务器进程重新装载配置文件。
pg_rotate_logfile()
描述:滚动服务器的日志文件。
返回值类型:Boolean
备注:pg_rotate_logfile给日志文件管理器发送信号,告诉它立即切换到一个新的输出文件。这个函数只有在redirect_stderr用于日志输出的时候才有用,否则根本不存在日志文件管理器子进程。
pg_terminate_backend(pid int)
描述:终止一个后台线程。
返回值类型:Boolean
备注:如果成功,函数返回true,否则返回false。
示例:
vastbase=# SELECT pid from pg_stat_activity; pid ----------------- 140657876268816 (1 rows) vastbase=# SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t (1 row)
备份恢复控制函数
备份控制函数
备份控制函数可帮助进行在线备份。
pg_create_restore_point(name text)
描述:为执行恢复创建一个命名点。(需要管理员角色)
返回值类型:text
备注:pg_create_restore_point创建了一个可以用作恢复目的、有命名的事务日志记录,并返回相应的事务日志位置。在恢复过程中,recovery_target_name可以通过这个名称定位对应的日志恢复点,并从此处开始执行恢复操作。避免使用相同的名称创建多个恢复点,因为恢复操作将在第一个匹配(恢复目标)的名称上停止。
pg_current_xlog_location()
描述:获取当前事务日志的写入位置。
返回值类型:text
备注:pg_current_xlog_location使用与前面那些函数相同的格式显示当前事务日志的写入位置。如果是只读操作,不需要系统管理员权限。
pg_current_xlog_insert_location()
描述:获取当前事务日志的插入位置。
返回值类型:text
备注:pg_current_xlog_insert_location显示当前事务日志的插入位置。插入点是事务日志在某个瞬间的”逻辑终点”,而实际的写入位置则是从服务器内部缓冲区写出时的终点。写入位置是可以从服务器外部检测到的终点,如果要归档部分完成事务日志文件,则该操作即可实现。插入点主要用于服务器调试目的。如果是只读操作,不需要系统管理员权限。
pg_start_backup(label text [, fast boolean ])
描述:开始执行在线备份。(需要管理员角色或复制的角色)
返回值类型:text
备注:pg_start_backup接受一个用户定义的备份标签(通常这是备份转储文件存放地点的名称)。这个函数向Vastbase的数据目录写入一个备份标签文件,然后以文本方式返回备份的事务日志起始位置。
vastbase=# SELECT pg_start_backup('label_goes_here'); pg_start_backup ----------------- 0/3000020 (1 row)
pg_stop_backup()
描述:完成执行在线备份。(需要管理员角色或复制的角色)
返回值类型:text
备注:pg_stop_backup删除pg_start_backup创建的标签文件,并且在事务日志归档区里创建一个备份历史文件。这个历史文件包含给予pg_start_backup的标签、备份的事务日志起始与终止位置、备份的起始和终止时间。返回值是备份的事务日志终止位置。计算出中止位置后,当前事务日志的插入点将自动前进到下一个事务日志文件,这样,结束的事务日志文件可以被立即归档从而完成备份。
pg_switch_xlog()
描述:切换到一个新的事务日志文件。(需要管理员角色)
返回值类型:text
备注:pg_switch_xlog移动到下一个事务日志文件,以允许将当前日志文件归档(假定使用连续归档)。返回值是刚完成的事务日志文件的事务日志结束位置+1。如果从最后一次事务日志切换以来没有活动的事务日志,则pg_switch_xlog什么事也不做,直接返回当前事务日志文件的开始位置。
pg_xlogfile_name(location text)
描述:将事务日志的位置字符串转换为文件名。
返回值类型:text
备注:pg_xlogfile_name仅抽取事务日志文件名称。如果给定的事务日志位置恰好位于事务日志文件的交界上,这两个函数都返回前一个事务日志文件的名称。这对于管理事务日志归档来说是非常有利的,因为前一个文件是当前最后一个需要归档的文件。
pg_xlogfile_name_offset(location text)
描述:将事务日志的位置字符串转换为文件名并返回在文件中的字节偏移量。
返回值类型:text,integer
备注:可以使用pg_xlogfile_name_offset从前述函数的返回结果中抽取相应的事务日志文件名称和字节偏移量。例如:
vastbase=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); NOTICE: pg_stop_backup cleanup done, waiting for required WAL segments to be archived NOTICE: pg_stop_backup complete, all required WAL segments have been archived file_name | file_offset --------------------------+------------- 000000010000000000000003 | 272 (1 row)
pg_xlog_location_diff(location text, location text)
描述:计算两个事务日志位置之间在字节上的区别。
返回值类型:numeric
pg_cbm_tracked_location()
描述:用于查询cbm解析到的lsn位置。
返回值类型:text
pg_cbm_get_merged_file(startLSNArg text, endLSNArg text)
描述:用于将指定lsn范围之内的cbm文件合并成一个cbm文件,并返回合并完的cbm文件名。
返回值类型:text
pg_cbm_get_changed_block(startLSNArg text, endLSNArg text)
描述:用于将指定lsn范围之内的cbm文件合并成一个表,并返回表的各行记录。
返回值类型:records
备注:pg_cbm_get_changed_block返回的表字段包含:合并起始的lsn,合并截止的lsn,表空间oid,库oid,表的relfilenode,表的fork number,表是否被删除,表是否被创建,表是否被截断,表被截断后的页面数,有多少页被修改以及被修改的页号的列表。
pg_cbm_recycle_file(targetLSNArg text)
描述:删除不再使用的cbm文件,并返回删除后的第一条lsn。
返回值类型:text
pg_cbm_force_track(targetLSNArg text,timeOut int)
描述:强制执行一次cbm追踪到指定的xlog位置,并返回实际追踪结束点的xlog位置。
返回值类型:text
pg_enable_delay_ddl_recycle(is_full_backup boolean, backup_key text)
描述:开启延迟DDL功能,并返回开启点的xlog位置。
返回值类型:text
pg_disable_delay_ddl_recycle(barrierLSNArg text, isForce bool,is_full_backup boolean, backup_key text)
描述:关闭延迟DDL功能,并返回本次延迟DDL生效的xlog范围。
返回值类型:records
pg_enable_delay_xlog_recycle()
描述:开启延迟xlog回收功能,数据库主节点修复使用。
返回值类型:void
pg_disable_delay_xlog_recycle()
描述:关闭延迟xlog回收功能,数据库主节点修复使用。
返回值类型:void
恢复控制函数
恢复信息函数提供了当前备机状态的信息。这些函数可能在恢复期间或正常运行中执行。
pg_is_in_recovery()
描述:如果恢复仍然在进行中则返回true。
返回值类型:bool
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。
返回值类型:bool
pg_xlog_replay_pause()
描述:立即暂停恢复。
返回值类型:void
pg_xlog_replay_resume()
描述:如果恢复处于暂停状态,则重新启动。
返回值类型:void
当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。
如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。
快照同步函数
快照同步函数是导出当前快照的标识符。
pg_export_snapshot()
描述:保存当前的快照并返回它的标识符。
返回值类型:text
备注:函数pg_export_snapshot保存当前的快照并返回一个文本字符串标识此快照。这个字符串必须传递给想要导入快照的客户端。可用在set transaction snapshot snapshot_id时导入snapshot,但是应用的前提是该事务设置了SERIALIZABLE或REPEATABLE READ隔离级别。而Vastbase目前是不支持这两种隔离级别的。该函数的输出不可用做set transaction snapshot的输入。
pg_export_snapshot_and_csn()
描述:保存当前的快照并返回它的标识符。比pg_export_snapshot()多返回一列CSN,表示当前快照的CSN。
返回值类型:text
数据库对象函数
数据库对象尺寸函数
数据库对象尺寸函数计算数据库对象使用的实际磁盘空间。
pg_column_size(any)
描述:存储一个指定的数值需要的字节数(可能压缩过)。
返回值类型:int
备注:pg_column_size显示用于存储某个独立数据值的空间。
vastbase=# 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或者名称,然后返回该对象使用的全部磁盘空间。
示例:
vastbase=# SELECT pg_database_size(' vastbase '); pg_database_size ------------------ 51590112 (1 row)
pg_relation_size(oid)
描述:指定OID代表的表或者索引所使用的磁盘空间。
返回值类型:bigint
get_db_source_datasize()
描述:估算当前数据库非压缩态的数据总容量
返回值类型:bigint
备注:(1)调用该函数前需要做analyze;(2)通过估算列存的压缩率计算非压缩态的数据总容量。
示例:
vastbase=# analyze; ANALYZE vastbase=# 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用于计算某个独立数据值的空间。
示例:
vastbase=# 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 | ||
浮点类型 | 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) | 字符实际字节数 | ||
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_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,但是它返回关系的整个文件路径名(相对于Vastbase的数据目录PGDATA)。
咨询锁函数
咨询锁函数用于管理咨询锁(Advisory Lock)。
pg_advisory_lock(key bigint)
描述:获取会话级别的排它咨询锁。
返回值类型:void
备注:pg_advisory_lock锁定应用程序定义的资源,该资源可以用一个64位或两个不重叠的32位键值标识。如果已经有另外的会话锁定了该资源,则该函数将阻塞到该资源可用为止。这个锁是排它的。多个锁定请求将会被压入栈中,因此,如果同一个资源被锁定了三次,它必须被解锁三次以将资源释放给其他会话使用。
pg_advisory_lock(key1 int, key2 int)
描述:获取会话级别的排它咨询锁。
返回值类型:void
备注:只允许sysadmin对键值对(65535,65535)加会话级别的排它咨询锁,普通用户无权限。
pg_advisory_lock_shared(key bigint)
描述:获取会话级别的共享咨询锁。
返回值类型:void
pg_advisory_lock_shared(key1 int, key2 int)
描述:获取会话级别的共享咨询锁。
返回值类型:void
备注:pg_advisory_lock_shared类似于pg_advisory_lock,不同之处仅在于共享锁会话可以和其他请求共享锁的会话共享资源,但排它锁除外。
pg_advisory_unlock(key bigint)
描述:释放会话级别的排它咨询锁。
返回值类型:Boolean
pg_advisory_unlock(key1 int, key2 int)
描述:释放会话级别的排它咨询锁。
返回值类型:Boolean
备注:pg_advisory_unlock释放先前取得的排它咨询锁。如果释放成功则返回true。如果实际上并未持有指定的锁,将返回false并在服务器中产生一条SQL警告信息。
pg_advisory_unlock_shared(key bigint)
描述:释放会话级别的共享咨询锁。
返回值类型:Boolean
pg_advisory_unlock_shared(key1 int, key2 int)
描述:释放会话级别的共享咨询锁。
返回值类型:Boolean
备注:pg_advisory_unlock_shared类似于pg_advisory_unlock,不同之处在于该函数释放的是共享咨询锁。
pg_advisory_unlock_all()
描述:释放当前会话持有的所有咨询锁。
返回值类型:void
备注:pg_advisory_unlock_all将会释放当前会话持有的所有咨询锁,该函数在会话结束的时候被隐含调用,即使客户端异常地断开连接也是一样。
pg_advisory_xact_lock(key bigint)
描述:获取事务级别的排它咨询锁。
返回值类型:void
pg_advisory_xact_lock(key1 int, key2 int)
描述:获取事务级别的排它咨询锁。
返回值类型:void
备注:pg_advisory_xact_lock类似于pg_advisory_lock,不同之处在于锁是自动在当前事务结束时释放,而且不能被显式的释放。只允许sysadmin对键值对(65535,65535)加事务级别的排它咨询锁,普通用户无权限。
pg_advisory_xact_lock_shared(key bigint)
描述:获取事务级别的共享咨询锁。
返回值类型:void
pg_advisory_xact_lock_shared(key1 int, key2 int)
描述:获取事务级别的共享咨询锁。
返回值类型:void
备注:pg_advisory_xact_lock_shared类似于pg_advisory_lock_shared,不同之处在于锁是在当前事务结束时自动释放,而且不能被显式的释放。
pg_try_advisory_lock(key bigint)
描述:尝试获取会话级排它咨询锁。
返回值类型:Boolean
备注:pg_try_advisory_lock类似于pg_advisory_lock,不同之处在于该函数不会阻塞以等待资源的释放。它要么立即获得锁并返回true,要么返回false表示目前不能锁定。
pg_try_advisory_lock(key1 int, key2 int)
描述:尝试获取会话级排它咨询锁。
返回值类型:Boolean
备注:只允许sysadmin对键值对(65535,65535)加会话级别的排它咨询锁,普通用户无权限。
pg_try_advisory_lock_shared(key bigint)
描述:尝试获取会话级共享咨询锁。
返回值类型:Boolean
pg_try_advisory_lock_shared(key1 int, key2 int)
描述:尝试获取会话级共享咨询锁。
返回值类型:Boolean
备注:pg_try_advisory_lock_shared类似于pg_try_advisory_lock,不同之处在于该函数尝试获得共享锁而不是排它锁。
pg_try_advisory_xact_lock(key bigint)
描述:尝试获取事务级别的排它咨询锁。
返回值类型:Boolean
pg_try_advisory_xact_lock(key1 int, key2 int)
描述:尝试获取事务级别的排它咨询锁。
返回值类型:Boolean
备注:pg_try_advisory_xact_lock类似于pg_try_advisory_lock,不同之处在于如果得到锁,在当前事务的结束时自动释放,而且不能被显式的释放。只允许sysadmin对键值对(65535,65535)加事务级别的排它咨询锁,普通用户无权限。
pg_try_advisory_xact_lock_shared(key bigint)
描述:尝试获取事务级别的共享咨询锁。
返回值类型:Boolean
pg_try_advisory_xact_lock_shared(key1 int, key2 int)
描述:尝试获取事务级别的共享咨询锁。
返回值类型:Boolean
备注:pg_try_advisory_xact_lock_shared类似于pg_try_advisory_lock_shared,不同之处在于如果得到锁,在当前事务结束时自动释放,而且不能被显式的释放。
lock_cluster_ddl()
描述:尝试对Vastbase内所有存活的数据库主节点获取会话级别的排他咨询锁。
返回值类型:Boolean
备注:只允许sysadmin调用,普通用户无权限。
unlock_cluster_ddl()
描述:尝试对数据库主节点会话级别的排他咨询锁。
返回值类型:Boolean
逻辑复制函数
pg_create_logical_replication_slot('slot_name', 'plugin_name')
描述:创建逻辑复制槽。
参数说明:
slot_name
流复制槽名称。
取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。
plugin_name
插件名称。
取值范围:字符串,当前只支持”vastbase_decoding”。
返回值类型:name, text
备注:第一个返回值表示slot_name,第二个返回值表示该逻辑复制槽解码的起始LSN位置。
pg_drop_replication_slot('slot_name')
描述:删除流复制槽。
参数说明:
slot_name
流复制槽名称。
取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。
返回值类型:void
pg_logical_slot_peek_changes('slot_name', 'LSN', upto_nchanges, 'options_name', 'options_value')
描述:解码并不推进流复制槽(下次解码可以再次获取本次解出的数据)。
参数说明:
slot_name
流复制槽名称。
取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。
LSN
日志的LSN,表示只解码小于等于此LSN的日志。
取值范围:字符串(LSN,格式为xlogid/xrecoff),如'1/2AAFC60'。为NULL时表示不对解码截止的日志位置做限制。
upto_nchanges
解码条数(包含begin和commit)。假设一共有三条事务,分别包含3、5、7条记录,如果upto_nchanges为4,那么会解码出前两个事务共8条记录。解码完第二条事务时发现解码条数记录大于等于upto_nchanges,会停止解码。
取值范围:非负整数。
LSN和upto_nchanges中任一参数达到限制,解码都会结束。
options:此项为可选参数。
- include-xids
解码出的data列是否包含xid信息。
取值范围:0或1,默认值为1。
-0:设为0时,解码出的data列不包含xid信息。
-1:设为1时,解码出的data列包含xid信息。
- skip-empty-xacts
解码时是否忽略空事务信息。
取值范围:0或1,默认值为0。
-0:设为0时,解码时不忽略空事务信息。
-1:设为1时,解码时会忽略空事务信息。
- include-timestamp
解码信息是否包含commit时间戳。
取值范围:0或1,默认值为0。
-0:设为0时,解码信息不包含commit时间戳。
-1:设为1时,解码信息包含commit时间戳。
返回值类型:text, uint, text
备注:函数返回解码结果,每一条解码结果包含三列,对应上述返回值类型,分别表示LSN位置、xid和解码内容。
pg_logical_slot_get_changes('slot_name', 'LSN', upto_nchanges,'options_name', 'options_value')
描述:解码并推进流复制槽。
参数说明: 与pg_logical_slot_peek_changes一致,详细内容请参见pg_logical_slot_peek_ch…。
pg_replication_slot_advance ('slot_name', 'LSN')
描述:直接推进流复制槽到指定LSN,不输出解码结果。
参数说明:
slot_name
流复制槽名称。
取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的字符。
LSN
推进到的日志LSN位置,下次解码时只会输出提交位置比该LSN大的事务结果。如果输入的LSN比当前流复制槽记录的推进位置还要小,则直接返回;如果输入的LSN比当前最新物理日志LSN还要大,则推进到当前最新物理日志LSN。
取值范围:字符串(LSN,格式为xlogid/xrecoff)。
返回值类型:name, text
备注:返回值分别对应slot_name和实际推进至的LSN。
其它函数
pgxc_pool_check()
描述:检查连接池中缓存的连接数据是否与pgxc_node一致。
返回值类型:Boolean
pgxc_pool_reload()
描述:更新连接池中缓存的连接信息。
返回值类型:Boolean
pgxc_lock_for_backup()
描述:为备份操作给Vastbase加锁,这些备份是为在新增节点上做恢复。
返回值类型:Boolean
plan_seed()
描述:获取前一次查询语句的seed值(内部使用)。
返回值类型:int
pg_stat_get_env()
描述:提供获取当前节点的环境变量信息。
返回值类型:record
pg_stat_get_thread()
描述:提供当前节点下所有线程的状态信息。
返回值类型:record
pg_stat_get_sql_count()
描述:提供当前节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果。
返回值类型:record
copy_error_log_create()
描述:创建COPY FROM容错机制所需要的错误表(public.pgxc_copy_error_log)。
返回值类型:Boolean
此函数会尝试创建public.pgxc_copy_error_log表,表的详细信息请参见表12-32。
在relname列上创建B-tree索引,并REVOKE ALL on public.pgxc_copy_error_log FROM public对错误表进行权限控制(与COPY语句权限一致)。
由于尝试创建的public.pgxc_copy_error_log定义是一张行存表,因此Vastbase上必须支持行存表的创建才能够正常运行此函数,并使用后续的COPY容错功能。需要特别注意的是,enable_hadoop_env这个GUC参数开启后会禁止在Vastbase内创建行存表(Vastbase默认为off)。
此函数自身权限为Sysadmin及以上(与错误表、COPY权限一致)。
若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在,则此函数会报错回滚。
表12-32 错误表public.pgxc_copy_error_log信息
列名称 | 类型 | 描述 |
---|---|---|
relname | varchar | 表名称。以模式名.表名形式显示。 |
begintime | timestamp with time zone | 出现数据格式错误的时间。 |
filename | character varying | 出现数据格式错误的数据源文件名。 |
rownum | bigint | 在数据源文件中,出现数据格式错误的行号。 |
rawrecord | text | 在数据源文件中,出现数据格式错误的原始记录。 |
detail | text | 详细错误信息。 |
pg_stat_get_data_senders()
描述:提供当前活跃的数据复制发送线程的详细信息。
返回值类型:record
generate_wdr_report(begin_snap_id Oid, end_snap_id Oid, int report_type, int report_scope, int node_name)
描述:基于两个snapshot生成系统诊断报告。
返回值类型:record
表12-33 generate_wdr_report 参数说明
参数 | 说明 | 取值范围 |
begin_snap_id | 生成某段时间内性能诊断报告的开始snapshotid。 | - |
end_snap_id | 结束snapshot的id,默认end_snap_id大于begin_snap_id。 | - |
report_type | 指定生成report的类型。 |
- summary
- detail - all,即同时包含summary 和 detail。 |
report_scope | 指定生成report的范围。 | node:Vastbase中的节点。 |
node_name | 在“report_scope”指定为“node”时,需要把该参数指定为对应节点的名称。 | - |
create_wdr_snapshot(stat text, dbid Oid)
描述:手工生成系统诊断快照。
返回值类型:record
表12-34 create_wdr_snapshot参数说明
参数 | 描述 |
stat | 表示每次snapshot时节点的名称,默认为收集所有节点的状态信息。 |
dbid | 表示数据库的ID,收集指定数据库的状态信息。 |
wdr_xdb_query(db_name_str text, query text)
描述:提供本地跨数据库执行query的能力。例如: 在连接到vastbase库时,访问test库下的表。
select col1 from wdr_xdb_query('dbname=test','select col1 from t1') as dd(col1 int);
返回值类型:record
pg_wlm_jump_queue(pid int)
描述:调整任务到数据库主节点队列的最前端。
返回值类型:boolean
-true:成功。
-false:失败。
gs_wlm_switch_cgroup(pid int, cgroup text)
描述:调整作业的优先级到新控制组。
返回值类型:boolean
-true:成功。
-false:失败。
pv_session_memctx_detail(threadid tid, MemoryContextName text)
描述:将线程tid的MemoryContextName内存上下文信息记录到”/tmp/dumpmem”目录下的”threadid_timestamp.log”文件中。其中threadid可通过表PV_SESSION_MEMORY_DETAIL中的sessid后获得。当MemoryContextName为” 时,会记录所有的内存上下文信息。
返回值类型:boolean
-true:成功。
-false:失败。
pg_shared_memctx_detail(MemoryContextName text)
描述:将MemoryContextName内存上下文信息记录到”/tmp/dumpmem”目录下的”threadid_timestamp.log”文件中。
返回值类型:boolean
-true:成功。
-false:失败。
pgxc_lock_for_backup是在使用vb_dump或vb_dumpall工具备份Vastbase前,用来给Vastbase加锁的。当给Vastbase加锁后,不允许有改变系统结构的操作。该函数不影响DML语句。