华为云用户手册

  • 参数说明 no 不使用Partition-wise Scan查询改写。 @tablename 进行Partition-wise Scan的分区表,不可省略。 partitionwisescan 使用Partition-wise Scan对分区表进行并发扫描。 partitionwisescan只支持SMP场景下的分区表的扫描,支持SeqScan、IndexScan、IndexonlyScan、ImcvScan。
  • 返回值 PQresultStatus:命令执行结果的枚举,包括: 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 PQresultStatus可以返回下面数值之一: PGRES_EMPTY_QUERY 发送给服务器的字串是空的。 PGRES_COMMAND_OK 成功完成一个不返回数据的命令。 PGRES_TUPLES_OK 成功执行一个返回数据的查询(比如SELECT或者SHOW)。 PGRES_COPY_OUT (从服务器)Copy Out (复制出)数据传输开始。 PGRES_COPY_IN Copy In(复制入)(到服务器)数据传输开始。 PGRES_BAD_RESPONSE 服务器的响应无法理解。 PGRES_NONFATAL_ERROR 发生了一个非致命错误(通知或者警告)。 PGRES_FATAL_ERROR 发生了一个致命错误。 PGRES_COPY_BOTH 复制入/出(到和从服务器)数据传输开始。这个特性当前只用于流复制, 所以这个状态不会在普通应用中发生。 PGRES_SINGLE_TUPLE PGresult包含一个来自当前命令的结果元组。 这个状态只在查询选择了单行模式时发生
  • PG_INDEXES PG_INDEXES视图显示数据库中每个索引的信息。 表1 PG_INDEXES字段 名称 类型 引用 描述 schemaname name PG_NAMESPACE.nspname 包含表和索引的模式的名称。 tablename name PG_CLASS.relname 此索引所在的表的名称。 indexname name PG_CLASS.relname 索引的名称。 tablespace name PG_TABLESPACE.nspname 包含索引的表空间的名称。 indexdef text - 索引定义(一个重建的CREATE INDEX命令)。 父主题: 其他系统视图
  • 接口介绍 根据输入的参数,返回目标数据块中行的最后修改时间等信息,用于直观浏览每一行被判定为冷、热行的依据。该接口属于运维类接口,不做可见性判断,即传入的ctid为已删除的行时,该接口依然会返回当前行在页面上最新的状态。 表1 DBE_HEAT_MAP 接口名称 描述 ROW_HEAT_MAP 根据对象所属Schema、数据对象名称、数据对象分区名及ctid获取行的最后修改时间等信息。 DBE_HEAT_MAP.ROW_HEAT_MAP 根据对象所属Schema、数据对象名称、数据对象分区名及ctid获取行的最后修改时间等信息,原型为: 1 2 3 4 5 6 BE_HEAT_MAP.ROW_HEAT_MAP( OWNER IN VARCHAR2, SEGMENT_NAME IN VARCHAR2, PARTITION_NAME IN VARCHAR2 DEFAULT NULL, CTID IN TEXT, V_DEBUG IN BOOL DEFAULT FALSE) 表2 DBE_HEAT_MAP.ROW_HEAT_MAP接口参数说明 参数 描述 OWNER 数据对象所属schema。 SEGMENT_NAME 数据对象名称。 PARTITION_NAME 数据对象分区名,可选参数,默认为NULL。 CTID 目标行的ctid,即block_id或row_id。 V_DEBUG debug调试,增加日志打印。 表3 DBE_HEAT_MAP.ROW_HEAT_MAP输出参数 参数 描述 OWNER 数据对象的所有者。 SEGMENT_NAME 数据对象名称。 PARTITION_NAME 数据对象分区名称,可选参数。 TABLESPACE_NAME 数据所属的表空间名称。 FILE_ID 行所属的绝对文件ID。 RELATIVE_FNO 行所属的相对文件ID( GaussDB 中无此逻辑,因此取值同上)。 CTID 行的ctid,即block_id或row_id。 WRITETIME 行的最后修改时间。 DBE_HEAT_MAP.ROW_HEAT_MAP 接口只支持 分布式数据库 中数据节点(DN),其他节点暂不支持。
  • 参数说明 target_role 已有角色的名称。如果省略FOR ROLE/USER,则缺省值为当前角色/用户。 取值范围:已有角色的名称。 schema_name 现有模式的名称。 target_role必须有schema_name的CREATE权限。 取值范围:现有模式的名称。 role_name 被授予或者取消权限角色的名称。 取值范围:已存在的角色名称。 如果想删除一个被赋予了默认权限的角色,有必要恢复改变的缺省权限或者使用DROP OWNED BY来为角色脱离缺省的权限记录。
  • 示例 --创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --将创建在模式tpcds里的所有表(和视图)的SELECT权限授予每一个用户。 gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT SELECT ON TABLES TO PUBLIC; --创建用户普通用户jack。 gaussdb=# CREATE USER jack PASSWORD '********'; --将tpcds下的所有表的插入权限授予用户jack。 gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds GRANT INSERT ON TABLES TO jack; --将tpcds下由jack创建的所有表的插入权限授予用户jack。 gaussdb=# GRANT USAGE,CREATE ON SCHEMA tpcds TO jack; gaussdb=# ALTER DEFAULT PRIVILEGES FOR ROLE jack IN SCHEMA tpcds GRANT INSERT ON TABLES TO jack; --撤销上述权限。 gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE SELECT ON TABLES FROM PUBLIC; gaussdb=# ALTER DEFAULT PRIVILEGES IN SCHEMA tpcds REVOKE INSERT ON TABLES FROM jack; --删除用户jack。 gaussdb=# DROP USER jack CASCADE; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds;
  • 语法格式 ALTER DEFAULT PRIVILEGES [ FOR { ROLE | USER } target_role [, ...] ] [ IN SCHEMA schema_name [, ...] ] abbreviated_grant_or_revoke; 其中abbreviated_grant_or_revoke子句用于指定对哪些对象进行授权或回收权限。 grant_on_tables_clause | grant_on_sequences_clause | grant_on_functions_clause | grant_on_types_clause | grant_on_client_master_keys_clause | grant_on_column_encryption_keys_clause | revoke_on_tables_clause | revoke_on_sequences_clause | revoke_on_functions_clause | revoke_on_types_clause | revoke_on_client_master_keys_clause | revoke_on_column_encryption_keys_clause 其中grant_on_tables_clause子句用于对表授权。 GRANT { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFEREN CES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] } ON TABLES TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_sequences_clause子句用于对序列授权。 1 2 3 4 5 GRANT { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON SEQUENCES TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_functions_clause子句用于对函数授权。 GRANT { { EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON FUNCTIONS TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_types_clause子句用于对类型授权。 GRANT { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TYPES TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_client_master_keys_clause子句用于对客户端主密钥授权。 GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } ON CLIENT_MASTER_KEYS TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中grant_on_column_encryption_keys_clause子句用于对列加密密钥授权。 GRANT { { USAGE | DROP } [, ...] | ALL [ PRIVILEGES ] } ON COLUMN_ENCRYPTION_KEYS TO { [ GROUP ] role_name | PUBLIC } [, ...] [ WITH GRANT OPTION ] 其中revoke_on_tables_clause子句用于回收表对象的权限。 REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | ALTER | DROP | COMMENT | INDEX | VACUUM } [, ...] | ALL [ PRIVILEGES ] } ON TABLES FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] 其中revoke_on_sequences_clause子句用于回收序列的权限。 1 2 3 4 5 6 REVOKE [ GRANT OPTION FOR ] { { SELECT | UPDATE | USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON SEQUENCES FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] 其中revoke_on_functions_clause子句用于回收函数的权限。 REVOKE [ GRANT OPTION FOR ] { {EXECUTE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON FUNCTIONS FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ] 其中revoke_on_types_clause子句用于回收类型的权限。 REVOKE [ GRANT OPTION FOR ] { { USAGE | ALTER | DROP | COMMENT } [, ...] | ALL [ PRIVILEGES ] } ON TYPES FROM { [ GROUP ] role_name | PUBLIC } [, ...] [ CASCADE | RESTRICT | CASCADE CONSTRAINTS ]
  • MY_ROLE_PRIVS MY_ROLE_PRIVS视图显示授予当前用户角色(包括public角色)的权限的信息。默认所有用户都可以访问。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 MY_ROLE_PRIVS字段 名称 类型 描述 grantee character varying(128) 被授予权限的用户或角色名称。 granted_role character varying(128) 被授予的角色。 admin_option character varying(3) 该授权是否包含ADMIN选项。 YES:包含ADMIN选项。 NO:不包含ADMIN选项。 delegate_option character varying(3) 暂不支持,值为NULL。 default_role character varying(3) 暂不支持,值为NULL。 os_granted character varying(3) 暂不支持,值为NULL。 common character varying(3) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 父主题: 用户和权限管理
  • WLM_WORKLOAD_RUNTIME WLM_WORKLOAD_RUNTIME视图显示当前用户在CN上执行作业时当前CN的作业状态信息,如表1所示。 表1 WLM_WORKLOAD_RUNTIME字段 名称 类型 描述 node_name text 作业执行所在CN的名称。 thread_id bigint 后端线程ID。 processid integer 后端线程的pid。 time_stamp bigint 语句执行的开始时间。 username name 登录到该后端的用户名。 memory integer 语句所需的内存大小。 active_points integer 语句在资源池上消耗的资源点数。 max_points integer 语句在资源池上消耗的总资源点数。 priority integer 作业的优先级。 resource_pool text 作业所在资源池。 status text 作业执行的状态,包括: pending: 阻塞状态。 running:执行状态。 finished:结束状态。 aborted:终止状态。 unknown:未知状态。 control_group text 作业所使用的Cgroups。 enqueue text 作业的排队信息,包括: GLOBAL:全局排队。 RESPOOL:资源池排队。 ACTIVE:不排队。 query text 正在执行的语句。 node_group text node group名称。 父主题: Workload Manager
  • 以UDS方式连接 Unix domain socket用于同一主机上不同进程间的数据交换,通过添加junixsocket获取套接字工厂使用。 前置条件:引用junixsocket-core-XXX.jar、junixsocket-common-XXX.jar、junixsocket-native-common-XXX.jar,XXX为版本号,引用的这些jar包版本号需要一致。 使用NonValidatingFactory通道连接数据库的命令如下: 导入java.sql.Connection、java.sql.DriverManager、java.util.Properties。 此外,用户需要根据实际的应用场景,再导入其他的接口和类,详见JDBC接口参考。 import java.sql.Connection; import java.sql.DriverManager; import java.util.Properties; 指定数据库的用户名和密码。 用户名和密码直接写到代码中有很大的安全风险,建议在环境变量中存放。并将用户名和密码设置为Properties对象的属性值。 String userName = System.getenv("EXAMPLE_USERNAME_ENV"); String password = System.getenv("EXAMPLE_PASSWORD_ENV"); Properties properties = new Properties(); properties.setProperty("user", userName); properties.setProperty("password", password); 加载驱动。 在代码运行工具(如IDE)中添加gaussdbjdbc.jar包。 执行以下命令加载数据库驱动程序“com.huawei.gaussdb.jdbc.Driver”。 String driver = "com.huawei.gaussdb.jdbc.Driver"; Class.forName(driver); 指定数据库的$ip、$port、database、socketFactory和socketFactoryArg。 $ip和$port需要用户自行修改,连接主机名database必须设置为“localhost”,socketFactory设置为org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg,socketFactoryArg设置为[path-to-the-unix-socket],实现以UDS方式连接数据库。socketFactory和socketFactoryArg参数的具体说明,详见socketFactory和socketFactoryArg。 socketFactoryArg参数配置根据真实路径进行配置,与GUC参数unix_socket_directory的值保持一致。 Connection conn = DriverManager.getConnection("jdbc:gaussdb://$ip:$port/database?socketFactory=org.newsclub.net.unix" + ".AFUNIXSocketFactory$FactoryArg&socketFactoryArg=[path-to-the-unix-socket]",properties); System.out.println("Connection Successful!"); 父主题: 连接数据库
  • PG_STAT_USER_INDEXES PG_STAT_USER_INDEXES视图显示数据库中用户自定义普通表和toast表的索引状态信息。具体字段信息如表1所示。 表1 PG_STAT_USER_INDEXES字段 名称 类型 描述 relid oid 该索引所在的表的OID。 indexrelid oid 索引的OID。 schemaname name 索引的模式名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan bigint 索引上开始的索引扫描数。 idx_tup_read bigint 该索引上扫描返回的索引项数。 idx_tup_fetch bigint 使用该索引的简单索引扫描在原表中抓取的活跃行数。 父主题: 其他系统视图
  • GS_ILM_TASKDETAIL GS_ILM_TASKDETAIL系统表记录一次指定数据对象与策略的评估结果。 表1 GS_ILM_TASKDETAIL字段 名称 类型 描述 pidx integer 策略序号。 objoid oid 数据对象oid。 objtype "char" 数据对象类型。 taskoid bigint 所属ADO Task的oid。 evalresult smallint 评估结果: 0:SELECTED FOR EXECUTION,评估通过。 1:PRECONDITION NOT SATISFIED,条件不满足。 2:JOB ALREADY EXISTS,Job已存在。 jobname text 评估通过后生成的ADO Job Name关联系统表GS_ILM_JOBDETAIL的jobname字段。 父主题: OLTP表压缩
  • 异步命令处理 PQexec函数对普通的同步应用里提交命令已经足够使用。但是它却有几个缺陷,而这些缺陷可能对某些用户很重要。 PQexec等待命令结束,而应用可能还有其它的工作要做(比如维护用户界面等),此时并不希望PQexec阻塞应用。 因为客户端应用在等待结果的时候是处于挂起状态的,所以应用很难判断它是否该尝试结束正在进行的命令。 PQexec只能返回一个PGresult结构。如果提交的命令字符串包含多个SQL命令,除了最后一个PGresult以外都会被PQexec丢弃。 PQexec总是收集命令的整个结果,将其缓存在一个PGresult中。虽然这为应用简化了错误处理逻辑,但是对于包含多行的结果是不切实际的。 不想受到这些限制的应用可以改用下面的函数,这些函数也是构造PQexec的函数:PQsendQuery和PQgetResult。PQsendQueryParams、PQsendPrepare、PQsendQueryPrepared也可以和PQgetResult一起使用。 PQsendQuery PQsendQueryParams PQsendPrepare PQsendQueryPrepared PQflush 父主题: libpq接口参考
  • 注意事项 只有SERVER的所有者或者被授予了SERVER的ALTER权限的用户才可以执行ALTER SERVER命令,系统管理员默认拥有该权限。但要修改SERVER的所有者,当前用户必须是该SERVER的所有者或者系统管理员,且该用户是新所有者角色的成员。 OPTIONS中的敏感字段(如password、secret_access_key)在使用多层引号时,语义和不带引号的场景是不同的,因此不会被识别为敏感字段进行脱敏。
  • 语法格式 修改外部服务的参数。 ALTER SERVER server_name [ VERSION 'new_version' ] [ OPTIONS ( {[ ADD | SET | DROP ] option ['value']} [, ... ] ) ]; 在OPTIONS选项里,ADD、SET和DROP指定要执行的操作,未指定时默认为ADD操作。option和value为对应操作的参数。 修改外部服务的所有者。 1 2 ALTER SERVER server_name OWNER TO new_owner; 修改外部服务的名称。 ALTER SERVER server_name RENAME TO new_name;
  • 示例 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 --创建my_server。 gaussdb=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw; --修改外部服务器的名称。 gaussdb=# ALTER SERVER my_server RENAME TO my_server_1; --创建用户。 gaussdb=# CREATE USER jack PASSWORD '********'; --修改外部服务器的所有者。 gaussdb=# ALTER SERVER my_server_1 OWNER TO jack; --增加外部服务器中dbname、dbuser信息。 gaussdb=# ALTER SERVER my_server_1 OPTIONS(ADD dbname 'test',dbuser' test_user'); --查询外部服务器信息。 gaussdb=# SELECT * FROM pg_foreign_server WHERE srvname='my_server_1'; srvname | srvowner | srvfdw | srvtype | srvversion | srvacl | srvoptions -------------+----------+--------+---------+------------+--------+----------------------------------- my_server_1 | 25158 | 16065 | | | | {dbname=test,"dbuser= test_user"} (1 row) --修改外部服务器中dbname名称为‘db_test’。 gaussdb=# ALTER SERVER my_server_1 OPTIONS (SET dbname 'db_test'); --查询外部服务器信息。 gaussdb=# SELECT srvname,srvoptions FROM pg_foreign_server WHERE srvname='my_server_1'; srvname | srvoptions -------------+-------------------------------------- my_server_1 | {dbname=db_test,"dbuser= test_user"} (1 row) --删除外部服务器中dbname信息。 gaussdb=# ALTER SERVER my_server_1 OPTIONS (DROP dbname); --查询外部服务器信息。 gaussdb=# SELECT srvname,srvoptions FROM pg_foreign_server WHERE srvname='my_server_1'; srvname | srvoptions -------------+----------------------- my_server_1 | {"dbuser= test_user"} (1 row) --删除my_server_1。 gaussdb=# DROP SERVER my_server_1; --删除用户。 gaussdb=# DROP USER jack;
  • 参数说明 server_name 所修改的server的名称。 new_version 修改后server的新版本名称。 OPTIONS 更改该服务器的选项。ADD、SET和 DROP指定要执行的动作。如果没有显式地指定操作, 将会假定为ADD。选项名称必须唯一,名称和值也会使用该服务器的外部数据封装器库进行验证。 除了libpq支持的连接参数外,还额外提供以下参数: fdw_startup_cost 执行一个外表扫描时的启动耗时估算。这个值通常包含建立连接、远端对请求的分析和生成计划的耗时。默认值为100。取值范围为大于0的实数。 fdw_tuple_cost 在远端服务器上对每一个元组进行扫描时的额外消耗。这个值通常表示数据在server间传输的额外消耗。默认值为0.01。取值范围为大于0的实数。 new_owner server的所有者。 new_name 修改后server的新名称。
  • DBE_PLDEBUGGER.local_debug_server_info 用于查找当前连接中已经turn_on的存储过程oid。便于用户确认在调试哪些存储过程,需要通过funcoid和pg_proc配合使用,如表1所示。 表1 local_debug_server_info 返回值列表 名称 类型 描述 nodename OUT text 节点名称。 port OUT bigint 端口号。 funcoid OUT oid 存储过程oid。 父主题: DBE_PLDEBUGGER Schema
  • MY_TYPE_ATTRS MY_TYPE_ATTRS视图显示数据库中当前用户所拥有的所有类型的属性。所有用户均可访问该视图,该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_TYPE_ATTRS字段 名称 类型 描述 type_name character varying(128) 数据类型名称。 attr_name character varying(128) 属性名称。 attr_type_mod character varying(7) 属性的类型修饰符: REF POINT attr_type_owner character varying(128) 属性类型的所有者。 attr_type_name character varying(128) 属性类型的名称。 length numeric CHAR属性的长度,或VARCHAR和character varying属性的最大长度。 precision numeric 数字或DECIMAL属性的十进制精度,或FLOAT属性的二进制精度。 scale numeric numeric或DECIMAL属性的小数位。 character_set_name character varying(44) 属性的字符集名称(Char_ CS 或NCHAR_CS)。 attr_no numeric 类型规范或CREATE TYPE语句中指定的属性的语法顺序编号或位置(不用作ID编号)。 inherited character varying(3) 表示属性是否继承自超类型。 YES:表示继承自超类型。 NO:表示没有继承自超类型。 父主题: 其他系统视图
  • 货币类型 货币类型存储带有固定小数精度的货币金额。 表1中显示的范围假设有两位小数。可以以任意格式输入,包括整型、浮点型或者典型的货币格式(如“$1,000.00”)。根据区域字符集,输出一般是最后一种形式。 表1 货币类型 名称 描述 存储空间 范围 money 货币金额 8 字节 -92233720368547758.08 ~ +92233720368547758.07 numeric、int和bigint类型的值可以转换为money类型。如果从real和double precision类型转换到money类型,可以先转换为numeric类型,再转换为money类型,例如: 1 2 3 4 5 gaussdb=# SELECT '12.34'::float8::numeric::money; money -------- $12.34 (1 row) 这种用法是不推荐使用的。浮点数不应该用来处理货币类型,因为小数点的位数可能会导致错误。 money类型的值可以转换为numeric类型而不丢失精度。转换为其他类型可能丢失精度,并且必须通过以下两步来完成: 1 2 3 4 5 gaussdb=# SELECT '52093.89'::money::numeric::float8; float8 ---------- 52093.89 (1 row) 当一个money类型的值除以另一个money类型的值时,结果是double precision(即一个纯数字,而不是money类型);在运算过程中货币单位相互抵消。 父主题: 数据类型
  • SUMMARY_WORKLOAD_SQL_ELAPSE_TIME SUMMARY_WORKLOAD_SQL_ELAPSE_TIME用来统计数据库主节点上workload(业务)负载的SUID(查询/更新/插入/删除)信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 SUMMARY_WORKLOAD_SQL_ELAPSE_TIME字段 名称 类型 描述 node_name name 节点名称。 workload name workload(业务负载)名称。 total_select_elapse bigint 总select的时间花费(单位:微秒)。 max_select_elapse bigint 最大select的时间花费(单位:微秒)。 min_select_elapse bigint 最小select的时间花费(单位:微秒)。 avg_select_elapse bigint 平均select的时间花费(单位:微秒)。 total_update_elapse bigint 总update的时间花费(单位:微秒)。 max_update_elapse bigint 最大update的时间花费(单位:微秒)。 min_update_elapse bigint 最小update的时间花费(单位:微秒)。 avg_update_elapse bigint 平均update的时间花费(单位:微秒)。 total_insert_elapse bigint 总insert的时间花费(单位:微秒)。 max_insert_elapse bigint 最大insert的时间花费(单位:微秒)。 min_insert_elapse bigint 最小insert的时间花费(单位:微秒)。 avg_insert_elapse bigint 平均insert的时间花费(单位:微秒)。 total_delete_elapse bigint 总delete的时间花费(单位:微秒)。 max_delete_elapse bigint 最大delete的时间花费(单位:微秒)。 min_delete_elapse bigint 最小delete的时间花费(单位:微秒)。 avg_delete_elapse bigint 平均delete的时间花费(单位:微秒)。 dbid oid 统计信息所属的数据库id。 父主题: Workload
  • ADM_ARGUMENTS ADM_ARGUMENTS视图显示所有存储过程和函数的参数信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_ARGUMENTS字段 名称 类型 描述 owner character varying(128) 函数或存储过程的所有者。 object_name character varying(128) 函数或存储过程的名称。 package_name character varying(128) 暂不支持,值为NULL。 object_id oid 函数或存储过程的oid。 overload character varying(40) 表示该函数是该名称的第n个重载函数。 subprogram_id numeric 暂不支持,值为NULL。 argument_name character varying(128) 参数名称。 position numeric 该参数在参数列表中的位置。函数返回值的位置默认为0。 sequence numeric 定义参数的顺序。从1开始,返回类型在前,然后是每个参数。 data_level numeric 复合类型参数的嵌套深度。此列的值始终为0,因为每个参数现只显示一行。 data_type character varying(64) 参数的数据类型。 defaulted character varying(1) 参数是否有默认值。 Y:有默认值。 N:没有默认值。 default_value text 暂不支持,值为NULL。 default_length numeric 暂不支持,值为NULL。 in_out character varying(9) 参数出入属性。 IN:入参。 OUT:出参。 IN_OUT:出入参。 VARIADIC:VARIADIC参数。 data_length numeric 暂不支持,值为NULL。 data_precision numeric 暂不支持,值为NULL。 data_scale numeric 暂不支持,值为NULL。 radix numeric 数字的参数基数。smallint、integer、bigint、numeric、float为10,其余值为NULL。 character_set_name character varying(44) 暂不支持,值为NULL。 type_owner character varying(128) 数据类型所有者。 type_name character varying(128) 参数类型名,仅显示自定义类型。 type_subname character varying(128) 暂不支持,值为NULL。 type_link character varying(128) 暂不支持,值为NULL。 type_object_type character varying(7) 由type_owner、type_name和type_subname列描述的类型的类型: TABLE:参数为表类型。 VIEW:参数为视图类型。 其余值为NULL。 pls_type character varying(128) 对于数字类型参数,为参数的PL/SQL类型的名称,否则为空。 char_length numeric 暂不支持,值为NULL。 char_used character varying(1) 暂不支持。 B:varchar,nvarchar2,bpchar,char类型。 NULL:其余类型。 origin_con_id character varying(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 DECLARE v_raw RAW; v_int INTEGER; v_length INTEGER; v_str VARCHAR2; v_double BINARY_DOUBLE; v_float FLOAT4; v_numeric NUMERIC; v_nvarchar2 NVARCHAR2; BEGIN -- INTEGER类型值转RAW类型 SELECT DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,1) INTO v_raw; -- 000000AA SELECT DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,2) INTO v_raw; -- AA000000 SELECT DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,3) INTO v_raw; -- AA000000 -- RAW类型值转INTEGER类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_INTEGER(DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,1),1) INTO v_int; -- 170 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_INTEGER(DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,2),2) INTO v_int; -- 170 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_INTEGER(DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,3),3) INTO v_int; -- 170 -- 求RAW类型值长度 SELECT DBE_RAW.GET_LENGTH(DBE_RAW.CAST_FROM_BINARY_INTEGER_TO_RAW(170,1)) INTO v_length; -- 4 -- VARCHAR2类型值转RAW类型 SELECT DBE_RAW.CAST_FROM_VARCHAR2_TO_RAW('AA') INTO v_raw; -- 4141 -- RAW类型值转VARCHAR2类型 SELECT DBE_RAW.CAST_TO_VARCHAR2('4141') INTO v_str; -- AA -- RAW类型按位或 SELECT DBE_RAW.BIT_OR('0000', '1111') INTO v_raw; -- 1111 -- RAW类型取字串 SELECT DBE_RAW.SUBSTR('ABCD', 1, 2) INTO v_raw; -- ABCD -- RAW类型按位与 SELECT DBE_RAW.BIT_AND('AFF', 'FF0B') INTO v_raw; -- 0A0B -- RAW类型按位取反 SELECT DBE_RAW.BIT_COMPLEMENT('0AFF') INTO v_raw; -- F500 -- RAW类型按位异或 SELECT DBE_RAW.BIT_XOR('AFF', 'FF0B') INTO v_raw; -- F5F4 -- BINARY_DOUBLE类型值转RAW类型 SELECT DBE_RAW.CAST_FROM_BINARY_DOUBLE_TO_RAW(1.0001,1) INTO v_raw; -- 3FF00068DB8BAC71 -- RAW类型值转BINARY_DOUBLE类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_DOUBLE('3FF00068DB8BAC7',1) INTO v_double; -- 1.0001 -- RAW类型转FLOAT4类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_BINARY_FLOAT('40200000',1) INTO v_float; -- 2.5 -- FLOAT4类型转RAW类型 SELECT DBE_RAW.CAST_FROM_BINARY_FLOAT_TO_RAW('2.5',1) INTO v_raw; -- 40200000 -- RAW类型转NUMERIC类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_NUMBER('808002008813') INTO v_numeric; -- 2.5 -- NUMERIC类型转RAW类型 SELECT DBE_RAW.CAST_FROM_NUMBER_TO_RAW('2.5') INTO v_raw; -- 808002008813 -- RAW类型转NVARCHAR2类型 SELECT DBE_RAW.CAST_FROM_RAW_TO_NVARCHAR2('12345678') INTO v_nvarchar2; -- \x124Vx -- RAW类型COMPARE SELECT DBE_RAW.COMPARE('ABCD','AB') INTO v_numeric; -- 2 -- RAW类型CONCAT SELECT DBE_RAW.CONCAT('ABCD','AB') INTO v_raw; -- ABCDAB -- RAW类型CONVERT SELECT DBE_RAW.CONVERT('E695B0', 'GBK','UTF8') INTO v_raw; -- CAFD -- RAW类型COPIES SELECT DBE_RAW.COPIES('ABCD',2) INTO v_raw; -- ABCDABCD -- RAW类型指定位置和长度进行覆盖 SELECT DBE_RAW.OVERLAY('abcef', '12345678123456', 2, 5, '9966') INTO v_raw; -- 120ABCEF999956 -- RAW类型按字节翻转 SELECT DBE_RAW.REVERSE('12345678') INTO v_raw; -- 78563412 -- RAW类型字节转换(无填充码) SELECT DBE_RAW.TRANSLATE('1122112233', '1133','55') INTO v_raw; -- 55225522 -- RAW类型字节转换(有填充码) SELECT DBE_RAW.TRANSLITERATE('1122112233', '55','1133','FFEE') INTO v_raw; -- 55225522FF -- RAW类型两个字节间的所有字节 SELECT DBE_RAW.XRANGE('00','03') INTO v_raw; -- 00010203 END; / ANONYMOUS BLOCK EXECUTE
  • GS_ALL_PREPARED_STATEMENTS GS_ALL_PREPARED_STATEMENTS视图显示所有会话中可用的预备语句的信息。默认只有系统管理员权限才可以访问。 表1 GS_ALL_PREPARED_STATEMENTS字段 名称 类型 描述 pid bigint 后台线程ID。 说明: 线程池模式下pid显示的是当前会话绑定的线程ID,当会话在不同线程上执行时pid会随之改变。线程池模式下statement与sessionid相关联,与pid无关联,关联查询时建议使用sessionid。 sessionid bigint 当前会话ID。 global_sessionid text 全局会话ID。 name text 预备语句的标识符。 statement text 创建该预备语句的查询字符串。对于从SQL创建的预备语句而言是客户端提交的PREPARE语句;对于通过前/后端协议创建的预备语句而言是预备语句自身的文本。 prepare_time timestamp with time zone 创建该预备语句的时间戳。 parameter_types regtype[] 该预备语句期望的参数类型,以regtype类型的数组格式出现。与该数组元素相对应的OID可以通过把regtype转换为OID值得到。 from_sql boolean 如果该预备语句是通过PREPARE语句创建的则为true。 如果是通过前/后端协议创建的则为false。 父主题: 其他系统视图
  • GLOBAL_OPERATOR_HISTORY GLOBAL_OPERATOR_HISTORY系统视图显示的是当前用户在数据库主节点上执行作业结束后的算子的相关记录,如表1所示。 表1 GLOBAL_OPERATOR_HISTORY的字段 名称 类型 描述 queryid bigint 语句执行使用的内部query_id。 pid bigint 后端线程id。 plan_node_id integer 查询对应的执行计划的plan node id。 plan_node_name text 对应于plan_node_id的算子的名称。 start_time timestamp with time zone 该算子处理第一条数据的开始时间。 duration bigint 该算子到结束时候总的执行时间(ms)。 query_dop integer 当前算子执行时的并行度。 estimated_rows bigint 优化器估算的行数信息。 tuple_processed bigint 当前算子返回的元素个数。 min_peak_memory integer 当前算子在数据库节点上的最小内存峰值(MB)。 max_peak_memory integer 当前算子在数据库节点上的最大内存峰值(MB)。 average_peak_memory integer 当前算子在数据库节点上的平均内存峰值(MB)。 memory_skew_percent integer 当前算子在数据库节点间的内存使用倾斜率。 min_spill_size integer 若发生下盘,数据库节点上下盘的最小数据量(MB),默认为0。 max_spill_size integer 若发生下盘,数据库节点上下盘的最大数据量(MB),默认为0。 average_spill_size integer 若发生下盘,数据库节点上下盘的平均数据量(MB),默认为0。 spill_skew_percent integer 若发生下盘,数据库节点间下盘倾斜率。 min_cpu_time bigint 该算子在数据库节点上的最小执行时间(ms)。 max_cpu_time bigint 该算子在数据库节点上的最大执行时间(ms)。 total_cpu_time bigint 该算子在数据库节点上的总执行时间(ms)。 cpu_skew_percent integer 数据库节点间执行时间的倾斜率。 warning text 主要显示如下几类告警信息: Sort/SetOp/HashAgg/HashJoin spill Spill file size large than 256MB Broadcast size large than 100MB Early spill Spill times is greater than 3 Spill on memory adaptive Hash table conflict 父主题: Operator
  • 文本检索调试函数 ts_debug([ config regconfig, ] document text, OUT alias text, OUT description text, OUT token text, OUT dictionaries regdictionary[], OUT dictionary regdictionary, OUT lexemes text[]) 描述:测试一个配置。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 9 gaussdb=# SELECT ts_debug('english', 'The Brightest supernovaes'); ts_debug ----------------------------------------------------------------------------------- (asciiword,"Word, all ASCII",The,{english_stem},english_stem,{}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",Brightest,{english_stem},english_stem,{brightest}) (blank,"Space symbols"," ",{},,) (asciiword,"Word, all ASCII",supernovaes,{english_stem},english_stem,{supernova}) (5 rows) ts_lexize(dict regdictionary, token text) 描述:测试一个数据字典。 返回类型:text[] 示例: 1 2 3 4 5 gaussdb=# SELECT ts_lexize('english_stem', 'stars'); ts_lexize ----------- {star} (1 row) ts_parse(parser_name text, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 gaussdb=# SELECT ts_parse('default', 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar) (4 rows) ts_parse(parser_oid oid, document text, OUT tokid integer, OUT token text) 描述:测试一个解析。 返回类型:setof record 示例: 1 2 3 4 5 6 7 8 gaussdb=# SELECT ts_parse(3722, 'foo - bar'); ts_parse ----------- (1,foo) (12," ") (12,"- ") (1,bar) (4 rows) ts_token_type(parser_name text, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 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 gaussdb=# SELECT ts_token_type('default'); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity") (23 rows) ts_token_type(parser_oid oid, OUT tokid integer, OUT alias text, OUT description text) 描述:获取分析器定义的记号类型。 返回类型:setof record 示例: 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 gaussdb=# SELECT ts_token_type(3722); ts_token_type -------------------------------------------------------------- (1,asciiword,"Word, all ASCII") (2,word,"Word, all letters") (3,numword,"Word, letters and digits") (4,email,"Email address") (5,url,URL) (6,host,Host) (7,sfloat,"Scientific notation") (8,version,"Version number") (9,hword_numpart,"Hyphenated word part, letters and digits") (10,hword_part,"Hyphenated word part, all letters") (11,hword_asciipart,"Hyphenated word part, all ASCII") (12,blank,"Space symbols") (13,tag,"XML tag") (14,protocol,"Protocol head") (15,numhword,"Hyphenated word, letters and digits") (16,asciihword,"Hyphenated word, all ASCII") (17,hword,"Hyphenated word, all letters") (18,url_path,"URL path") (19,file,"File or path name") (20,float,"Decimal notation") (21,int,"Signed integer") (22,uint,"Unsigned integer") (23,entity,"XML entity") (23 rows) ts_stat(sqlquery text, [ weights text, ] OUT word text, OUT ndoc integer, OUT nentry integer) 描述:获取tsvector列的统计数据。 返回类型:setof record 示例: 1 2 3 4 5 6 gaussdb=# SELECT ts_stat('select ''hello world''::tsvector'); ts_stat ------------- (world,1,1) (hello,1,1) (2 rows)
  • 示例 重命名表空间。 --创建表空间。 gaussdb=# CREATE TABLESPACE tbs_data1 RELATIVE LOCATION 'tablespace1/tbs_data1'; --重命名表空间。 gaussdb=# ALTER TABLESPACE tbs_data1 RENAME TO tbs_data2; --查询。 gaussdb=# \db tbs_data2 List of tablespaces Name | Owner | Location -----------+-------+----------------------- tbs_data2 | omm | tablespace1/tbs_data1 设置表空间所有者。 示例: --创建用户。 gaussdb=# CREATE USER test PASSWORD '********'; --修改表空间所有者。 gaussdb=# ALTER TABLESPACE tbs_data2 OWNER TO test; --查看。 gaussdb=# \db tbs_data2 List of tablespaces Name | Owner | Location -----------+-------+----------------------- tbs_data2 | test | tablespace1/tbs_data1 (1 row) 设置表空间属性。 示例: --修改seq_page_cost的值。 gaussdb=# ALTER TABLESPACE tbs_data2 SET (seq_page_cost = 10); --查看。 gaussdb=# SELECT * FROM pg_tablespace WHERE spcname = 'tbs_data2'; spcname | spcowner | spcacl | spcoptions | spcmaxsize | relative -----------+----------+--------+--------------------+------------+---------- tbs_data2 | 16778 | | {seq_page_cost=10} | | t (1 row) 重置表空间属性。 --将seq_page_cost参数的值重置为缺省值。 gaussdb=# ALTER TABLESPACE tbs_data2 RESET (seq_page_cost); --查看。 gaussdb=# SELECT * FROM pg_tablespace WHERE spcname = 'tbs_data2'; spcname | spcowner | spcacl | spcoptions | spcmaxsize | relative -----------+----------+--------+------------+------------+---------- tbs_data2 | 16778 | | | | t (1 row) 设置表空间限额。 示例: --设置表空间最大使用的空间。 gaussdb=# ALTER TABLESPACE tbs_data2 RESIZE MAXSIZE '10G'; --查看。 gaussdb=# SELECT * FROM pg_tablespace WHERE spcname = 'tbs_data2'; spcname | spcowner | spcacl | spcoptions | spcmaxsize | relative -----------+----------+--------+------------+------------+---------- tbs_data2 | 16778 | | | 10485760 K | t (1 row) --删除表空间。 gaussdb=# DROP TABLESPACE tbs_data2; --删除用户。 gaussdb=# DROP USER test;
  • 参数说明 tablespace_name 要修改的表空间。 取值范围:已存在的表空间名。 new_tablespace_name 表空间的新名称,新名称不能以"PG_"开头。 取值范围:字符串,符合标识符命名规范。 new_owner 表空间的新所有者。 取值范围:已存在的用户名。 tablespace_option 设置或者重置表空间的参数。 取值范围: seq_page_cost:设置优化器计算一次顺序获取磁盘页面的开销。缺省为1.0。 random_page_cost:设置优化器计算一次非顺序获取磁盘页面的开销。缺省为4.0。 random_page_cost是相对于seq_page_cost的取值,等于或者小于seq_page_cost时毫无意义。 默认值为4.0的前提条件是,优化器采用索引来扫描表数据,并且表数据在cache中命中率可以90%左右。 如果表数据空间要比物理内存小,那么减小该值到一个适当水平;相反地,如果表数据在cache中命中率要低于90%,那么适当增大该值。 如果采用了类似于SSD的随机访问代价较小的存储器,可以适当减小该值,以反映真正的随机扫描代价。 value的取值范围:浮点类型的正数。 RESIZE MAXSIZE 重新设置表空间限额的数值。 取值范围: UNLIMITED,该表空间不设置限额。 由space_size来确定,其格式参考CREATE TABLESPACE。 若调整后的限额值比当前表空间实际使用的值要小,调整操作可以执行成功,后续用户需要将该表空间的使用值降低到新限额值之下,才能继续往该表空间中写入数据。
  • 语法格式 重命名表空间的语法。 1 2 ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name; 设置表空间所有者的语法。 1 2 ALTER TABLESPACE tablespace_name OWNER TO new_owner; 设置表空间属性的语法。 1 2 ALTER TABLESPACE tablespace_name SET ( { tablespace_option = value } [, ... ] ); 重置表空间属性的语法。 1 2 ALTER TABLESPACE tablespace_name RESET ( { tablespace_option } [, ... ] ); 设置表空间限额的语法。 1 2 ALTER TABLESPACE tablespace_name RESIZE MAXSIZE { UNLIMITED | 'space_size'};
  • 注意事项 只有表空间的所有者或者被赋予了表空间ALTER权限的用户有权限执行ALTER TABLESPACE命令,系统管理员默认拥有此权限。但要修改表空间的所有者,当前用户必须是该表空间的所有者或系统管理员,且该用户是new_owner角色的成员。 对行存表的ALTER TABLESPACE操作不支持在事务块中执行。 要修改表空间的所有者A为B,则A必须是B的直接或者间接成员。 如果new_owner与old_owner一致,此处不再校验当前执行操作的用户是否具有修改权限,而直接显示ALTER成功。
共100000条