华为云用户手册

  • gs_password_expiration() 描述:显示当前账户距离密码过期的时间。密码过期后用户无法登录数据库。与创建用户的DDL语句PASSWORD EXPIRATION period相关,函数返回值大于等于-1,如果创建用户时未指定PASSWORD EXPIRATION period,该函数的缺省值为-1,表示没有过期限制。 返回值类型:interval 示例: 12345 SELECT gs_password_expiration(); gs_password_expiration ------------------------- 29 days 23:59:49.731482(1 row)
  • login_audit_messages_pid(flag boolean) 描述:查看登录用户的登录信息。与login_audit_messages的区别在于结果基于当前backendid向前查找。所以不会因为同一用户的后续登录,而影响本次登录的查询结果。也就是查询不到该用户后续登录的信息。 返回值类型:元组 示例: 查看上一次登录认证通过的日期、时间和IP等信息: 12345 SELECT * FROM login_audit_messages_pid(true); username | database | logintime | type | result | client_conninfo | backendid | session_id------------+----------+------------------------+---------------+--------+--------------------+----------------------------------------- dbadmin | postgres | 2017-06-02 15:28:34+08 | login_success | ok | gsql@[local] | 140311900702464 | 1663745305.140192538154752.coordinator1(1 row) 查看上一次登录认证失败的日期、时间和IP等信息: 1234 SELECT * FROM login_audit_messages_pid(false) ORDER BY logintime desc limit 1; username | database | logintime | type | result | client_conninfo | backendid | session_id------------+----------+------------------------+--------------+--------+-------------------------+------------(0 rows) 查看自从最后一次认证通过以来失败的尝试次数、日期和时间: 1234 SELECT * FROM login_audit_messages_pid(false); username | database | logintime | type | result | client_conninfo | backendid | session_id------------+----------+------------------------+--------------+--------+-------------------------+------------(0 rows)
  • 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 SELECT convert_from(pg_read_binary_file('filename'), 'UTF8');
  • pg_stat_file(filename text) 描述:返回一个文本文件的状态信息。 返回值类型:record 备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的boolean值。典型的用法: 1 SELECT * FROM pg_stat_file('filename'); 1 SELECT (pg_stat_file('filename')).modification; 示例: 123456789 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) 12345 SELECT (pg_stat_file('postmaster.pid')).modification; modification ------------------------ 2017-06-01 17:18:08+08(1 row)
  • pg_ls_dir(dirname text) 描述:列出目录中的文件。 返回值类型:setof text 备注:pg_ls_dir返回指定目录里面的除了特殊项“.”和“..”之外所有名字。 示例: 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313233343536 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 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 91011 SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/hadoop/data1/coordinator+ 1500022474 + 8000 + /var/run/dws + localhost + 2(1 row)
  • pg_cancel_backend(pid int) 描述:取消一个后端的当前查询。 返回值类型:boolean 备注:pg_cancel_backend向由pid标识的后端进程发送一个查询取消(SIGINT)信号。一个活动的后端进程的PID可以从pg_stat_activity视图的pid字段找到,或者在服务器上用ps列出数据库进程。 示例: 1 2 3 4 5 6 7 8 91011 SELECT pid FROM pg_stat_activity WHERE stmt_type ='RESET'; pid----------------- 281471222065200(1 row)SELECT pg_cancel_backend(281471222065200); pg_cancel_backend------------------- t(1 row)
  • pg_terminate_backend(pid int) 描述:终止一个后台线程。 返回值类型:boolean 备注:如果成功,函数返回true,否则返回false。 示例: 1 2 3 4 5 6 7 8 910111213141516171819 SELECT pid FROM pg_stat_activity; pid ----------------- 140657876268816 140433774061312 140433587902208 140433656592128 140433723717376 140433637189376 140433552770816 140433481983744 140433349310208(9 rows)SELECT pg_terminate_backend(140657876268816); pg_terminate_backend ---------------------- t(1 row)
  • pgxc_cancel_query(queryId int) 描述:取消当前集群下正在执行的查询。该函数8.1.2及以上版本支持。 返回值类型:boolean 备注:如果所有节点的查询均已取消,函数返回true,否则返回false。 示例: 1 2 3 4 5 6 7 8 9101112 SELECT query_id FROM pgxc_stat_activity WHERE stmt_type ='RESET'; query_id---------- 0 0(2 rows)SELECT pgxc_cancel_query(0); pgxc_cancel_query------------------- f(1 row)
  • pg_terminate_query(queryId int) 描述:终止一个后端的当前查询。该函数8.1.2及以上版本支持。 返回值类型:boolean 示例: 1 2 3 4 5 6 7 8 9101112 SELECT query_id FROM pgxc_stat_activity WHERE stmt_type ='RESET'; query_id---------- 0 0(2 rows)SELECT pg_terminate_query(0); pg_terminate_query-------------------- f(1 row)
  • pgxc_terminate_query(queryId int) 描述:终止当前集群下正在执行的查询。该函数8.1.2及以上版本支持。 返回值类型:boolean 示例: 1 2 3 4 5 6 7 8 91011 SELECT query_id FROM pgxc_stat_activity; query_id ----------------- 72339069014638631(1 rows)SELECT pgxc_terminate_query(72339069014638631); pgxc_terminate_query ---------------------- t(1 row)
  • pg_wlm_jump_queue(pid int) 描述:调整任务到CN队列的最前端。 返回值类型:boolean 备注:如果成功,函数返回true,否则返回false。 示例: 1 2 3 4 5 6 7 8 91011 SELECT pid FROM pg_stat_activity WHERE stmt_type ='RESET'; pid----------------- 281471222065200(1 row)SELECT pg_wlm_jump_queue(281471222065200); pg_wlm_jump_queue------------------- t(1 row)
  • pg_cancel_query(queryId int) 描述:取消一个后端的当前查询。该函数8.1.2及以上版本支持。 返回值类型:boolean 备注:pg_cancel_query向由query_id标识的后端进程发送一个查询取消(SIGINT)信号。一个活动的后端进程的query_id可以从pg_stat_activity视图的query_id字段找到。 示例: 1 2 3 4 5 6 7 8 9101112 SELECT query_id FROM pgxc_stat_activity WHERE stmt_type ='RESET'; query_id---------- 0 0(2 rows)SELECT pg_cancel_query(0); pg_cancel_query----------------- f(1 row)
  • kill_snapshot(scope cstring) 描述:中止后台快照线程。该函数向后台快照线程发送中止信号并等待线程结束。 输入参数scope:表示操作范围。该参数取值范围为local和global。 local表示中止当前CN上的快照线程。 global表示不仅会中止当前CN上的快照线程,还会向集群中所有其他CN发送中止快照线程的请求,即中止集群中所有CN上的快照线程。 如果输入其他值,则报错“Scope is invalid, use "local" or "global".”。 输入参数可为空,表示默认取值为local。 返回值类型:无 该函数只有数据库管理员SYSADMIN才有权执行,非管理员执行会提示无权限。 该函数只能在CN上执行,在DN上执行会提示:“kill_snapshot can only be executed on coordinator.”; 执行该函数会向后台快照线程发送中止信号并等待其结束。如果100s内快照线程仍未中止则会报错:“Kill snapshot thread failed”;
  • pg_export_snapshot() 描述:保存当前的快照并返回它的标识符。 返回值类型:text 备注:函数pg_export_snapshot保存当前的快照并返回一个文本字符串标识此快照。这个字符串必须传递给想要导入快照的客户端。可用在set transaction snapshot snapshot_id时导入snapshot,但是应用的前提是该事务设置了REPEATABLE READ隔离级别。该函数的输出不可用做set transaction snapshot的输入。 示例: 12345 SELECT pg_export_snapshot(); pg_export_snapshot-------------------- 00000000000A7128-1(1 row)
  • create_wdr_snapshot() 描述:创建性能数据快照。 返回值类型:text 该函数只有数据库管理员SYSADMIN才可以执行,非管理员执行会提示无权限。 该函数只能在CN上执行,在DN上执行会返回:“WDR snapshot can only be created on coordinator.”。 执行该函数前需确认enable_wdr_snapshot参数处于开启状态。如果enable_wdr_snapshot为off,执行该函数会返回:“WDR snapshot request can't be executed, because GUC parameter 'enable_wdr_snapshot' is off.”。 如果执行该函数时,快照线程由于节点重启等原因尚未启动,会提示错误:“WDR snapshot request can not be accepted, please retry later.”。 如果执行该函数失败,会提示:“Cannot respond to WDR snapshot request.”。 如果执行成功,会返回:“WDR snapshot request has been submitted.”。该提示表明创建快照请求已发送至后台快照线程,但不代表创建快照成功。
  • read_global_var(global_setting_name) 描述:用于读取全局变量当前的设置值。 返回值类型:text 备注:read_global_var用于以查询形式获取global_setting_name的当前值。和SQL语句SHOW是等效的。 示例: 123456 SET my.var = 1000;SELECT read_global_var('my.var'); read_global_var----------------- 1000(1 row)
  • set_config(setting_name, new_value, is_local) 描述:设置参数并返回新值。 返回值类型:text 备注:set_config将参数setting_name设置为new_value,如果is_local为true,则新值将只应用于当前事务。如果希望新值应用于当前会话,可以使用false,和SQL语句SET是等效的。比如: 123456 SELECT set_config('log_statement_stats', 'off', false); set_config------------ off(1 row) 如果GUC参数behavior_compat_options设置配置项为DISABLE_SET_GLOBAL_VAR_ON_DATANODE,则不可以通过该函数直接在DN上设置全局变量。
  • current_setting(setting_name) 描述:当前的设置值。 返回值类型:text 备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如: 123456 SELECT current_setting('datestyle'); current_setting----------------- ISO, MDY(1 row)
  • substring_index(string, delim, count) 描述:按照区分大小写匹配查找delimiter分隔符,返回string字符串中第count次出现delim分隔符之前的子串。若count为负数,则从末尾向前查找delim分隔符。若参数含有NULL值,返回NULL。该函数仅8.2.0及以上集群版本支持。 返回值类型:text 示例:按照区分大小写匹配查找delimiter分隔符".wWw.",返回string字符串"www.wWw.cloud.wWw.com"中第2次出现delimiter分隔符之前的子串"www.wWw.cloud"。 12345 SELECT SUBSTRING_INDEX('www.wWw.cloud.wWw.com', '.wWw.', 2) AS RESULT; result--------------- www.wWw.cloud(1 row)
  • btrim(string bytea,bytes bytea) 描述:从string的开头和结尾删除只包含bytes中字节的最长的字符串。 返回值类型:bytea 示例: 12345 SELECT btrim(E'\\000trim\\000'::bytea, E'\\000'::bytea) AS RESULT; result ------------ \x7472696d(1 row)
  • overlay(string placing string from int [for int]) 描述:替换子串。 返回值类型:bytea 示例: 12345 SELECT overlay(E'Th\\000omas'::bytea placing E'\\002\\003'::bytea from 2 for 3) AS RESULT; result ---------------- \x5402036d6173(1 row)
  • substring(string [from int] [for int]) 描述:截取子串。 返回值类型:bytea 示例: 12345 SELECT substring(E'Th\\000omas'::bytea from 2 for 3) AS RESULT; result ---------- \x68006f(1 row) 截取时间,获取小时数: 12345 SELECT substring('2022-07-18 24:38:15',12,2)AS RESULT; result----------- 24(1 row)
  • nextval(regclass) 递增序列并返回新值。 为了避免从同一个序列获取值的并发事务被阻塞, nextval操作不会回滚;也就是说,一旦获取了一个值,它就会被认为已被使用,并且不会再次返回。 即使该操作处于事务中,当事务随后中断,或者调用查询最终没有使用该值,也会出现这种情况。这种情况将在指定值的顺序中留下未使用的“空洞”。 因此, GaussDB (DWS)序列对象不能用于获取“无间隙”序列。 如果nextval被下推到DN上时,各个DN会自动连接GTM,请求next values值,例如(INSERT INTO t1 SELECT xxx,t1某一列需要调用nextval函数),由于GTM上有最大连接数为8192的限制,而这类下推语句会导致消耗过多的GTM连接数,因此对于这类语句的并发数目限制为7000(其它语句需要占用部分连接)/集群DN数目。 返回类型:bigint nextval函数有两种调用方式(其中第二种调用方式兼容Oracle的语法,目前不支持Sequence命名中有特殊字符"."的情况),如下: 示例1: 12345 SELECT nextval('seqDemo'); nextval--------- 2(1 row) 示例2: 12345 SELECT seqDemo.nextval; nextval--------- 2(1 row)
  • currval(regclass) 返回当前会话里最近一次nextval返回的指定的sequence的数值。如果当前会话还没有调用过指定的sequence的nextval,那么调用currval将会报错。需要注意的是,这个函数在默认情况下是不支持的,需要通过设置enable_beta_features为true之后,才能使用这个函数。同时在设置enable_beta_features为true之后,nextval()函数将不支持下推。 返回类型:bigint currval函数有两种调用方式(其中第二种调用方式兼容Oracle的语法,目前不支持Sequence命名中有特殊字符"."的情况),如下: 示例1: 12345 SELECT currval('seq1'); currval--------- 2(1 row) 示例2: 12345 SELECT seq1.currval seq1; currval--------- 2(1 row)
  • lastval() 描述:返回当前会话里最近一次nextval返回的数值。这个函数等效于currval,只是它不用序列名为参数,它抓取当前会话里面最近一次nextval使用的序列。如果当前会话还没有调用过nextval,那么调用lastval将会报错。 需要注意的是,这个函数在默认情况下是不支持的,需要通过设置enable_beta_features或者lastval_supported为true之后,才能使用这个函数。同时这种情况下,nextval()函数将不支持下推。 返回类型:bigint 示例: 12345 SELECT lastval(); lastval--------- 2(1 row)
  • setval(regclass, bigint, boolean) 描述:设置序列的当前数值以及is_called标志。 返回类型:bigint 示例: 12345 SELECT setval('seqDemo',1,true); setval-------- 1(1 row) Setval后当前会话及GTM上会立刻生效,但如果其他会话有缓存的序列值,只能等到缓存值用尽才能感知Setval的作用。所以为了避免序列值冲突,setval要谨慎使用。 因为序列是非事务的,setval造成的改变不会由于事务的回滚而撤销。
  • UUID函数应用示例 UUID全局唯一的特点,可以作为数据表生成主键,也可以作为数据表的分布列,uuid_generate_v1()作为数据表分布列的默认值时,通过Hash分布可以将数据均匀分布到各个DN上,防止数据倾斜。 UUID的显著优点就是全局唯一,不需要中心节点,单个节点独立生成。但是也存在缺点,UUID较INT占用更多的存储空间,索引效率低,生成的ID随机,没有递增的特性,所以辨识困难。因此,在应用中,要根据实际情况选择UUID还是Sequence作为数据表主键。 示例如下: INT类型作为分布列。 创建示例哈希表mytable01,int类型作为分布列,插入数据后,查询数据存在数据倾斜。 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829 CREATE TABLE mytable01(a INT, b INT) DISTRIBUTE BY hash(a);CREATE TABLEINSERT INTO mytable01 VALUES(1, 10);INSERT 0 1INSERT INTO mytable01 VALUES(1, 10);INSERT 0 1INSERT INTO mytable01 VALUES(1, 10);INSERT 0 1INSERT INTO mytable01 VALUES(1, 10);INSERT 0 1INSERT INTO mytable01 VALUES(1, 10);INSERT 0 1SELECT * FROM mytable01; a | b---+---- 1 | 10 1 | 10 1 | 10 1 | 10 1 | 10(5 rows)SELECT table_skewness('mytable01'); table_skewness------------------------------------- ("dn_6003_6004 ",5,100.000%) ("dn_6001_6002 ",0,0.000%) ("dn_6005_6006 ",0,0.000%)(3 rows) UUID类型作为分布列。 创建示例哈希表mytable02,UUID类型作为分布列,插入数据后,查询数据分布正常。 1 2 3 4 5 6 7 8 910111213141516171819202122232425262728293031 CREATE TABLE mytable02 (id UUID default uuid_generate_v1(), a INT, b INT) DISTRIBUTE BY hash(id);CREATE TABLEINSERT INTO mytable02(a, b) VALUES(1, 10);INSERT 0 1INSERT INTO mytable02(a, b) VALUES(1, 10);INSERT 0 1INSERT INTO mytable02(a, b) VALUES(1, 10);INSERT 0 1INSERT INTO mytable02(a, b) VALUES(1, 10);INSERT 0 1INSERT INTO mytable02(a, b) VALUES(1, 10);INSERT 0 1SELECT * FROM mytable02; id | a | b--------------------------------------+---+---- 63e45c14-cc74-0e00-e9aa-0a2c3fa0fffe | 1 | 10 63e45c1f-4d18-0700-e9ab-0a2c3fa0fffe | 1 | 10 63e45c26-f859-0b00-e9ad-0a2c3fa0fffe | 1 | 10 63e45c23-9e5d-0300-e9ac-0a2c3fa0fffe | 1 | 10 63e45c2a-5825-0600-e9ae-0a2c3fa0fffe | 1 | 10(5 rows)SELECT table_skewness('mytable02'); table_skewness------------------------------------ ("dn_6001_6002 ",3,60.000%) ("dn_6003_6004 ",2,40.000%) ("dn_6005_6006 ",0,0.000%)(3 rows)
  • uuid() 描述:生成一个UUID类型的序列号。此函数为MySQL兼容性函数,仅8.2.0及以上集群版本支持。 返回类型:UUID 示例: 12345 SELECT uuid(); uuid---------------------------------- 6327dc96-f0e7-0100-f2f2-6c9ff700fffe(1 row) uuid函数内部生成原理同uuid_generate_v1()函数,即根据时间信息、集群节点编号和生成该序列的线程号生成UUID,该UUID在单个集群内是全局唯一的,但在多个集群间的时间信息、集群节点编号、线程号和时钟序列仍然存在同时相等的可能性,因此多个集群间生成的UUID仍然存在极低概率的重复风险。
  • uuid_generate_v1() 描述:生成一个UUID类型的序列号。 返回类型:UUID 示例: 12345 SELECT uuid_generate_v1(); uuid_generate_v1 -------------------------------------- c71ceaca-a175-11e9-a920-797ff7000001(1 row) uuid_generate_v1函数根据时间信息、集群节点编号和生成该序列的线程号生成UUID,该UUID在单个集群内是全局唯一的,但在多个集群间的时间信息、集群节点编号、线程号和时钟序列仍然存在同时相等的可能性,因此多个集群间生成的UUID仍然存在极低概率的重复风险。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全