华为云用户手册

  • 示例 --创建同义词t1。 openGauss=# CREATE OR REPLACE SYNONYM t1 FOR ot.t1; --创建新用户u1。 openGauss=# CREATE USER u1 PASSWORD '********'; --修改同义词t1的owner为u1。 openGauss=# ALTER SYNONYM t1 OWNER TO u1; --删除同义词t1。 openGauss=# DROP SYNONYM t1; --删除用户u1。 openGauss=# DROP USER u1;
  • DBE_SQL_UTIL.create_abort_sql_patch create_abort_sql_patch是用于创建避险SQL PATCH的接口函数,返回执行是否成功。 限制仅初始用户、sysadmin、opradmin、monadmin用户有权限调用。 表1 DBE_SQL_UTIL.create_abort_sql_patch入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 unique_sql_id IN bigint 查询全局唯一ID。 description IN text PATCH的备注,默认值为NULL。 enabled IN bool PATCH是否生效,默认值为true。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • 定时任务管理 创建测试表。 1 openGauss=# CREATE TABLE test(id int, time date); 当结果显示为如下信息,则表示创建成功。 1 CREATE TABLE 创建自定义存储过程。 1 2 3 4 5 6 7 8 9 openGauss=# CREATE OR REPLACE PROCEDURE PRC_JOB_1() AS N_NUM integer :=1; BEGIN FOR I IN 1..1000 LOOP INSERT INTO test VALUES(I,SYSDATE); END LOOP; END; / 当结果显示为如下信息,则表示创建成功。 1 CREATE PROCEDURE 创建任务。 新创建的任务(未指定job_id)表示每隔1分钟执行一次存储过程PRC_JOB_1。 1 2 3 4 5 openGauss=# call dbe_task.submit('call public.prc_job_1(); ', sysdate, 'interval ''1 minute''', :a); id ----- 1 (1 row) 指定job_id创建任务,其中job_id可用范围为1~32767。 1 2 3 4 5 openGauss=# call dbe_task.id_submit(1,'call public.prc_job_1(); ', sysdate, 'interval ''1 minute'''); id_submit --------- (1 row) 通过视图查看当前用户已创建的任务信息。 1 2 3 4 5 openGauss=# select job,dbname,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from my_jobs; job | dbname | start_date | last_date | this_date | next_date | broken | status | interval | failures | what -----+--------+---------------------+----------------------------+----------------------------+---------------------+--------+--------+---------------------+----------+--------------------------- 1 | testdb | 2017-07-18 11:38:03 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:54:03 | n | s | interval '1 minute' | 0 | call public.prc_job_1(); (1 row) 停止任务。 1 2 3 4 5 openGauss=# call dbe_task.finish(1,true); finish -------- (1 row) 启动任务。 1 2 3 4 5 openGauss=# call dbe_task.finish(1,false); finish -------- (1 row) 修改任务属性。 修改JOB的next_time参数信息。 1 2 3 4 5 6 --修改Job1的next_time为1小时以后开始执行。 openGauss=# call dbe_task.next_time(1, sysdate+1.0/24); next_time ----------- (1 row) 修改JOB的Interval参数信息。 1 2 3 4 5 6 --修改Job1的Interval为每隔1小时执行一次。 openGauss=# call dbe_task.interval(1,'sysdate + 1.0/24'); interval ---------- (1 row) 修改JOB的What参数信息。 1 2 3 4 5 6 --修改Job1的What为执行SQL语句“insert into public.test values(333, sysdate+5);” openGauss=# call dbe_task.content(1,'insert into public.test values(333, sysdate+5);'); content --------- (1 row) 同时修改JOB的Next_date、Interval、What等多个参数信息。 1 2 3 4 5 openGauss=# call dbe_task.update(1, 'call public.prc_job_1();', sysdate, 'interval ''1 minute'''); update -------- (1 row) 删除JOB。 1 2 3 4 5 openGauss=# call dbe_task.cancel(1); cancel --------- (1 row) 查看JOB执行情况。 当JOB自动执行时,如果JOB执行失败(即job_status状态值为'f')时,请联系管理员查看gs_log的运行日志来查看JOB的失败信息。 日志信息如下所示,从失败信息(detail error msg)中可以查看失败的具体错误。 LOG : Execute Job Detail: job_id: 1 what: call public.test(); start_date: 2017-07-19 23:30:47.401818 job_status: failed detail error msg: relation "test" does not exist end_date: 2017-07-19 23:30:47.401818 next_run_date: 2017-07-19 23:30:56.855827 JOB的权限控制。 当创建一个JOB时,该JOB会和创建该JOB的数据库和用户绑定(即:pg_job系统表新增的JOB记录中的dbname和log_user)。 如果当前用户是DBA用户、系统管理员或该JOB的创建用户(即:pg_job中的log_user),那么该用户有权限通过高级包接口remove、change、next_data、what、interval删除或修改JOB的参数信息。否则,会提示当前用户没有权限操作该JOB。 如果当前数据库是该JOB创建所属的数据库(即:pg_job系统表中的dbname),那么连接到当前数据库上可以通过高级包接口cancel、update、next_data、content、interval删除或修改JOB的参数信息。 当删除JOB所属的数据库(即:pg_job系统表中的dbname)时,系统会关联删除该数据库从属的JOB记录。 当删除JOB所属的用户(即:pg_job系统表中的log_user)时,系统会关联删除该用户从属的JOB记录。 JOB的并发控制管理。 用户可以通过配置GUC参数job_queue_processes调整并发同时执行的JOB数目。 当job_queue_processes为0时,表示不启用定时任务功能,任何job都不会被执行。 当job_queue_processes大于0时,表示启用定时任务功能,该值为系统能够并发处理的最大任务数。 由于并行运行的任务数太多会消耗更多的系统资源,因此需要设置系统并发处理的任务数。当前并发的任务数达到job_queue_processes时,且此时又有任务到期,那么这些任务本次得不到执行将延期到下一轮询周期。因此,建议用户根据每个任务的执行时长合理地设置任务的时间间隔(即submit接口中的interval参数),来避免由于任务执行时间过长而导致下个轮询周期无法正常执行的情况。 注:对于不使用JOB的数据库实例,用户可以在数据库实例安装初始化完成后,通过设置job_queue_processes为0来关闭JOB功能,减少系统资源的消耗。
  • 背景信息 当客户在使用数据库过程中,如果白天执行一些耗时比较长的任务(例如:统计数据汇总之类或从其他数据库同步数据的任务),会对正常的业务有性能影响,所以客户经常选择在晚上执行,无形中增加了客户的工作量。因此 GaussDB Kernel数据库兼容A数据库中定时任务的功能,可以由客户创建定时任务,当任务时间点到达后可以自动触发任务的执行,从而减少客户运维的工作量。 GaussDB Kernel数据库兼容A定时任务功能主要通过DBE_TASK高级包提供的接口,可以实现定时任务的创建、任务到期自动执行、任务删除和修改任务属性(包括:任务id、任务的关闭开启、任务的触发时间、触发时间间隔和任务内容等)等功能。
  • MY_IND_PARTITIONS MY_IND_PARTITIONS视图显示当前用户下的索引分区信息(不包含分区表全局索引)。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_IND_PARTITIONS字段 名称 类型 描述 index_owner character varying(64) 索引分区所属分区表索引的所有者的名称。 index_name character varying(64) 索引分区所属分区表索引的名称。 partition_name character varying(64) 索引分区的名称。 def_tablespace_name name 索引分区的表空间名称。 high_value text 索引分区所对应分区的边界值。 说明: 对于范围分区和间隔分区,显示各分区的上边界值。 对于列表分区,显示各分区的取值列表。 对于哈希分区,显示各分区的编号。 index_partition_usable boolean 索引分区是否可用。 t(true):表示是。 f(false):表示否。 schema character varying(64) 索引分区所属分区表索引的模式。 high_value_length integer 索引分区所对应分区的边界的字符长度。 父主题: 系统视图
  • GS_SQL_COUNT GS_SQL_COUNT视图显示数据库当前节点当前时刻执行的五类语句(SELECT、INSERT、UPDATE、DELETE、MERGE INTO)统计信息。 普通用户查询GS_SQL_COUNT视图仅能看到该用户当前节点的统计信息;管理员权限用户查询GS_SQL_COUNT视图则能看到所有用户当前节点的统计信息。 当数据库或该节点重启时,计数将清零,并重新开始计数 。 计数以节点收到的查询数为准,包括数据库内部进行的查询。 表1 GS_SQL_COUNT字段 名称 类型 描述 node_name name 节点名称。 user_name name 用户名。 select_count bigint SELECT语句统计结果。 update_count bigint UPDATE语句统计结果。 insert_count bigint INSERT语句统计结果。 delete_count bigint DELETE语句统计结果。 mergeinto_count bigint MERGE INTO语句统计结果。 ddl_count bigint DDL语句的数量。 dml_count bigint DML语句的数量。 dcl_count bigint DML语句的数量。 total_select_elapse bigint 总SELECT的时间花费(单位:微秒)。 avg_select_elapse bigint 平均SELECT的时间花费(单位:微秒)。 max_select_elapse bigint 最大SELECT的时间花费(单位:微秒)。 min_select_elapse bigint 最小SELECT的时间花费(单位:微秒)。 total_update_elapse bigint 总UPDATE的时间花费(单位:微秒)。 avg_update_elapse bigint 平均UPDATE的时间花费(单位:微秒)。 max_update_elapse bigint 最大UPDATE的时间花费(单位:微秒)。 min_update_elapse bigint 最小UPDATE的时间花费(单位:微秒)。 total_insert_elapse bigint 总INSERT的时间花费(单位:微秒)。 avg_insert_elapse bigint 平均INSERT的时间花费(单位:微秒)。 max_insert_elapse bigint 最大INSERT的时间花费(单位:微秒)。 min_insert_elapse bigint 最小INSERT的时间花费(单位:微秒)。 total_delete_elapse bigint 总DELETE的时间花费(单位:微秒)。 avg_delete_elapse bigint 平均DELETE的时间花费(单位:微秒)。 max_delete_elapse bigint 最大DELETE的时间花费(单位:微秒)。 min_delete_elapse bigint 最小DELETE的时间花费(单位:微秒)。 父主题: 系统视图
  • 结构 PL/SQL块中可以包含子块,子块可以位于PL/SQL中任何部分。PL/SQL块的结构如下: 声明部分:声明PL/SQL用到的变量、类型、游标、局部的存储过程和函数。 DECLARE 不涉及变量声明时声明部分可以没有。 对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。 对存储过程来说,没有DECLARE, AS相当于DECLARE。即便没有变量声明的部分,关键字AS也必须保留。 执行部分:过程及SQL语句,程序的主要部分。必选。 BEGIN 执行异常部分:错误处理。可选。 EXCEPTION 结束。必选。 END; / 禁止在PL/SQL块中使用连续的Tab,连续的Tab可能会造成在使用gsql工具带“-r”参数执行PL/SQL块时出现异常。
  • GS_MATVIEW GS_MATVIEW系统表提供了关于数据库中每一个物化视图的信息。 表1 GS_MATVIEW字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 matviewid oid 物化视图的oid。 mapid oid 物化视图map表的oid,map表为物化视图关联表,与物化视图一一对应。全量物化视图不存在对应的map表,该字段为0。 ivm boolean 物化视图的类型,t为增量物化视图,f为全量物化视图。 needrefresh boolean 保留字段。 refreshtime timestamp 物化视图上一次刷新时间,若未刷新则为null。仅对增量物化视图维护该字段,全量物化视图为null。 父主题: 系统表
  • USER_TRANSACTION USER_TRANSACTION用来统计用户执行的事务信息。monadmin用户能看到所有用户执行事务的信息,普通用户只能查询到自己执行的事务信息。 表1 USER_TRANSACTION字段 名称 类型 描述 username name 用户的名称。 commit_counter bigint 用户事务commit数量。 rollback_counter bigint 用户事务rollback数量。 resp_min bigint 用户事务最小响应时间(单位:微秒)。 resp_max bigint 用户事务最大响应时间(单位:微秒)。 resp_avg bigint 用户事务平均响应时间(单位:微秒)。 resp_total bigint 用户事务总响应时间(单位:微秒)。 bg_commit_counter bigint 后台事务commit数量。 bg_rollback_counter bigint 后台事务rollback数量。 bg_resp_min bigint 后台事务最小响应时间(单位:微秒)。 bg_resp_max bigint 后台事务最大响应时间(单位:微秒)。 bg_resp_avg bigint 后台事务平均响应时间(单位:微秒)。 bg_resp_total bigint 后台事务总响应时间(单位:微秒)。 父主题: Workload
  • SUMMARY_STATIO_ALL_INDEXES SUMMARY_STATIO_ALL_INDEXES视图包含数据库中的每个索引行, 显示特定索引I/O的统计汇总结果。 表1 SUMMARY_STATIO_ALL_INDEXES字段 名称 类型 描述 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read numeric 从索引中读取的磁盘块数。 idx_blks_hit numeric 索引命中缓存数。 父主题: Cache/IO
  • 注意事项 参数DEFAULT将在客户端和服务器之间默认执行源编码到目标编码之间的转换。要支持这个用法,需要定义双向转换,即从A到B和从B到A之间的转换。 创建转换需拥有函数的EXECUTE权限及目标模式的CREATE权限。 源编码和目标编码都不可以使用SQL_ASCII,因为在涉及SQL_ASCII “encoding”的情况下,服务器的行为是硬连接的。 使用DROP CONVERSION可以移除用户定义的转换。
  • 参数说明 DEFAULT DEFAULT子句表示这个转换是从源编码到目标编码的默认转换。在一个模式中对于每一个编码对,只应该有一个默认转换。 name 转换的名称,可以被模式限定。如果没有被模式限定,该转换被定义在当前模式中。在一个模式中,转换名称必须唯一。 source_encoding 源编码名称。 dest_encoding 目标编码名称。 function_name 被用来执行转换的函数。函数名可以被模式限定。如果没有,将在路径中查找该函数。 conv_proc( integer, -- 原编码ID integer, -- 目标编码ID cstring, -- 源字符串(空值终止的C字符串) internal,-- 目标(用一个空值终止的C字符串填充) integer -- 源字符串长度 ) RETURNS void;
  • ADM_TAB_COLUMNS ADM_TAB_COLUMNS视图显示关于表的字段的信息。数据库中每个表的每一个字段在ADM_TAB_COLUMNS里各有一行对应的数据。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TAB_COLUMNS字段 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表的名称。 column_name character varying(64) 列名。 data_type character varying(128) 列的数据类型。 data_length integer 列的字节长度。 data_precision integer 数据类型的精度,对于numeric数据类型有效,其他类型为NULL。 data_scale integer 小数点右边的位数,对于numeric数据类型有效,其他类型为0。 nullable bpchar 该列是否允许为空,对于主键约束和非空约束,该值为n。 column_id integer 创建表时列的序号。 avg_col_len numeric 列的平均长度(单位字节)。 char_length numeric 列的长度(以字符计),只对varchar,nvarchar2,bpchar,char类型有效。 comments text 注释。 父主题: 系统视图
  • MY_TAB_PARTITIONS MY_TAB_PARTITIONS视图显示当前用户下所有分区的信息。当前用户下每个分区表的每个分区都会在USER_TAB_PARTITIONS中有一条记录。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_TAB_PARTITIONS字段 名称 类型 描述 table_owner character varying(64) 分区表的所有者名称。 table_name character varying(64) 分区表的名称。 partition_name character varying(64) 分区的名称。 high_value text 分区的边界值。 说明: 对于范围分区和间隔分区,显示各分区的上边界值。 对于列表分区,显示各分区的取值列表。 对于哈希分区,显示各分区的编号。 tablespace_name name 分区的表空间名称。 schema character varying(64) 分区表的模式。 subpartition_count bigint 二级分区的个数。 high_value_length integer 分区边界值表达式的长度。 父主题: 系统视图
  • SUMMARY_STAT_BAD_BLOCK 获得数据库内汇聚的表、索引等文件的读取失败信息。 表1 SUMMARY_STAT_BAD_BLOCK字段 名称 类型 描述 databaseid integer database的oid。 tablespaceid integer tablespace的oid。 relfilenode integer relation的file node。 forknum bigint fork编号。 error_count bigint error的数量。 first_time timestamp with time zone 页面损坏第一次出现的时间。 last_time timestamp with time zone 页面损坏最后出现的时间。 父主题: Object
  • Schema GaussDB的Schema如下表所示。 表1 GaussDB支持的Schema Schema名称 描述 dbe_perf DBE_PERF Schema内视图主要用来诊断性能问题,也是WDR Snapshot的数据来源。数据库安装后,默认只有初始用户和监控管理员具有模式dbe_perf的权限,有权查看该模式下的视图和函数。 dbe_pldebugger 用于调试PL/SQL函数及存储过程。 snapshot 用于管理WDR snapshot的相关的数据信息,默认初始化用户或监控管理员用户可以访问。 sys 用于提供系统信息视图接口。 pg_catalog 用于维护系统的catalog信息,包含系统表和所有内置数据类型、函数、操作符。 pg_toast 用于存储大对象(系统内部使用)。 public 公共模式,用于存储公共对象。search_path参数缺省时, 如果存在用户同名的模式则将创建的表(以及其他对象)默认创建到同名模式下,不存在用户同名模式则自动放入public模式。 pkg_service 用于管理package服务相关信息。 pkg_util 用于管理package工具相关信息。 dbe_raw 高级功能包dbe_raw,用于raw类型数据的转化、取子串、求长度等操作。 dbe_session 高级功能包dbe_session,用于设置指定属性的值(value),并支持用户查询校验。 dbe_lob 高级功能包dbe_lob,用于大文件(clob/blob)的读取、写入、复制等操作。 dbe_match 高级功能包dbe_match,用于字符串相似度的比较。 dbe_task 高级功能包dbe_task,用于作业任务的调度包括提交任务、取消任务、同步任务状态、更新任务信息等可以使数据库定期执行特定的任务。 dbe_sql 高级功能包dbe_sql,用于执行动态sql,可以在应用的运行时间构建查询和其他命令。 dbe_file 高级功能包dbe_file,用于数据库外部文件的读取、复制、写入、删除、重命名等。 dbe_output 高级功能包dbe_output,用于打印输出信息。 dbe_random 高级功能包dbe_random,用于生成随机种子和随机数。 dbe_application_info 高级功能包dbe_application_info,用于记录客户端信息。 dbe_utility 高级功能包dbe_utility,用于存储过程调用调试工具,例如打印错误堆栈等。 dbe_scheduler 高级功能包dbe_scheduler,用于创建定时任务,通过程序(program)和调度(schedule)使数据库定期执行特定的任务。也可以通过授权、提供证书执行数据库外部任务。 information_schema 用于存储有关当前数据库中定义的对象的信息。 dbe_pldeveloper 用户存储过程编译调试。 dbe_sql_util SQL运维功能,目前包含SQL Patch的运维接口。 Information Schema DBE_PERF Schema DBE_PLDEBUGGER Schema DBE_PLDEVELOPER DBE_SQL_UTIL Schema
  • SUMMARY_STATIO_ALL_TABLES SUMMARY_STATIO_ALL_TABLES视图显示数据库内各节点每张表(包括TOAST表)的I/O状态信息的汇总结果。 表1 SUMMARY_STATIO_ALL_TABLES字段 名称 类型 描述 schemaname name 该表模式名。 relname name 表名。 heap_blks_read numeric 从该表中读取的磁盘块数。 heap_blks_hit numeric 此表缓存命中数。 idx_blks_read numeric 从表中所有索引读取的磁盘块数。 idx_blks_hit numeric 表中所有索引命中缓存数。 toast_blks_read numeric 此表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit numeric 此表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read numeric 此表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit numeric 此表的TOAST表索引命中缓冲区数(如果存在)。 父主题: Cache/IO
  • MY_PART_TABLES MY_PART_TABLES视图显示当前用户下分区表的信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_PART_TABLES字段 名称 类型 描述 table_owner character varying(64) 分区表的所有者名称。 table_name character varying(64) 分区表的名称。 partitioning_type text 分区表的分区策略。 说明: 当前分区表策略支持范围见CREATE TABLE PARTITION。 partition_count bigint 分区表的分区个数。 partitioning_key_count integer 分区表的分区键个数。 def_tablespace_name name 分区表的表空间名称。 schema character varying(64) 分区表的模式。 subpartitioning_type text 二级分区表的分区策略。如果分区表是一级分区表,则显示NONE。 说明: 当前二级分区表策略支持范围见CREATE TABLE SUBPARTITION。 def_subpartition_count integer 默认创建二级分区的个数,二级分区表为1,一级分区表为0。 subpartitioning_key_count integer 分区表二级分区键的个数。 父主题: 系统视图
  • 注意事项 ALTER OPERATOR改变一个操作符的定义。 目前唯一能用的功能是改变操作符的所有者。 要使用ALTER OPERATOR,你必须是该操作符的所有者。 要修改所有者,你还必须是新的所有角色的直接或间接成员,并且该成员必须在此操作符的模式上有CREATE权限。 (这些限制强制了修改该所有者不会做任何通过删除和重建操作符不能做的事情。不过,具有SYSADMIN权限用户可以以任何方式修改任意操作符的所有权。)
  • PG_AM PG_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 表1 PG_AM字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 amname name - 访问方法的名称。 amstrategies smallint - 访问方法的操作符策略个数,或者如果访问方法没有一个固定的操作符策略集则为0。 amsupport smallint - 访问方法的支持过程个数。 amcanorder boolean - 这种访问方式是否支持通过索引字段值的命令扫描排序。 t(true):表示支持。 f(false):表示不支持。 amcanorderbyop boolean - 这种访问方式是否支持通过索引字段上操作符的结果的命令扫描排序。 t(true):表示支持。 f(false):表示不支持。 amcanbackward boolean - 访问方式是否支持向后扫描。 t(true):表示支持。 f(false):表示不支持。 amcanunique boolean - 访问方式是否支持唯一索引。 t(true):表示支持。 f(false):表示不支持。 amcanmulticol boolean - 访问方式是否支持多字段索引。 t(true):表示支持。 f(false):表示不支持。 amoptionalkey boolean - 访问方式是否支持第一个索引字段上没有任何约束的扫描。 t(true):表示支持。 f(false):表示不支持。 amsearcharray boolean - 访问方式是否支持ScalarArrayOpExpr搜索。 t(true):表示支持。 f(false):表示不支持。 amsearchnulls boolean - 访问方式是否支持IS NULL/NOT NULL搜索。 t(true):表示支持。 f(false):表示不支持。 amstorage boolean - 是否允许索引存储的数据类型与列的数据类型不同。 t(true):表示允许。 f(false):表示不允许。 amclusterable boolean - 是否允许在一个这种类型的索引上聚簇。 t(true):表示允许。 f(false):表示不允许。 ampredlocks boolean - 是否允许这种类型的一个索引管理细粒度的谓词锁定。 t(true):表示允许。 f(false):表示不允许。 amkeytype oid PG_TYPE.oid 存储在索引里数据的类型,如果不是一个固定的类型则为0。 aminsert regproc PG_PROC.proname “插入这个行”函数。 ambeginscan regproc PG_PROC.proname “准备索引扫描”函数。 amgettuple regproc PG_PROC.proname “下一个有效行”函数,如果没有则为0。 amgetbitmap regproc PG_PROC.proname “抓取所有的有效行” 函数,如果没有则为0。 amrescan regproc PG_PROC.proname “(重新)开始索引扫描”函数。 amendscan regproc PG_PROC.proname “索引扫描后清理” 函数。 ammarkpos regproc PG_PROC.proname “标记当前扫描位置”函数。 amrestrpos regproc PG_PROC.proname “恢复已标记的扫描位置”函数。 ammerge regproc PG_PROC.proname “归并多个索引对象”函数。 ambuild regproc PG_PROC.proname “建立新索引”函数。 ambuildempty regproc PG_PROC.proname “建立空索引”函数。 ambulkdelete regproc PG_PROC.proname 批量删除函数。 amvacuumcleanup regproc PG_PROC.proname VACUUM后的清理函数。 amcanreturn regproc PG_PROC.proname 检查是否索引支持唯一索引扫描的函数,如果没有则为0。 amcostestimate regproc PG_PROC.proname 估计一个索引扫描开销的函数。 amoptions regproc PG_PROC.proname 为一个索引分析和确认reloptions的函数。 父主题: 系统表
  • 参数说明 table_name 分区表名。 取值范围:已存在的分区表名。 partition_name 分区名。 取值范围:已存在的分区名。 tablespacename 指定分区要移动到哪个表空间。 取值范围:已存在的表空间名。 partition_value 分区键值。 通过PARTITION FOR ( partition_value [, ...] )子句指定的这一组值,可以唯一确定一个分区。 取值范围:需要进行重命名的分区的分区键的取值范围。 UNUSABLE LOCAL INDEXES 设置该分区上的所有索引不可用。 REBUILD UNUSABLE LOCAL INDEXES 重建该分区上的所有索引。 { ENABLE | DISABLE } ROW MOVEMET 行迁移开关。 如果进行UPDATE操作时,更新了元组在分区键上的值,造成了该元组所在分区发生变化,就会根据该开关给出报错信息,或者进行元组在分区间的转移。 取值范围: ENABLE:打开行迁移开关。 DISABLE:关闭行迁移开关。 默认是打开状态。 ordinary_table_name 进行迁移的普通表的名称。 取值范围:已存在的普通表名。 { WITH | WITHOUT } VALIDATION 在进行数据迁移时,是否检查普通表中的数据满足指定分区的分区键范围。 取值范围: WITH:对于普通表中的数据要检查是否满足分区的分区键范围,如果有数据不满足,则报错。 WITHOUT:对于普通表中的数据不检查是否满足分区的分区键范围。 默认是WITH状态。 由于检查比较耗时,特别是当数据量很大的情况下更甚。所以在保证当前普通表中的数据满足分区的分区键范围时,可以加上WITHOUT来指明不进行检查。 VERBOSE 在VALIDATION是WITH状态时,如果检查出普通表有不满足要交换分区的分区键范围的数据,那么把这些数据插入到正确的分区,如果路由不到任何分区,再报错。 只有在VALIDATION是WITH状态时,才可以指定VERBOSE。 partition_new_name 分区的新名称。 取值范围:字符串,要符合标识符命名规范。
  • 语法格式 修改表分区主语法。 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} action [, ... ]; 其中action统指如下分区维护子语法。当存在多个分区维护子句时,保证了分区的连续性,无论这些子句的排序如何,GaussDB总会先执行DROP PARTITION再执行ADD PARTITION操作,最后顺序执行其它分区维护操作。 move_clause | exchange_clause | row_clause | merge_clause | modify_clause | split_clause | add_clause | drop_clause | truncate_clause move_clause子语法用于移动分区到新的表空间。 MOVE PARTITION { partion_name | FOR ( partition_value [, ...] ) } TABLESPACE tablespacename exchange_clause子语法用于把普通表的数据迁移到指定的分区。 EXCHANGE PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } WITH TABLE {[ ONLY ] ordinary_table_name | ordinary_table_name * | ONLY ( ordinary_table_name )} [ { WITH | WITHOUT } VALIDATION ] [ VERBOSE ] [ UPDATE GLOBAL INDEX ] 进行交换的普通表和分区必须满足如下条件: 普通表和分区的列数目相同,对应列的信息严格一致,包括:列名、列的数据类型、列约束、列的Collation信息、列的存储参数等。 普通表和分区的索引个数相同,且对应索引的信息严格一致。 普通表和分区的表约束个数相同,且对应表约束的信息严格一致。 普通表不可以是临时表,分区表只能是范围分区表,列表分区表,哈希分区表或间隔分区表。 普通表和分区表上不可以有动态数据脱敏,行访问控制约束。 完成交换后,普通表和分区的数据被置换,同时普通表和分区的表空间信息被置换。此时,普通表和分区的统计信息变得不可靠,需要对普通表和分区重新执行analyze。 由于非分区键不能建立本地唯一索引,只能建立全局唯一索引,所以如果普通表含有唯一索引时,可能会导致不能交换数据。 如果在普通表/分区表上进行了drop column操作,被删除的列依然物理存在,所以需要保证普通表和分区的被删除列也严格对齐才能交换成功。 row_clause子语法用于设置分区表的行迁移开关。 { ENABLE | DISABLE } ROW MOVEMENT merge_clause子语法用于把多个分区合并成一个分区。当前只有RANGE分区支持合并分区。 MERGE PARTITIONS { partition_name } [, ...] INTO PARTITION partition_name [ TABLESPACE tablespacename ] [ UPDATE GLOBAL INDEX ] USTORE存储引擎表不支持在事务块/存储过程中执行ALTER TABLE MERGE PARTITIONS的操作。 modify_clause子语法用于设置分区索引是否可用。 MODIFY PARTITION partition_name { UNUSABLE LOCAL INDEXES | REBUILD UNUSABLE LOCAL INDEXES } split_clause子语法用于把一个分区切割成多个分区。当前只有RANGE分区支持切割分区。 SPLIT PARTITION { partition_name | FOR ( partition_value [, ...] ) } { split_point_clause | no_split_point_clause } [ UPDATE GLOBAL INDEX ] 指定切割点split_point_clause的语法为: AT ( partition_value ) INTO ( PARTITION partition_name [ TABLESPACE tablespacename ] , PARTITION partition_name [ TABLESPACE tablespacename ] ) 切割点的大小要位于正在被切割的分区的分区键范围内,指定切割点的方式只能把一个分区切割成两个新分区。 不指定切割点no_split_point_clause的语法为: INTO { ( partition_less_than_item [, ...] ) | ( partition_start_end_item [, ...] ) } 不指定切割点的方式,partition_less_than_item指定的第一个新分区的分区键要大于正在被切割的分区的前一个分区(如果存在的话)的分区键,partition_less_than_item指定的最后一个分区的分区键要等于正在被切割的分区的分区键大小。 不指定切割点的方式,partition_start_end_item指定的第一个新分区的起始点(如果存在的话)必须等于正在被切割的分区的前一个分区(如果存在的话)的分区键,partition_start_end_item指定的最后一个分区的终止点(如果存在的话)必须等于正在被切割的分区的分区键。 partition_less_than_item支持的分区键个数最多为4,而partition_start_end_item仅支持1个分区键,其支持的数据类型参见•PARTITION BY RANGE(partition_key)。 在同一语句中partition_less_than_item和partition_start_end_item两者不可同时使用;不同split语句之间没有限制。 分区项partition_less_than_item的语法为: PARTITION partition_name VALUES LESS THAN ( { partition_value | MAXVALUE } [, ...] ) [ TABLESPACE tablespacename ] 分区项partition_start_end_item的语法为,其约束参见START END语法描述。 PARTITION partition_name { {START(partition_value) END (partition_value) EVERY (interval_value)} | {START(partition_value) END ({partition_value | MAXVALUE})} | {START(partition_value)} | {END({partition_value | MAXVALUE})} } [TABLESPACE tablespace_name] add_clause子语法用于为指定的分区表添加一个或多个分区。 ADD PARTITION ( partition_col1_name = partition_col1_value [, partition_col2_name = partition_col2_value ] [, ...] ) [ LOCATION 'location1' ] [ PARTITION (partition_colA_name = partition_colA_value [, partition_colB_name = partition_colB_value ] [, ...] ) ] [ LOCATION 'location2' ] ADD {partition_less_than_item | partition_start_end_item| partition_list_item } 分区项partition_list_item的语法如下。 PARTITION partition_name VALUES (list_values_clause) [ TABLESPACE tablespacename ] partition_list_item仅支持1个分区键,其支持的数据类型参见•PARTITION BY LIST(partition_key)。 间隔/哈希分区表不支持添加分区。 drop_clause子语法用于删除分区表中的指定分区。 DROP PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ] 哈希分区表不支持删除分区。 当分区表只有一个分区时,不能删除该分区。 truncate_clause子语法用于清空分区表中的指定分区。 TRUNCATE PARTITION { partition_name | FOR ( partition_value [, ...] ) } [ UPDATE GLOBAL INDEX ] 修改表分区名称的语法。 ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name )} RENAME PARTITION { partion_name | FOR ( partition_value [, ...] ) } TO partition_new_name;
  • 注意事项 只有分区表的所有者或者被授予了分区表ALTER权限的用户有权限执行ALTER TABLE PARTITION命令,系统管理员默认拥有此权限。 添加分区的表空间不能是PG_GLOBAL。 添加分区的名称不能与该分区表已有分区的名称相同。 添加分区的分区键值要和分区表的分区键的类型一致。 若添加RANGE分区,添加分区键值要大于分区表中最后一个范围分区的上边界。 若添加LIST分区,添加分区键值不能与现有分区键值重复。 不支持添加HASH分区。 如果目标分区表中已有分区数达到了最大值1048575,则不能继续添加分区。 当分区表只有一个分区时,不能删除该分区。 选择分区使用PARTITION FOR(),括号里指定值个数应该与定义分区时使用的列个数相同,并且一一对应。 Value分区表不支持相应的Alter Partition操作。 间隔分区表不支持添加分区。 哈希分区表不支持切割分区,不支持合成分区,不支持添加和删除分区。 列表分区表不支持切割分区,不支持合成分区。 若设置参数enable_gpi_auto_update为on,即使不声明UPDATE GLOBAL INDEX子句,也会自动更新Global索引。
  • 关闭连接 libpq通常使用PQfinish函数来关闭与数据库的连接。如果您的应用程序建立了多个连接,则需要确保每个连接都被正确关闭。 示例如下(完整示例请参考数据库建连、执行SQL并返回结果): /* 关闭入口 ... 不用检查错误 ... */ res = PQexec(conn, "CLOSE myportal"); PQclear(res); /* 结束事务 */ res = PQexec(conn, "END"); PQclear(res); /* 关闭数据库连接并清理 */ PQfinish(conn); 父主题: 开发步骤
  • 示例 --创建表def_test、视图def_view_test用于创建RULE。 openGauss=# CREATE TABLE def_test ( c1 int4 DEFAULT 5, c2 text DEFAULT 'initial_default' ); openGauss=# CREATE VIEW def_view_test AS SELECT * FROM def_test; --创建RULE def_view_test_ins 。 openGauss=# CREATE RULE def_view_test_ins AS openGauss=# ON INSERT TO def_view_test openGauss=# DO INSTEAD INSERT INTO def_test SELECT new.*; --删除RULE def_view_test_ins 。 openGauss=# DROP RULE def_view_test_ins ON def_view_test; --删除表def_test、视图def_view_test。 openGauss=# DROP VIEW def_view_test; openGauss=# DROP TABLE def_test;
  • FILE_IOSTAT 通过对数据文件I/O的统计,反映数据的I/O性能,用以发现I/O操作异常等性能问题。 表1 FILE_IOSTAT字段 名称 类型 描述 filenum oid 文件标识。 dbid oid 数据库标识。 spcid oid 表空间标识。 phyrds bigint 读物理文件的数目。 phywrts bigint 写物理文件的数目。 phyblkrd bigint 读物理文件块的数目。 phyblkwrt bigint 写物理文件块的数目。 readtim bigint 读文件的总时长(单位:微秒)。 writetim bigint 写文件的总时长(单位:微秒)。 avgiotim bigint 读写文件的平均时长(单位:微秒)。 lstiotim bigint 最后一次读文件时长(单位:微秒)。 miniotim bigint 读写文件的最小时长(单位:微秒)。 maxiowtm bigint 读写文件的最大时长(单位:微秒)。 父主题: File
  • WORKLOAD_SQL_COUNT 显示当前节点workload上的SQL数量分布。普通用户只可以看到自己在workload上的SQL分布;初始用户可以看到总的workload的负载情况。 表1 WORKLOAD_SQL_COUNT字段 名称 类型 描述 workload name 负载名称。 select_count bigint select数量。 update_count bigint update数量。 insert_count bigint insert数量。 delete_count bigint delete数量。 ddl_count bigint ddl数量。 dml_count bigint dml数量。 dcl_count bigint dcl数量。 父主题: Workload
  • PL/SQL语言函数 PL/SQL是一种可载入的过程语言。 用PL/SQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。 SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。 这意味着客户端应用对于每一个查询都要执行以下过程:发送查询到数据库服务器、等待查询被接收、接收并处理结果、进行相关计算、然后发送更多查询给服务器。如果客户端和数据库服务器不在同一台机器上,那么这个过程还会引起进程间通信并且将带来网络负担。 通过PL/SQL,可以将一整块计算和一系列查询分组在数据库服务器内部,这样就有了一种过程语言的能力并且使SQL更易用,同时能节省客户端/服务器通信开销。 客户端和服务器之间的额外往返通信被消除。 客户端不需要的中间结果不必被整理或者在服务器和客户端之间传送。 多轮的查询解析可以被避免。 PL/SQL可以使用SQL中所有的数据类型、操作符和函数。应用PL/SQL创建函数的语法为CREATE FUNCTION。 PL/SQL是一种可载入的过程语言。其应用方法与存储过程相似,但存储过程无返回值,PL/SQL语言函数有返回值。 父主题: 用户自定义函数
  • GS_DB_PRIVILEGE GS_DB_PRIVILEGE系统表记录ANY权限的授予情况,每条记录对应一条授权信息。 表1 GS_DB_PRIVILEGE字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 roleid oid 用户标识。 privilege_type text 用户拥有的ANY权限,取值参考表1。 admin_option boolean 是否具有privilege_type列记录的ANY权限的再授权权限。 t:表示具有。 f:表示不具有。 父主题: 系统表
  • 参数说明 name 一个需要修改的现有的类型的名称(可以有模式修饰) 。 new_name 该类型的新名称。 new_owner 新所有者的用户名 。 new_schema 该类型的新模式 。 attribute_name 拟增加、更改或删除的属性的名称。 new_attribute_name 拟改名的属性的新名称。 data_type 拟新增属性的数据类型或是拟更改的属性的新类型名。 new_enum_value 枚举类型新增加的标签值,是一个非空的长度不超过63个字节的字符串。 neighbor_enum_value 一个已有枚举标签值,新值应该被增加在紧接着该枚举值之前或者之后的位置上。 existing_enum_value 现有的要重命名的枚举值,是一个非空的长度不超过63个字节的字符串 CASCADE 自动级联更新需更新类型以及相关联的记录和继承它们的子表。 RESTRICT 如果需联动更新类型是已更新类型的关联记录,则拒绝更新。这是缺省选项。 ADD ATTRIBUTE、DROP ATTRIBUTE和ALTER ATTRIBUTE选项可以组合成一个列表同时处理。 例如,在一条命令中同时增加几个属性或是更改几个属性的类型是可以实现的。 要修改一个类型的模式,必须在新模式上拥有CREATE权限。 要修改所有者,必须是新的所有角色的直接或间接成员, 并且该成员必须在此类型的模式上有CREATE权限。 (这些限制强制了修改所有者不会做任何通过删除和重建类型不能做的事情。 不过,系统管理员可以以任何方式修改任意类型的所有权。) 要增加一个属性或是修改一个属性的类型,也必须有该类型的USAGE权限。
共100000条
提示

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