华为云用户手册

  • 语法格式 修改角色的权限。 1 ALTER ROLE role_name [ [ WITH ] option [ ... ] ]; 其中权限项子句option为。 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 {CREATEDB | NOCREATEDB} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {AUDITADMIN | NOAUDITADMIN} | {SYSADMIN | NOSYSADMIN} | {USEFT | NOUSEFT} | { LOG IN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {INDEPENDENT | NOINDEPENDENT} | {VCADMIN | NOVCADMIN} | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY 'password' [ REPLACE 'old_password' ] | [ ENCRYPTED | UNENCRYPTED ] PASSWORD { 'password' | DISABLE } | [ ENCRYPTED | UNENCRYPTED ] IDENTIFIED BY { 'password' [ REPLACE 'old_password' ] | DISABLE } | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | ACCOUNT { LOCK | UNLOCK } | PGUSER | AUTHINFO 'authinfo' | PASSWORD EXPIRATION period 修改角色的名字。 1 2 ALTER ROLE role_name RENAME TO new_name; 设置角色的配置参数。 1 2 ALTER ROLE role_name [ IN DATABASE database_name ] SET configuration_parameter {{ TO | = } { value | DEFAULT } | FROM CURRENT}; 重置角色的配置参数。 1 2 ALTER ROLE role_name [ IN DATABASE database_name ] RESET {configuration_parameter|ALL};
  • 应用示例 查询当前用户下指定表的约束信息。t1替换为实际的表名。 1 2 3 4 5 SELECT * FROM USER_CONSTRAINTS WHERE table_name='t1'; constraint_name | constraint_type | table_name | index_owner | index_name -----------------+-----------------+------------+-------------+--------------- c_custkey_key | p | t1 | u1 | c_custkey_key (1 row)
  • ts_rewrite(query tsquery, target tsquery, substitute tsquery) 描述:替换目标tsquery类型的单词。 返回类型:tsquery 示例: 1 2 3 4 5 SELECT ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'foo|bar'::tsquery); ts_rewrite ------------------------- 'b' & ( 'foo' | 'bar' ) (1 row)
  • ts_rewrite(query tsquery, select text) 描述:使用SELECT命令的结果替代目标中tsquery类型的单词。 返回类型:tsquery 示例: 1 2 3 4 5 SELECT ts_rewrite('world'::tsquery, 'select ''world''::tsquery, ''hello''::tsquery'); ts_rewrite ------------ 'hello' (1 row)
  • to_tsquery([ config regconfig , ] query text) 描述:标准化单词,并转换为tsquery类型。 返回类型:tsquery 示例: 1 2 3 4 5 SELECT to_tsquery('english', 'The & Fat & Rats'); to_tsquery --------------- 'fat' & 'rat' (1 row)
  • setweight(tsvector, "char") 描述:给tsvector类型的每个元素分配权值。 返回类型:tsvector 示例: 1 2 3 4 5 SELECT setweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A'); setweight ------------------------------- 'cat':3A 'fat':2A,4A 'rat':5A (1 row)
  • ts_rank([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) 描述:文档查询排名。 返回类型:float4 示例: 1 2 3 4 5 SELECT ts_rank('hello world'::tsvector, 'world'::tsquery); ts_rank ---------- .0607927 (1 row)
  • to_tsvector([ config regconfig , ] document text) 描述:去除文件信息,并转换为tsvector类型。 返回类型:tsvector 示例: 1 2 3 4 5 SELECT to_tsvector('english', 'The Fat Rats'); to_tsvector ----------------- 'fat':2 'rat':3 (1 row)
  • ts_rank_cd([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) 描述:排序文件查询使用覆盖密度。 返回类型:float4 示例: 1 2 3 4 5 SELECT ts_rank_cd('hello world'::tsvector, 'world'::tsquery); ts_rank_cd ------------ 0 (1 row)
  • plainto_tsquery([ config regconfig , ] query text) 描述:产生tsquery类型的词汇,并忽略标点。 返回类型:tsquery 示例: 1 2 3 4 5 SELECT plainto_tsquery('english', 'The Fat Rats'); plainto_tsquery ----------------- 'fat' & 'rat' (1 row)
  • 参数说明 IF EXISTS 如果指定的模式不存在,发出一个notice而不是抛出一个错误。 schema_name 模式的名字。 取值范围:已存在模式名。 CASCADE | RESTRICT CASCADE:自动删除包含在模式中的对象。 RESTRICT:如果模式包含任何对象,则删除失败(缺省行为)。 不要随意删除pg_temp或pg_toast_temp开头的模式,这些模式是系统内部使用的,如果删除,可能导致无法预知的结果。 无法删除当前模式。如果要删除当前模式,须切换到其他模式下。
  • 前提条件 GUC参数enable_resource_track为on (默认为on)。 GUC参数resource_track_level为query、perf或operator(默认为query)。 监控作业的类型为: 优化器估算的执行代价大于或等于resource_track_cost取值的作业。 Cgroups功能正常加载,可通过gs_cgroup -P查看控制组信息。 GUC参数enable_track_record_subsql控制是否记录存储过程、匿名块内部语句。 在上述条件中,enable_resource_track为系统级参数,用于设置是否开启资源监控功能。resource_track_level为session级参数,可以对某个session的资源监控级别进行灵活设置。这两个参数的设置方法如下表: 表2 设置资源监控信息统计级别 enable_resource_track resource_track_level query级别信息 算子级别信息 on(default) none 不统计 不统计 query(default) 统计 不统计 perf 统计 不统计 operator 统计 统计 off none/query/operator 不统计 不统计
  • 操作步骤 通过视图gs_session_cpu_statistics查询实时CPU信息。 1 SELECT * FROM gs_session_cpu_statistics; 通过视图gs_session_memory_statistics查询实时memory信息。 1 SELECT * FROM gs_session_memory_statistics; 通过视图gs_wlm_session_statistics查询当前CN的实时资源。 1 SELECT * FROM gs_wlm_session_statistics; 通过视图pgxc_wlm_session_statistics查询所有CN的实时资源。 1 SELECT * FROM pgxc_wlm_session_statistics; 通过视图gs_wlm_operator_statistics查询当前CN作业算子执行实时资源信息。 1 SELECT * FROM gs_wlm_operator_statistics; 通过视图pgxc_wlm_operator_statistics查询所有CN作业算子执行实时资源信息。 1 SELECT * FROM pgxc_wlm_operator_statistics; 通过视图pg_session_wlmstat查询当前用户执行作业正在运行时的负载管理信息。 1 SELECT * FROM pg_session_wlmstat; 通过视图pgxc_wlm_workload_records(动态负载功能开启,即enable_dynamic_workload为on时该视图有效)查询当前用户在每个CN上作业执行时的状态信息。 1 SELECT * FROM pgxc_wlm_workload_records;
  • 语法格式 开启匿名块 1 2 3 4 5 [DECLARE [declare_statements]] BEGIN execution_statements END; / 开启事务 1 2 3 4 5 6 7 BEGIN [ WORK | TRANSACTION ] [ { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ];
  • 示例 建立一个名为cursor1的游标: 1 CURSOR cursor1 FOR SELECT * FROM tpcds.customer_address ORDER BY 1; 建立一个名为cursor2的游标: 1 CURSOR cursor2 FOR VALUES(1,2),(0,3) ORDER BY 1; WITH HOLD游标的使用示例。 开启事务: 1 START TRANSACTION; 创建一个with hold游标: 1 DECLARE cursor3 CURSOR WITH HOLD FOR SELECT * FROM tpcds.customer_address ORDER BY 1; 抓取头2行到游标cursor3里: 1 2 3 4 5 6 FETCH FORWARD 2 FROM cursor3; ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type ---------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- 1 | AAAAAAAABAAAAAAA | 18 | Jackson | Parkway | Suite 280 | Fairfield | Maricopa County | AZ | 86192 | United States | -7.00 | condo 2 | AAAAAAAACAAAAAAA | 362 | Washington 6th | RD | Suite 80 | Fairview | Taos County | NM | 85709 | United States | -7.00 | condo (2 rows) 结束事务: 1 END; 抓取下一行到游标cursor3里: 1 2 3 4 5 FETCH FORWARD 1 FROM cursor3; ca_address_sk | ca_address_id | ca_street_number | ca_street_name | ca_street_type | ca_suite_number | ca_city | ca_county | ca_state | ca_zip | ca_country | ca_gmt_offset | ca_location_type ---------------+------------------+------------------+--------------------+-----------------+-----------------+-----------------+-----------------+----------+------------+---------------+---------------+---------------------- 3 | AAAAAAAADAAAAAAA | 585 | Dogwood Washington | Circle | Suite Q | Pleasant Valley | York County | PA | 12477 | United States | -5.00 | single family (1 row) 关闭游标: 1 CLOSE cursor3;
  • 注意事项 游标命令只能在事务块里使用。 通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以生成文本格式。一旦数据是以文本形式返回,客户端应用需要把它们转换成二进制进行操作。使用FETCH语句,游标可以返回文本或二进制格式。 应该小心使用二进制游标。文本格式一般都比对应的二进制格式占用的存储空间大。二进制游标返回内部二进制形态的数据,可能更易于操作。如果想以文本方式显示数据,则以文本方式检索会为用户节约很多客户端的工作。比如,如果查询从某个整数列返回1,在缺省的游标里将获得一个字符串1,但在二进制游标里将得到一个4字节的包含该数值内部形式的数值(大端顺序)。
  • 参数说明 cursor_name 将要创建的游标名。 取值范围:遵循数据库对象命名规范。 BINARY 指明游标以二进制而不是文本格式返回数据。 NO SCROLL 声明游标检索数据行的方式。 NO SCROLL:声明该游标不能用于以倒序的方式检索数据行。 未声明:根据执行计划的不同,自动判断该游标是否可以用于以倒序的方式检索数据行。 WITH HOLD | WITHOUT HOLD 声明当创建游标的事务结束后,游标是否能继续使用。 WITH HOLD:声明该游标在创建它的事务结束后仍可继续使用。 WITHOUT HOLD:声明该游标在创建它的事务之外不能再继续使用,此游标将在事务结束时被自动关闭。 如果不指定WITH HOLD或WITHOUT HOLD,默认行为是WITHOUT HOLD。 query 使用SELECT或VALUES子句指定游标返回的行。 取值范围:SELECT或VALUES子句。
  • 操作步骤 查询所有用户的资源限额和资源实时使用情况。 1 SELECT * FROM PG_TOTAL_USER_RESOURCE_INFO; 得到的结果视图如下: username | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed -----------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+------------+-------------+------------+------------ perfadm | 0 | 0 | 0 | 0 | 0 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 usern | 0 | 17250 | 0 | 48 | 0 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 (2 rows) 其中,IO资源监控字段(read_kbytes、write_kbytes、read_counts、write_counts、read_speed和write_speed)需要在GUC参数enable_user_metric_persistent开启时才有监控数据。 所查各字段说明详见PG_TOTAL_USER_RESOURCE_INFO 。 查询具体某个用户的资源限额和资源实时使用情况。 1 SELECT * FROM GS_WLM_USER_RESOURCE_INFO('username'); 查询结果如下: userid | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed --------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+------------+-------------+------------+------------ 16407 | 18 | 1655 | 6 | 19 | 13787176 | -1 | 0 | -1 | 0 | -1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 (1 row) 查询所有用户的资源限额和资源历史使用情况。 1 SELECT * FROM GS_WLM_USER_RESOURCE_HISTORY; 查询结果如下: username | timestamp | used_memory | total_memory | used_cpu | total_cpu | used_space | total_space | used_temp_space | total_temp_space | used_spill_space | total_spill_space | read_kbytes | write_kbytes | read_counts | write_counts | read_speed | write_speed | send_speed | recv_speed -----------------------+-------------------------------+-------------+--------------+----------+-----------+------------+-------------+-----------------+------------------+------------------+-------------------+-------------+--------------+-------------+--------------+-------------+-------------+------------+------------ usern | 2020-01-08 22:56:06.456855+08 | 0 | 17250 | 0 | 48 | 0 | -1 | 0 | -1 | 88349078 | -1 | 45680 | 34 | 5710 | 8 | 320 | 0 | 0 | 0 userg | 2020-01-08 22:56:06.458659+08 | 0 | 15525 | 33.48 | 48 | 0 | -1 | 0 | -1 | 110169581 | -1 | 17648 | 23 | 2206 | 5 | 123 | 0 | 0 | 0 userg1 | 2020-01-08 22:56:06.460252+08 | 0 | 13972 | 33.48 | 48 | 0 | -1 | 0 | -1 | 136106277 | -1 | 17648 | 23 | 2206 | 5 | 123 | 0 | 0 | 0 对于系统表GS_WLM_USER_RESOURCE_HISTORY,仅当GUC参数enable_user_metric_persistent开启时,才会定期将视图PG_TOTAL_USER_RESOURCE_INFO中的数据保存到历史表中。 所查各字段说明详见GS_WLM_USER_RESOURCE_HISTORY。
  • 注意事项 用户监控可以同时监控快慢车道(快车道管控简单作业,慢车道管控复杂作业)所有作业的CPU、IO和内存使用情况,不再受限于仅监控慢车道作业。 当前快车道作业内存和CPU不受控,在快车道运行作业占用资源较多情况下,可能出现已用资源大于资源限制的情况。 DN监控视图中,IO、内存和CPU显示的是本DN上资源池资源使用和资源限制信息。 CN监控视图中,IO、内存和CPU显示的是集群内所有DN资源池资源使用和资源限制的累积和。 DN每隔5s更新一次监控信息,CN每隔5s从DN收集一次用户监控信息,因为各实例单独更新/收集用户监控信息,因此各实例监控信息更新时间可能不一致。 辅助线程中每隔30s自动调用持久化函数,持久化用户监控数据,正常情况下不需要用户单独调用持久化函数持久化用户监控数据。 当用户数量较多,集群规模较大时,查询此类实时视图,因CN/DN间实时通信开销,会有一定的网络延时。 初始管理用户不进行资源监控。
  • 语法格式 1 2 3 4 5 ALTER [ ROW LEVEL SECURITY ] POLICY [ IF EXISTS ] policy_name ON table_name RENAME TO new_policy_name ALTER [ ROW LEVEL SECURITY ] POLICY policy_name ON table_name [ TO { role_name | PUBLIC } [, ...] ] [ USING ( using_expression ) ]
  • box(circle) 描述:将圆转换成矩形。 返回类型:box 示例: 1 2 3 4 5 SELECT box(circle '((0,0),2.0)') AS RESULT; result --------------------------------------------------------------------------- (1.41421356237309,1.41421356237309),(-1.41421356237309,-1.41421356237309) (1 row)
  • polygon(circle) 描述:圆转换成12点多边形。 返回类型:polygon 示例: 1 2 3 4 5 6 SELECT polygon(circle '((0,0),2.0)') AS RESULT; result ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ((-2,0),(-1.73205080756888,1),(-1,1.73205080756888),(-1.22464679914735e-16,2),(1,1.73205080756888),(1.73205080756888,1),(2,2.44929359829471e-16),(1.73205080756888,-0.999999999999999),(1,-1.73205080756888),(3.67394039744206e-16,-2),(-0.999999999999999,-1.73205080756888),(-1.73205080756888,-1)) (1 row)
  • polygon(npts, circle) 描述:圆转换成npts点多边形。 返回类型:polygon 示例: 1 2 3 4 5 6 SELECT polygon(12, circle '((0,0),2.0)') AS RESULT; result ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ((-2,0),(-1.73205080756888,1),(-1,1.73205080756888),(-1.22464679914735e-16,2),(1,1.73205080756888),(1.73205080756888,1),(2,2.44929359829471e-16),(1.73205080756888,-0.999999999999999),(1,-1.73205080756888),(3.67394039744206e-16,-2),(-0.999999999999999,-1.73205080756888),(-1.73205080756888,-1)) (1 row)
  • 模板和默认数据 GaussDB (DWS)提供了两个模板数据库template0、template1,以及一个默认的数据库gaussdb。 默认情况下,每个新创建的数据库都是基于一个模板数据库。GaussDB(DWS)数据库默认使用template1作为模板,编码格式为SQL_ASCII,且不允许自定义字符编码。若创建数据库时需指定字符编码,请使用template0创建数据库。 请避免使用客户端或其他手段连接及操作两个模板数据库。 通过“show server_encoding”命令可以查看当前数据库存储编码。
  • 创建数据库 使用CREATE DATABASE语句创建一个新的数据库。 1 CREATE DATABASE mydatabase; 创建数据库时,若数据库名称长度超过63字节,server端会对数据库名称进行截断,保留前63个字节,因此建议数据库名称长度不要超过63个字节,不要使用多字节字符作为对象名。(如果出现因为误操作导致在多字节字符的中间截断进而无法删除数据库对象的现象,请使用截断前的数据库对象名进行删除操作,或将该对象从各个数据库节点的相应系统表中依次删掉。) 数据库名称遵循SQL标识符的一般规则。当前用户自动成为此新数据库的所有者。 如果一个数据库系统用于承载相互独立的用户和项目,建议把它们放在不同的数据库里。 如果项目或者用户是相互关联的,并且可以相互使用对方的资源,则应该把它们放在同一个数据库里,但可以规划在不同的Schema中。 GaussDB(DWS)允许创建的数据库总数目上限为128个。 用户必须拥有数据库创建的权限或者是数据库的系统管理员权限才能创建数据库。
  • 解析查询 GaussDB(DWS)提供了函数to_tsquery和plainto_tsquery将查询转换为tsquery数据类型,to_tsquery提供比plainto_tsquery更多的功能,但对其输入要求更严格。 to_tsquery([ config regconfig, ] querytext text) returns tsquery to_tsquery从querytext中创建一个tsquery,querytext必须由布尔运算符& (AND),| (OR)和! (NOT)分割的单个token组成。这些运算符可以用圆括弧分组。换句话说,to_tsquery输入必须遵循tsquery输入的通用规则,具体请参见文本搜索类型。不同的是基本tsquery以token表面值作为输入,而to_tsquery使用指定或默认分词器将每个token标准化成词素,并依据分词器丢弃属于停用词的token。例如: 1 2 3 4 5 SELECT to_tsquery('english', 'The & Fat & Rats'); to_tsquery --------------- 'fat' & 'rat' (1 row) 像在基本tsquery中的输入一样,weight(s)可以附加到每个词素来限制它只匹配那些有相同weight(s)的tsvector词素。比如: 1 2 3 4 5 SELECT to_tsquery('english', 'Fat | Rats:AB'); to_tsquery ------------------ 'fat' | 'rat':AB (1 row) 同时,*也可以附加到词素来指定前缀匹配: 1 2 3 4 5 SELECT to_tsquery('supern:*A & star:A*B'); to_tsquery -------------------------- 'supern':*A & 'star':*AB (1 row) 这样的词素将匹配tsquery中指定字符串和权重的项。 plainto_tsquery([ config regconfig, ] querytext text) returns tsquery plainto_tsquery将未格式化的文本querytext变换为tsquery。类似于to_tsvector,文本被解析并且标准化,然后在存在的词之间插入&(AND)布尔算子。 比如: 1 2 3 4 5 SELECT plainto_tsquery('english', 'The Fat Rats'); plainto_tsquery ----------------- 'fat' & 'rat' (1 row) 请注意,plainto_tsquery无法识别布尔运算符、权重标签,或在其输入中的前缀匹配标签: 1 2 3 4 5 SELECT plainto_tsquery('english', 'The Fat & Rats:C'); plainto_tsquery --------------------- 'fat' & 'rat' & 'c' (1 row) 在这里,所有输入的标点符号作为空格符号丢弃。 父主题: 控制文本搜索
  • 示例 授予用户webuser对模式tpcds下视图的所有操作权限: 1 2 3 4 5 6 7 8 DO $$DECLARE r record; BEGIN FOR r IN SELECT c.relname,n.nspname FROM pg_class c,pg_namespace n WHERE c.relnamespace = n.oid AND n.nspname = 'tpcds' AND relkind IN ('r','v') LOOP EXECUTE 'GRANT ALL ON ' || quote_ident(r.table_schema) || '.' || quote_ident(r.table_name) || ' TO webuser'; END LOOP; END$$;
  • 应用示例 查看所有发布: 1 2 3 4 5 SELECT * FROM pg_publication; pubname | pubowner | puballtables | pubinsert | pubupdate | pubdelete | pubtruncate ---------+----------+--------------+-----------+-----------+-----------+------------- mypub | 10 | t | t | t | t | t (1 row)
  • get_db_source_datasize() 描述:估算当前数据库非压缩态的数据总容量。 返回值类型:bigint 备注:(1)调用该函数前需要做analyze;(2)通过估算列存的压缩率计算非压缩态的数据总容量。 示例: 1 2 3 4 5 6 7 analyze; ANALYZE SELECT get_db_source_datasize(); get_db_source_datasize ------------------------ 35384925667 (1 row)
  • pg_database_size(name) 描述:指定名称的数据库使用的磁盘空间。 返回值类型:bigint 备注:pg_database_size接收一个数据库的OID或者名字,然后返回该对象使用的全部磁盘空间。 示例: 1 2 3 4 5 SELECT pg_database_size('gaussdb'); pg_database_size ------------------ 51590112 (1 row)
共100000条