华为云用户手册

  • 算子级调优介绍 一个查询语句要经过多个算子步骤才会输出最终的结果。由于个别算子耗时过长导致整体查询性能下降的情况比较常见。这些算子是整个查询的瓶颈算子。通用的优化手段是EXPLAIN ANALYZE/PERFORMANCE命令查看执行过程的瓶颈算子,然后进行针对性优化。 如下面的执行过程信息中,Hashagg算子的执行时间占总时间的:(51016-13535)/ 56476 ≈66%,此处Hashagg算子就是这个查询的瓶颈算子,在进行性能优化时应当优先考虑此算子的优化。
  • 语法格式 CREATE PACKAGE SPECIFICATION语法格式。 CREATE [ OR REPLACE ] PACKAGE [ schema ] package_name [ invoker_rights_clause ] { IS | AS } item_list_1 END package_name; invoker_rights_clause可以被声明为AUTHID DEFINER或者AUTHID CURRENT_USER,分别为定义者权限和调用者权限。 item_list_1可以为声明的变量或者存储过程以及函数。 PACKAGE SPECIFICATION(包头)声明了包内的公有变量、函数、异常等,可以被外部函数或者存储过程调用。在PACKAGE SPECIFICATION中只能声明存储过程,函数,不能定义存储过程或者函数。 CREATE PACKAGE BODY语法格式。 CREATE [ OR REPLACE ] PACKAGE BODY [ schema ] package_name { IS | AS } declare_section [ initialize_section ] END package_name; PACKAGE BODY(包体内)定义了包的私有变量,函数等。如果变量或者函数没有在PACKAGE SPECIFICATION中声明过,那么这个变量或者函数则为私有变量或者函数。 PACKAGE BODY也可以声明实例化部分,用来初始化package,详见示例。
  • 示例 CREATE PACKAGE SPECIFICATION示例: gaussdb=# CREATE OR REPLACE PACKAGE emp_bonus IS var1 int:=1;--公有变量。 var2 int:=2; PROCEDURE testpro1(var3 int);--公有存储过程,可以被外部调用。 END emp_bonus; / CREATE PACKAGE BODY示例: gaussdb=# drop table if exists test1; gaussdb=# create or replace package body emp_bonus is var3 int:=3; var4 int:=4; procedure testpro1(var3 int) is begin create table if not exists test1(col1 int); insert into test1 values(var1); insert into test1 values(var4); end; begin --实例化开始。 var4:=9; testpro1(var4); end emp_bonus; / ALTER PACKAGE OWNER示例: --将PACKAGE emp_bonus的所属者改为omm。 gaussdb=# ALTER PACKAGE emp_bonus OWNER TO omm; 调用PACKAGE示例: --使用call调用package存储过程。 gaussdb=# call emp_bonus.testpro1(1); --使用select调用package存储过程。 gaussdb=# select emp_bonus.testpro1(1); --匿名块里调用package存储过程。 gaussdb=# begin emp_bonus.testpro1(1); end; /
  • 注意事项 在package specification中声明过的函数或者存储过程,必须在package body中找到定义。 在实例化中,无法调用带有commit/rollback的存储过程。 创建存储过程时,仅对CREATE的存储过程或PACKAGE本身加写锁,仅对执行过程中编译、执行会对函数和函数依赖的PACKAGE均加读锁。 不能在Trigger中调用package函数。 不能在外部SQL中直接使用package当中的变量。 不允许在package外部调用package的私有变量和存储过程。 不支持其它存储过程不支持的用法,例如,在function中不允许调用commit/rollback,则package的function中同样无法调用commit/rollback。 不支持schema与package同名。 只支持A风格的存储过程和函数定义。 不支持package内有同名变量,包括包内同名参数。 package的全局变量为session级,不同session之间package的变量不共享。 package中调用自治事务的函数,不允许使用package中的cursor变量,以及递归的使用package中cursor变量的函数。 package中不支持声明ref cursor变量。 package默认为SECURITY INVOKER权限,如果想将默认行为改为SECURITY DEFINER权限,需要设置guc参数behavior_compat_options='plsql_security_definer'。 被授予CREATE ANY PACKAGE权限的用户,可以在public模式和用户模式下创建PACKAGE。 如果需要创建带有特殊字符的package名,特殊字符中不能含有空格,并且最好设置GUC参数behavior_compat_options="skip_insert_gs_source",否则可能引起报错。 package创建时依赖未定义对象,如参数behavior_compat_options='plpgsql_dependency'打开,创建可执行,通过WARNING提示;如参数未打开,package创建不可执行。 如package中A风格函数已被视图直接依赖,且参数behavior_compat_options='plpgsql_dependency'打开,再次创建包体后视图可正常访问;如参数未打开,视图访问失败。 创建package函数时,其参数默认值不支持含有变量。 包头在PG_OBJECT的类型为'S'(SPECIFICATION简称),包体在PG_OBJECT中的类型为'B'(BODY简称),当创建的PACKAGE对象失效时,可以通过PG_OBJECT中的VALID字段来查找PACKAGE失效对象的OID,并且使用“ALTER PACKAGE PKG_NAME COMPILE”来重新编译PACKAGE,使其有效。 在创建package内的函数时,如果函数名字为schema.func或package.func形式,则只会取func的名字,前面的Schema声明或者Package声明无效,如果需要默认禁用这种行为,可以设置guc参数behavior_compat_options='forbid_package_function_with_prefix'
  • PG_SHADOW PG_SHADOW视图显示了所有在PG_AUTHID中标记了rolcanlogin的角色的属性,只有系统管理员权限才可以访问此系统视图。 该视图的信息与PG_USER是基本一致的,区别在于后者对口令做了敏感化处理,统一显示为********。 表1 PG_SHADOW字段 名称 类型 引用 描述 usename name PG_AUTHID.rolname 用户名。 usesysid oid PG_AUTHID.oid 用户的ID。 usecreatedb boolean - 用户是否可以创建数据库。 t(true):表示是。 f(false):表示否。 usesuper boolean - 用户是否是系统管理员。 t(true):表示是。 f(false):表示否。 usecatupd boolean - 用户是否可以更新视图。即使是系统管理员,如果这个字段不是真,也不能更新视图。 t(true):表示是。 f(false):表示否。 userepl boolean - 用户是否可以复制数据流。 t(true):表示是。 f(false):表示否。 passwd text PG_AUTHID.rolpassword 口令密文,如果没有口令,则为NULL。 valbegin timestamp with time zone - 账户的有效开始时间;如果没有设置有效开始时间,则为NULL。 valuntil timestamp with time zone - 账户的有效结束时间;如果没有设置有效结束时间,则为NULL。 respool name - 用户所在的资源池。 parent oid - 父用户OID。 spacelimit text - 永久表存储空间限额,单位KB。 useconfig text[] PG_DB_ROLE_SETTING.setconfig 运行时配置项的默认值。 tempspacelimit text - 临时表存储空间限额,单位KB。 spillspacelimit text - 算子落盘空间限额,单位KB。 usemonitoradmin boolean - 用户是否是监控管理员。 t(true):表示是。 f(false):表示否。 useoperatoradmin boolean - 用户是否是运维管理员。 t(true):表示是。 f(false):表示否。 usepolicyadmin boolean - 用户是否是安全策略管理员。 t(true):表示是。 f(false):表示否。 父主题: 系统视图
  • PG_PARTITION PG_PARTITION系统表存储数据库内所有分区表(partitioned table)、分区(table partition)和分区索引(index partition)四类对象的信息。分区表索引(partitioned index)的信息不在PG_PARTITION系统表中保存。由于分区表(partitioned table)没有实际的物理文件,所以在pg_partition中不会记录其relfilenode,relpages,reltuples,reltoastrelid,reltoastidxid等信息。 表1 PG_PARTITION字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 relname name 分区表、分区、分区上toast表和分区索引的名称。 parttype "char" 对象类型: 'r':partitioned table 'p':table partition 's':table subpartition 'x':index partition parentid oid 当对象为分区表或分区时,此字段表示分区表在PG_CLASS中的OID。 当对象为二级分区时,此字段标识其一级分区在PG_PARTITION中的OID。 当对象为index partition时,此字段表示所属分区表索引(partitioned index)的OID。 rangenum integer 保留字段。 intervalnum integer 保留字段。 partstrategy "char" 分区表分区策略,现在仅支持: 'r':范围分区。 'v':数值分区。 'i':间隔分区。 'l':list分区。 'h':hash分区。 'n':无效分区。 relfilenode oid table partition、index partition、分区上toast表的物理存储位置。 reltablespace oid table partition、index partition、分区上toast表所属表空间的OID。 relpages double precision 统计信息:table partition、index partition的数据页数量。 reltuples double precision 统计信息:table partition、index partition的元组数。 relallvisible integer 统计信息:table partition、index partition的可见数据页数。 reltoastrelid oid table partition所对应toast表的OID。 reltoastidxid oid table partition所对应toast表的索引的OID。 indextblid oid index partition对应table partition的OID。 indisusable boolean 分区索引是否可用。 relfrozenxid xid32 冻结事务ID号。 为保持前向兼容,保留此字段,新增relfrozenxid64用于记录此信息。 intspnum integer 间隔分区所属表空间的个数。 partkey int2vector 分区键的列号。 intervaltablespace oidvector 间隔分区所属的表空间,间隔分区以round-robin方式落在这些表空间内。 interval text[] 间隔分区的间隔值。 boundaries text[] 范围分区和间隔分区的上边界。 transit text[] 间隔分区的跳转点。 reloptions text[] 设置partition的存储属性,与pg_class.reloptions的形态一样,用“keyword=value”格式的字符串来表示 ,目前用于在线扩容的信息搜集。 relfrozenxid64 xid 冻结事务ID号。 relminmxid xid 冻结多事务ID号。 partitionno integer 用于维护分区表中的分区Map结构。 当对象为分区时,此字段表示分区ID,从1开始自增。 当对象为分区表时,此字段表示分区ID的最大值,并使用负值来特殊标记,该值会随着部分分区DDL语法不断递增。 当对象为其他类型时,此字段为空值,没有任何含义。 partitionno是一个永久自增列,可以通过语法ALTER TABLE t_name RESET PARTITION或者VACUUM FULL命令重置/回收。 subpartitionno integer 用于维护分区表中的二级分区Map结构。 当对象为二级分区时,此字段表示二级分区ID,从1开始自增。 当对象为二级分区表的一级分区时,此字段表示二级分区ID的最大值,并使用负值来特殊标记,该值会随着部分分区DDL语法不断递增。 当对象为其他类型时,此字段为空值,没有任何含义。 subpartitionno是一个永久自增列,可以通过语法ALTER TABLE t_name RESET PARTITION或者VACUUM FULL命令重置/回收。 父主题: 系统表
  • PGReplicationStream的继承关系 PGReplicationStream是逻辑复制的接口,实现类是V3PGReplicationStream,该类位于org.postgresql.core.v3.replication Package中,该类的声明如下: public class V3PGReplicationStream implements PGReplicationStream
  • 常用方法 表1 PGReplicationConnection常用方法 返回值 方法 描述 throws void close() 结束逻辑复制,并释放资源。 SQLException void forceUpdateStatus() 强制将上次接收、刷新和应用的 LSN 状态发送到后端。 SQLException LogSequenceNumber getLastAppliedLSN() 获取上次主机日志回放的LSN。 - LogSequenceNumber getLastFlushedLSN() 获取上次主机刷新的LSN,即当前逻辑解码推进的LSN。 - LogSequenceNumber getLastReceiveLSN() 获取上次接收的LSN(针对LSN序复制槽)或 CS N(针对CSN序复制槽)。 - boolean isClosed() 复制流是否关闭。 - ByteBuffer read() 从后端读取下一条WAL记录。如果读取不到,该方法阻塞I/O读。 SQLException ByteBuffer readPending() 从后端读取下一条WAL记录。如果读取不到,该方法不阻塞I/O读。 SQLException void setAppliedLSN(LogSequenceNumber applied) 设置应用的LSN。 - void setFlushedLSN(LogSequenceNumber flushed) 设置刷新的LSN(针对LSN序复制槽)或CSN(针对CSN序复制槽),在下次更新时发送至后端,用于推进服务端LSN(针对LSN序复制槽)或CSN(针对CSN序复制槽)。 -
  • GS_POLICY_LABEL GS_POLICY_LABEL系统表记录资源标签配置信息,一个资源标签对应着一条或多条记录,每条记录标记了数据库资源所属的资源标签。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 FQDN(Fully Qualified Domain Name)标识了数据库资源所属的绝对路径。 表1 GS_POLICY_LABEL表字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 labelname name 资源标签名称。 labeltype name 资源标签类型,目前仅为RESOURCE。 fqdnnamespace oid 被标识的数据库资源所属的namespace oid。 fqdnid oid 被标识的数据库资源的oid,若数据库资源为列,则该列为所属表的oid。 relcolumn name 列名,若被标识的数据库资源为列,该列指出列名,否则该列为空。 fqdntype name 被标识的数据库资源的类型名称,例如:schema, table, column, view等。 父主题: 系统表
  • 值存储数据类型解析 查找与目标字段准确的匹配。 试着将表达式直接转换成目标类型。如果已知这两种类型之间存在一个已注册的转换函数,那么直接调用该转换函数即可。如果表达式是一个未知类型文本,该文本字符串的内容将交给目标类型的输入转换过程。 检查一下看目标类型是否有长度转换。长度转换是一个从某类型到自身的转换。如果在pg_cast表里面找到一个,那么在存储到目标字段之前先在表达式上应用。这样的转换函数总是接受一个额外的类型为integer的参数,它接收目标字段的atttypmod值(实际上是其声明长度,atttypmod的解释随不同的数据类型而不同),并且它可能接受一个Boolean类型的第三个参数,表示转换是显式的还是隐式的。转换函数负责施加那些长度相关的语义,比如长度检查或者截断。
  • 示例 character存储类型转换。对一个目标列定义为character(20)的语句,下面的语句显示存储值的长度正确: 1 2 3 4 5 6 7 8 9 10 11 12 gaussdb=# CREATE TABLE tpcds.value_storage_t1 ( VS_COL1 CHARACTER(20) )DISTRIBUTE BY HASH (VS_COL1); gaussdb=# INSERT INTO tpcds.value_storage_t1 VALUES('abcdef'); gaussdb=# SELECT VS_COL1, octet_length(VS_COL1) FROM tpcds.value_storage_t1; vs_col1 | octet_length ----------------------+-------------- abcdef | 20 (1 row) ) gaussdb=# DROP TABLE tpcds.value_storage_t1; 这里真正发生的事情是两个unknown文本缺省解析成text,这样就允许||操作符解析成text连接。然后操作符的text结果转换成bpchar("空白填充的字符型", character类型内部名称)以匹配目标字段类型。从text到bpchar的转换是二进制兼容的,这样的转换是隐含的并且实际上不做任何函数调用。最后,在系统表里找到长度转换函数bpchar(bpchar, integer, Boolean) 并且应用于该操作符的结果和存储的字段长。这个类型相关的函数执行所需的长度检查和额外的空白填充。
  • GS_LABELS GS_LABELS视图显示所有已配置的资源标签信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 表1 GS_LABELS字段 名称 类型 描述 labelname name 资源标签的名称。 labeltype name 资源标签的类型。对应系统表GS_POLICY_LABEL中的labeltype字段。 fqdntype name 数据库资源的类型。如table、schema、index等。 schemaname name 数据库资源所属的schema名称。 fqdnname name 数据库资源名称。 columnname name 数据库资源列名称,若标记的数据库资源不为表的列则该项为空。 父主题: 系统视图
  • GS_SESSION_STAT GS_SESSION_STAT视图以会话线程或AutoVacuum线程为单位,显示会话状态信息。 表1 GS_SESSION_STAT字段 名称 类型 描述 sessid text 线程标识+线程启动时间。 statid integer 统计会话编号。 statname text 统计会话名称。 statunit text 统计会话单位。 value bigint 统计会话值。 父主题: 系统视图
  • PGXC_NODE PGXC_NODE系统表存储数据库实例节点信息。PGXC_NODE系统表仅在分布式场景下有具体含义,集中式只能查询表定义。 表1 PGXC_NODE字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 node_name name 节点名称。 node_type "char" 节点类型。 C:协调节点。 D:数据节点。 S:数据节点的备节点。 node_port integer 节点的端口号。 node_host name 节点的主机名称或者IP(如配置为虚拟IP,则为虚拟IP)。 node_port1 integer 复制节点的端口号。 node_host1 name 复制节点的主机名称或者IP(如配置为虚拟IP,则为虚拟IP)。 hostis_primary boolean 表明当前节点是否发生主备切换。 t(true):表示发生。 f(false):表示不发生。 nodeis_primary boolean 在replication表下,是否优选当前节点作为优先执行的节点进行非查询操作。 t(true):表示优选。 f(false):表示不优选。 nodeis_preferred boolean 在replication表下,是否优选当前节点作为首选的节点进行查询。 t(true):表示优选。 f(false):表示不优选。 node_id integer 节点标志符。由node_name经过hash函数计算后得到。 sctp_port integer 主节点使用TCP代理通信库的数据通道侦听端口(当前版本已经不再支持SCTP通信库)。 control_port integer 主节点使用TCP代理通信库的控制通道侦听端口。 sctp_port1 integer 备节点使用TCP代理通信库的数据通道侦听端口(当前版本已经不再支持SCTP通信库)。 control_port1 integer 备节点使用TCP代理通信库的控制通道侦听端口。 nodeis_central boolean 表明当前节点是否为中心控制节点,对DN无效。 t(true):表示是。 f(false):表示不是。 nodeis_active boolean 表明当前节点是否是正常状态,对DN无效。 t(true):表示是。 f(false):表示不是。 父主题: 系统表
  • 位串类型 位串就是一串1和0的字符串。它们可以用于存储位掩码。 GaussDB 支持两种位串类型:bit(n)和bit varying(n),这里的n是一个正整数,n最大取值为83886080,相当于10M的容量。 bit类型的数据必须准确匹配长度n,如果存储的数据长度不匹配都会报错。bit varying类型的数据是最长为n的变长类型,长度超过n时会被拒绝。一个没有长度的bit等效于bit(1),没有长度的bit varying表示没有长度限制。 如果用户明确地把一个位串值转换成bit(n),则此位串右边的内容将被截断或者在右边补齐零,直到刚好n位,而不会抛出任何错误。 如果用户明确地把一个位串数值转换成bit varying(n),且它超过了n位,则它的右边将被截断。 使用ADMS平台8.1.3-200驱动版本及之前版本时,写入bit类型需要用::bit varying进行类型转换,否则可能出现异常报错。 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 --创建表。 gaussdb=# CREATE TABLE bit_type_t1 ( BT_COL1 INTEGER, BT_COL2 BIT(3), BT_COL3 BIT VARYING(5) ) DISTRIBUTE BY REPLICATION; --插入数据。 gaussdb=# INSERT INTO bit_type_t1 VALUES(1, B'101', B'00'); --插入数据的长度不符合类型的标准会报错。 gaussdb=# INSERT INTO bit_type_t1 VALUES(2, B'10', B'101'); ERROR: bit string length 2 does not match type bit(3) CONTEXT: referenced column: bt_col2 --将不符合类型长度的数据进行转换。 gaussdb=# INSERT INTO bit_type_t1 VALUES(2, B'10'::bit(3), B'101'); --查看数据。 gaussdb=# SELECT * FROM bit_type_t1; bt_col1 | bt_col2 | bt_col3 ---------+---------+--------- 1 | 101 | 00 2 | 100 | 101 (2 rows) --删除表。 gaussdb=# DROP TABLE bit_type_t1; 父主题: 数据类型
  • ecpg组件介绍 ecpg支持平台 表1 ecpg支持平台 操作系统 平台 EulerOS V2.0SP5 x86_64位 EulerOS V2.0SP9 ARM64位 ecpg组件 ecpg:用于对嵌入式SQL-C进行预处理的可执行二进制文件。 libecpg:为ecpg提供连接、执行SQL、事务等实现的动态库,包括libecpg.so、libecpg.so.6和libecpg.so.6.4,在C语言程序编译执行时通过“-lecpg”参数引用。 libpgtypes:ecpg提供的用于实现数值、日期、时间戳、区间类型数据操作运算的动态库,包括libpgtypes.so、libecpg.so.6和libecpg.so.6.4,在C语言程序编译执行时通过“-lpgtypes”参数引用。 ecpg组件的获取路径 ecpg二进制获取路径:$GAUSSHOME/bin ecpg依赖动态库路径:$GAUSSHOME/lib ecpg所需头文件路径:$GAUSSHOME/include/ecpg 父主题: 基于ecpg开发
  • DBE_SQL_UTIL.create_hint_sql_patch create_hint_sql_patch是用于创建调优SQL PATCH的接口函数,返回执行是否成功。本函数是原函数的重载函数,支持通过parent_unique_sql_id值限制hint patch的生效范围。 限制仅初始用户、sysadmin、opradmin、monadmin用户有权限调用。 表1 DBE_SQL_UTIL.create_hint_sql_patch重载函数入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 unique_sql_id IN bigint 查询全局唯一ID。 parent_unique_sql_id IN bigint 标识外层SQL语句的全局唯一ID,值为0时表示限制存储过程外语句SQL PATCH生效;非0值表示限制特定存储过程生效。 hint_string IN text Hint文本。 description IN text PATCH的备注,默认值为NULL。 enabled IN bool PATCH是否生效,默认值为true。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • _PG_FOREIGN_TABLE_COLUMNS 显示外部表的列信息。该视图只有sysadmin权限可以查看。 表1 _PG_FOREIGN_TABLE_COLUMNS字段 名称 类型 描述 nspname name schema名称。 relname name 表名称。 attname name 列名称。 attfdwoptions text[] 外部数据封装器的属性选项,使用“keyword=value”格式的字符串。 父主题: Information Schema
  • 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
  • undo_limit_size_per_transaction 参数说明:用于控制单事务undo分配空间阈值,达到阈值时事务报错回滚。建议设置undo_limit_size_per_transaction参数不大于undo_space_limit_size参数。若设置的undo_limit_size_per_transaction参数大于undo_space_limit_size参数,用户调用show undo_limit_size_per_transaction命令查询参数值时,显示出来的值和用户设置的值仍保持一致,只是在使用时会取undo_space_limit_size和undo_limit_size_per_transaction两者的较小值,作为实际的单事务undo分配空间阈值。如果设置 undo_limit_size_per_transaction 超过 1TB,可能会影响系统的性能和稳定性。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,256~2147483647,单位为8KB。 默认值:32GB
  • GLOBAL_SESSION_TIME 用于统计各节点会话线程的运行时间信息,及各执行阶段所消耗时间。 表1 GLOBAL_SESSION_TIME字段 名称 类型 描述 node_name name 节点名称。 sessid text 线程启动时间+线程标识。 stat_id integer 统计编号。 stat_name text 会话类型名称。 value bigint 会话值。 父主题: Session/Thread
  • DB_IND_EXPRESSIONS DB_IND_EXPRESSIONS视图显示当前用户可访问的表达式索引的信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 DB_IND_EXPRESSIONS字段 名称 类型 描述 index_owner character varying(64) 索引的所有者。 index_name character varying(64) 索引名。 table_owner character varying(64) 表的所有者。 table_name character varying(64) 表名。 column_expression text 定义列的基于函数的索引表达式。 column_position smallint 索引中列的位置。 父主题: 系统视图
  • 参数说明 IF EXISTS 如果指定的触发器不存在,则发出一个notice而不是抛出一个错误。 trigger_name 要删除的触发器名称。 取值范围:已存在的触发器。 table_name 要删除的触发器所在的表名称。 取值范围:已存在的含触发器的表。 CASCADE | RESTRICT CASCADE:级联删除依赖此触发器的对象。 RESTRICT:如果有依赖对象存在,则拒绝删除此触发器。此选项为缺省值。
  • PG_CURSORS PG_CURSORS视图列出了当前可用的游标。 表1 PG_CURSORS字段 名称 类型 描述 name text 游标名。 statement text 声明该游标时的查询语句。 is_holdable boolean 如果该游标是持久的(就是在声明该游标的事务结束后仍然可以访问该游标)则为TRUE,否则为FALSE。 is_binary boolean 如果该游标被声明为BINARY则为TRUE,否则为FALSE。 is_scrollable boolean 如果该游标可以滚动(就是允许以不连续的方式检索)则为TRUE,否则为FALSE。 creation_time timestamp with time zone 声明该游标的时间戳。 父主题: 系统视图
  • FILE_REDO_IOSTAT 本节点Redo(WAL)相关的统计信息。 表1 FILE_REDO_IOSTAT字段 名称 类型 描述 phywrts bigint 向wal buffer中写的次数。 phyblkwrt bigint 向wal buffer中写的block的块数。 writetim bigint 向xLog文件中写操作的时间(单位:微秒)。 avgiotim bigint 平均写xLog的时间(writetim/phywrts,单位:微秒)。 lstiotim bigint 最后一次写xLog的时间(单位:微秒)。 miniotim bigint 最小的写xLog时间(单位:微秒)。 maxiowtm bigint 最大的写xLog时间(单位:微秒)。 父主题: File
  • 参数说明 join_table_list为表示表join顺序的hint字符串,可以包含当前层的任意个表(别名),或对于子查询提升的场景,也可以包含子查询的hint别名,同时任意表可以使用括号指定优先级,表之间使用空格分隔。 @queryblock 见指定Hint所处于的查询块Queryblock,可省略,表示在当前查询块生效。 表只能用单个字符串表示,不能带schema。 表如果存在别名,需要优先使用别名来表示该表。
  • SESSION_STAT_ACTIVITY 显示当前节点上正在运行的线程相关的信息。 表1 SESSION_STAT_ACTIVITY字段 名称 类型 描述 datid oid 用户会话在后台连接到的数据库OID。 datname name 用户会话在后台连接到的数据库名称。 pid bigint 后台线程ID。 usesysid oid 登录该后台的用户OID。 usename name 登录该后台的用户名。 application_name text 连接到该后台的应用名。 client_addr inet 连接到该后台的客户端的IP地址。如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。 client_hostname text 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 client_port integer 客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。 backend_start timestampwith time zone 该过程开始的时间,即当客户端连接服务器时间。 xact_start timestampwith time zone 启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。 query_start timestampwith time zone 开始当前活跃查询的时间,如果state的值不是active,则这个值是上一个查询的开始时间。如果是存储过程、函数、package,则查询的是第一个查询时间,不会随着存储过程内语句运行而改变。 state_change timestampwith time zone 上次状态改变的时间。 waiting boolean 如果后台当前正等待锁则为true。 enqueue text 该字段不支持。 state text 该后台当前总体状态。可能值是: active:后台正在执行一个查询。 idle:后台正在等待一个新的客户端命令。 idle in transaction:后台在事务中,但是目前无法执行查询。 idle in transaction (aborted):这个状态除说明事务中有某个语句导致了错误外,类似于idle in transaction fastpath function call:后台正在执行一个fast-path函数。 disabled:如果后台禁用track_activities,则报告这个状态。 说明: 普通用户只能查看到自己账户所对应的会话状态。即其他账户的state信息为空。例如以judy用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的stat信息为空。 gaussdb=# SELECT datname, usename, usesysid,state,pid FROM pg_stat_activity; datname | usename | usesysid | state | pid ----------+---------+----------+--------+-----------------testdb | omm | 10 | |139968752121616 testdb | omm | 10 | |139968903116560 db_tpcds | judy | 16398 | active |139968391403280 testdb | omm | 10 | |139968643069712 testdb | omm | 10 | |139968680818448 testdb | joe | 16390 | |139968563377936 (6 rows) resource_pool name 用户使用的资源池。 query_id bigint 查询语句的ID。 query text 该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 unique_sql_id bigint 语句的unique sql id。 trace_id text 驱动传入的trace id,与应用的一次请求相关联。 父主题: Session/Thread
  • GS_CLIENT_GLOBAL_KEYS_ARGS GS_CLIENT_GLOBAL_KEYS_ARGS系统表记录密态等值特性中客户端加密主密钥相关元数据信息,每条记录对应客户端加密主密钥的一个键值对信息。 表1 GS_CLIENT_GLOBAL_KEYS_ARGS字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 global_key_id oid 客户端加密主密钥(cmk)oid。 function_name name 值为encryption。 key name 客户端加密主密钥(cmk)的元数据信息对应的名称。 value bytea 客户端加密主密钥(cmk)的元数据信息名称的值。 父主题: 系统表
  • 结构 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块时出现异常。
  • 统计信息调优介绍 GaussDB是基于代价估算生成的最优执行计划。优化器需要根据analyze收集的统计信息进行行数估算和代价估算,因此统计信息对优化器行数估算和代价估算起着至关重要的作用。通过analyze收集全局统计信息,主要包括:pg_class表中的relpages和reltuples;pg_statistic表中的stadistinct、stanullfrac、stanumbersN、stavaluesN、histogram_bounds等。
共100000条