华为云用户手册

  • STAT_SYS_INDEXES 显示当前节点pg_catalog、information_schema以及pg_toast模式中所有系统表的索引状态信息。 表1 STAT_SYS_INDEXES字段 名称 类型 描述 relid oid 该索引的表的OID。 indexrelid oid 索引的OID。 schemaname name 索引所在的Schema名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan bigint 该索引上执行的索引扫描次数。 idx_tup_read bigint 该索引上扫描返回的索引项数。 idx_tup_fetch bigint 使用该索引的简单索引扫描在原表中抓取的活跃行数。 父主题: Object
  • WLM_WORKLOAD_RUNTIME WLM_WORKLOAD_RUNTIME视图显示当前用户在CN上执行作业时当前CN的作业状态信息。 表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 正在执行的语句。 父主题: Workload Manager
  • GS_LSC_MEMORY_DETAIL GS_LSC_MEMORY_DETAIL视图显示所有线程的本地SysCache的内存占用情况,以MemoryContext节点来统计。仅在开启GSC的模式下有数据。 表1 GS_LSC_MEMORY_DETAIL字段 名称 类型 描述 threadid text 线程启动时间+线程标识(字符串信息为timestamp.sessionid)。 tid bigint 线程标识。 thrdtype text 线程类型。可以是系统内存在的任何线程类型,如postgresql、wlmmonitor等。 contextname text 内存上下文名称。 level smallint 当前上下文在整体内存上下文中的层级。 parent text 父内存上下文名称。 totalsize bigint 当前内存上下文的内存总数,单位Byte。 freesize bigint 当前内存上下文中已释放的内存总数,单位Byte。 usedsize bigint 当前内存上下文中已使用的内存总数,单位Byte。 父主题: 系统视图
  • SQL调优指南 SQL调优的唯一目的是“资源利用最大化”,即CPU、内存、磁盘IO、网络IO四种资源利用最大化。所有调优手段都是围绕资源使用开展的。所谓资源利用最大化是指SQL语句尽量高效,节省资源开销,以最小的代价实现最大的效益。比如做典型点查询的时候,可以用seqscan+filter(即读取每一条元组和点查询条件进行匹配)实现,也可以通过indexscan实现,显然indexscan可以以更小的代价实现相同的效果。 根据硬件资源和客户的业务特征确定合理的集群部署方案和表定义是数据库在多数情况下满足性能要求的基础。下文的调优说明假设您已根据“软件安装”指引在安装过程中按照合理的集群方案完成了安装,且已经根据“开发设计建议”的指引进行了数据库设计。 Query执行流程 SQL执行计划介绍 调优流程 更新统计信息 审视和修改表定义 典型SQL调优点 经验总结:SQL语句改写规则 SQL调优关键参数调整 使用Plan Hint进行调优 检查隐式转换的性能问题 使用SQL PATCH进行调优 实际调优案例
  • 背景信息 GaussDB提供了多种修改GUC参数的方法,用户可以方便的针对数据库、用户、会话进行设置。 参数名称不区分大小写。 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。 枚举类型的取值是在系统表pg_settings的enumvals字段取值定义的。 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。 参数的默认单位在系统表pg_settings的unit字段定义的。 内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。 CN和DN参数可以同时进行设置,其他类型的参数不能同时进行设置。 具体参数说明请参见GUC参数说明。
  • GUC参数设置 GaussDB提供了六类GUC参数,具体分类和设置方式请参考表1: 表1 GUC参数分类 参数类型 说明 设置方式 INTERNAL 固定参数,在创建数据库的时候确定,用户无法修改,只能通过show语法或者pg_settings视图进行查看。 无 POSTMASTER 数据库服务端参数,在数据库启动时确定,可以通过配置文件指定。 支持表2中的方式一。 SIGHUP 数据库全局参数,可在数据库启动时设置或者在数据库启动后,发送指令重新加载。 支持表2中的方式一、方式二。 BACKEND 会话连接参数。在创建会话连接时指定,连接建立后无法修改。连接断掉后参数失效。内部使用参数,不推荐用户设置。 支持表2中的方式一、方式二。 说明: 设置该参数后,下一次建立会话连接时生效。 SUSET 数据库管理员参数。可在数据库启动时、数据库启动后或者数据库管理员通过SQL进行设置。 支持表2中的方式一、方式二或由数据库管理员通过方式三设置。 USERSET 普通用户参数。可被任何用户在任何时刻设置。 支持表2中的方式一、方式二或方式三设置。 说明: 设置USERSET类型的参数时,ALTER DATABASE设置的参数值优先级高于gs_guc设置。如果想要gs_guc设置的参数值生效,则需要执行“alter database xxx reset xxx”进行重置。 GaussDB提供了三种方式来修改GUC参数,具体操作请参考表2: 表2 GUC参数设置方式 序号 设置方法 方式一 登录管理控制台。 在“实例管理”页面,选择指定的实例,单击实例名称,进入实例基本信息页面。 在左侧导航栏单击“参数修改”,进入参数修改页面,在该页面修改参数。 如果需要修改的参数在管理该控制台无法修改,请提前评估风险后再联系客服进行修改。 重启数据库使参数生效。 说明: 重启数据库集群操作会导致用户执行操作中断,请在操作之前规划好合适的执行窗口。 方式二 登录管理控制台。 在“实例管理”页面,选择指定的实例,单击实例名称,进入实例基本信息页面。 在左侧导航栏单击“参数修改”,进入参数修改页面,在该页面修改参数。 如果需要修改的参数在管理该控制台无法修改,请提前评估风险后再联系客服进行修改。 方式三 修改会话级别的参数。 设置会话级别的参数 1 gaussdb=# SET paraname TO value; 修改本次会话中的取值。退出会话后,设置将失效。 使用方式一和方式二设置参数时,若所设参数不属于当前环境,数据库会提示参数不在支持范围内的相关信息。 如果需要修改的参数无法通过以上方式设置,请提前评估风险后在联系客服进行修改。
  • SUMMARY_STATIO_USER_INDEXES SUMMARY_STATIO_USER_INDEXES视图显示集群内汇聚的命名空间中所有用户关系表索引的I/O状态信息。 表1 SUMMARY_STATIO_USER_INDEXES字段 名称 类型 描述 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read numeric 从索引中读取的磁盘块数。 idx_blks_hit numeric 索引命中缓存数。 父主题: Cache/IO
  • GLOBAL_POOLER_STATUS GLOBAL_POOLER_STATUS视图用于查询全局CN 的pooler中的缓存连接状态。 表1 GLOBAL_POOLER_STATUS字段 名称 类型 描述 source_node_name name 源节点名称。 database text 数据库名称。 user_name text 用户名。 tid bigint 非线程池逻辑下为连接CN的线程id,线程池逻辑下为连接CN的sessionid。 node_oid bigint 连接的实例节点OID。 node_name name 连接的实例节点名称。 in_use boolean 连接是否正被使用: t(true):表示连接正在使用。 f(false):表示连接没有使用。 fdsock bigint 端口文件描述符。 remote_pid bigint 连接的远端节点线程号。 session_params text 会话参数。 父主题: Utility
  • SUMMARY_STAT_DATABASE 显示集群内数据库各节点的统计信息的汇总求和结果(在CN节点使用。按数据库名对数据库每个节点的状态信息汇总求和,其中timestamp类型字段不进行求和,仅取所有节点该字段的最新值)。 表1 SUMMARY_STAT_DATABASE 名称 类型 描述 datname name 数据库的名称。 numbackends bigint 当前连接到该数据库的后端数。 xact_commit numeric 此数据库中已经提交的事务数。 xact_rollback numeric 此数据库中已经回滚的事务数。 blks_read numeric 在这个数据库中读取的磁盘块的数量。 blks_hit numeric 高速缓存中已经命中的磁盘块的次数,这种情况下不需要从磁盘读取(高速缓存只包括缓冲区高速缓存,不包括操作系统的文件系统缓存)。 tup_returned numeric 该数据库中顺序扫描获取的活跃行数和索引扫描返回的索引行数。 tup_fetched numeric 当前数据库通过索引返回的行数。 tup_inserted bigint 插入的行数。 tup_updated bigint 更新的行数。 tup_deleted bigint 删除的行数。 conflicts bigint 由于与数据库回放发生冲突而取消的查询数量(冲突仅在备机上发生)。请参见STAT_DATABASE_CONFLICTS获取更多信息。 temp_files numeric 该数据库中查询语句创建的临时文件数量。统计所有临时文件,不受GUC参数log_temp_files设置值影响。 temp_bytes numeric 该数据库中查询语句写入临时文件的数据总量。统计所有临时文件,不受GUC参数log_temp_files设置值影响。 deadlocks bigint 在该数据库中检索的死锁数。 blk_read_time double precision 通过数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 通过数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 重置当前状态统计的时间。 父主题: Object
  • 优化建议 VALUES 通过INSERT语句批量插入数据时,建议将多条记录合并入一条语句中执行插入,以提高数据加载性能。例如,INSERT INTO sections VALUES (30, 'Administration', 31, 1900),(40, 'Development', 35, 2000), (50, 'Development' , 60 , 2001); 如果INSERT多VALUES语句中VALUES的值分布在一个DN上,GaussDB可以把语句下推到对应DN执行。目前只支持VALUES中值为常量,简单表达式和可下推函数(pg_proc中字段provolatile为'i')。如果表中列带有DEFAULT值,只支持DEFAULT值为常量,简单表达式。单VALUES不能下推单DN的语句,多VALUES同样不支持下推。
  • 注意事项 表的所有者、拥有表INSERT权限的用户或拥有INSERT ANY TABLE权限的用户,可向表中插入数据,系统管理员默认拥有此权限。 如果使用RETURNING子句,用户必须要有该表的SELECT权限。 如果使用ON DUPLICATE KEY UPDATE,用户必须要有该表的INSERT、UPDATE权限,UPDATE子句中列的SELECT权限。 如果使用query子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的SELECT权限。 如果使用query子句插入来自查询动态数据脱敏列的数据,插入的结果即为脱敏后的值,无法被还原。 当连接到TD兼容的数据库时,td_compatible_truncation参数设置为on时,将启用超长字符串自动截断功能,在后续的INSERT语句中(不包含外表的场景下),对目标表中CHAR和VARCHAR类型的列上插入超长字符串时,系统会自动按照目标表中相应列定义的最大长度对超长字符串进行截断。 如果向字符集为字节类型编码(SQL_ASCII,LATIN1等)的数据库中插入多字节字符数据(如汉字等),且字符数据跨越截断位置,这种情况下,按照字节长度自动截断,自动截断后会在尾部产生非预期结果。如果用户有对于截断结果正确性的要求,建议用户采用UTF8等能够按照字符截断的输入字符集作为数据库的编码集。
  • 语法格式 1 2 3 4 5 6 7 [ WITH [ RECURSIVE ] with_query [, ...] ] INSERT [/*+ plan_hint */] INTO table_name [ AS alias ] [ ( column_name [, ...] ) ] { DEFAULT VALUES | VALUES {( { expression | DEFAULT } [, ...] ) }[, ...] | query } [ ON DUPLICATE KEY UPDATE { NOTHING | { column_name = { expression | DEFAULT } } [, ...] [ WHERE condition ] } ] [ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ];
  • 参数说明 WITH [ RECURSIVE ] with_query [, ...] 用于声明一个或多个可以在主查询中通过名称引用的子查询,相当于临时表。 如果声明了RECURSIVE,那么允许SELECT子查询通过名称引用它自己。 其中with_query的详细格式为: with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( {SELECT | VALUES | INSERT | UPDATE | DELETE} ) – with_query_name指定子查询生成的结果集名称,在查询中可使用该名称访问子查询的结果集。 – column_name指定子查询结果集中显示的列名。 – 每个子查询可以是SELECT,VALUES,INSERT,UPDATE或DELETE语句。 – 用户可以使用MATERIALIZED / NOT MATERIALIZED对CTE进行修饰。 如果声明为MATERIALIZED,WITH查询将被物化,生成一个子查询结果集的拷贝,在引用处直接查询该拷贝,因此WITH子查询无法和主干SELECT语句进行联合优化(如谓词下推、等价类传递等),对于此类场景可以使用NOT MATERIALIZED进行修饰,如果WITH查询语义上可以作为子查询内联执行,则可以进行上述优化。 如果用户没有显示声明物化属性则遵守以下规则:如果CTE只在所属主干语句中被引用一次,且语义上支持内联执行,则会被改写为子查询内联执行,否则以CTE Scan的方式物化执行。 INSERT ON DUPLICATE KEY UPDATE不支持WITH及WITH RECURSIVE子句。 INSERT语句的输出,只会显示最外层query block插入的tuple数量。比如: with cte as (insert into t1 values(1) retunring * ) insert into t1 select * from cte; 只会显示插入一条tuple,但实际上插入了两条。 plan_hint子句 以/*+ */的形式在INSERT关键字后,用于对INSERT对应的语句块生成的计划进行hint调优,详细用法请参见章节使用Plan Hint进行调优。每条语句中只有第一个/*+ plan_hint */注释块会作为hint生效,里面可以写多条hint。 table_name 要插入数据的目标表名。 取值范围:已存在的表名。 支持使用DATABASE LINK方式对远端表进行操作,使用方式详情请见DATABASE LINK。 column_name 目标表中的字段名: 字段名可以有子字段名或者数组下标修饰。 没有在字段列表中出现的每个字段,将由系统默认值,或者声明时的默认值填充,若都没有则用NULL填充。 目标字段(column_name)可以按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。 如果value子句和query中只提供了N个字段,则目标字段为前N个字段。 value子句和query提供的值在表中从左到右关联到对应列。 取值范围:已存在的字段名。 expression 赋予对应column的一个有效表达式或值: 如果是INSERT ON DUPLICATE KEY UPDATE语句下,expression可以为VALUES(column_name)或EXCLUDED.column_name用来表示引用冲突行对应的column_name字段的值。需注意,其中VALUES(column_name)不支持嵌套在表达式中(例如VALUES(column_name)+1),但EXCLUDED不受此限制。 向表中字段插入单引号 " ' "时需要使用单引号自身进行转义。 如果插入行的表达式不是正确的数据类型,系统试图进行类型转换,若转换不成功,则插入数据失败,系统返回错误信息。 DEFAULT 对应字段名的缺省值。如果没有缺省值,则为NULL。 query 一个查询语句(SELECT语句),将查询结果作为插入的数据。 RETURNING 返回实际插入的行,RETURNING列表的语法与SELECT的输出列表一致。注意:INSERT ON DUPLICATE KEY UPDATE不支持RETURNING子句。 output_expression INSERT命令在每一行都被插入之后用于计算输出结果的表达式。 取值范围:该表达式可以使用table的任意字段。可以使用*返回被插入行的所有字段。 output_name 字段的输出名称。 取值范围:字符串,符合标识符命名规范。 ON DUPLICATE KEY UPDATE 对于带有唯一约束(UNIQUE INDEX或PRIMARY KEY)的表,如果插入数据违反唯一约束,则对冲突行执行UPDATE子句完成更新。如果UPDATE子句为NOTHING,则不做任何操作。 对于不带唯一约束的表,则仅执行插入。 支持触发器,触发器执行顺序由实际执行流程决定: 执行INSERT: 触发BEFORE INSERT、AFTER INSERT触发器。 执行UPDATE:触发BEFORE INSERT、BEFORE UPDATE、AFTER UPDATE触发器。 执行UPDATE NOTHING: 触发BEFORE INSERT触发器。 不支持延迟生效(DEFERRABLE)的唯一约束或主键。 如果表中存在多个唯一约束,如果所插入数据违反多个唯一约束,对于检测到冲突的第一行进行更新,其他冲突行不更新(检查顺序与索引维护具有强相关性,一般先创建的索引先进行冲突检查)。 分布列、唯一索引列不允许UPDATE。 UPDATE的WHERE子句不支持包含子链接。
  • SUMMARY_TRANSACTIONS_RUNNING_XACTS 显示集群中各个CN节点运行事务的信息,字段内容和transactions_running_xacts一致。 表1 SUMMARY_TRANSACTIONS_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务在GTM对应的句柄。 gxid xid 事务id号。 state tinyint 事务状态(3:prepared或者0:starting)。 node text 节点名称。 xmin xid 节点上当前数据涉及的最小事务号xmin。 vacuum boolean 标志当前事务是否是lazy vacuum事务。 timeline bigint 标志数据库重启次数。 prepare_xid xid 处于prepared状态的事务的id号,若不在prepared状态,值为0。 pid bigint 事务对应的线程id。 next_xid xid CN传给DN的事务id号。 父主题: Transaction
  • 存储过程支持自治事务 自治事务可以在存储过程中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建存储过程语法相同,示例如下。 --建表 gaussdb=# create table t2(a int, b int); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE gaussdb=# insert into t2 values(1,2); INSERT 0 1 gaussdb=# select * from t2; a | b ---+--- 1 | 2 (1 row) --创建包含自治事务的存储过程 gaussdb=# CREATE OR REPLACE PROCEDURE autonomous_4(a int, b int) AS DECLARE num3 int := a; num4 int := b; PRAGMA AUTONOMOUS_TRANSACTION; BEGIN insert into t2 values(num3, num4); dbe_output.print_line('just use call.'); END; / CREATE PROCEDURE --创建调用自治事务存储过程的普通存储过程 gaussdb=# CREATE OR REPLACE PROCEDURE autonomous_5(a int, b int) AS DECLARE BEGIN dbe_output.print_line('just no use call.'); insert into t2 values(666, 666); autonomous_4(a,b); rollback; END; / CREATE PROCEDURE --调用普通存储过程 gaussdb=# select autonomous_5(11,22); just no use call. just use call. autonomous_5 -------------- (1 row) --查看表结果 gaussdb=# select * from t2 order by a; a | b ----+---- 1 | 2 11 | 22 (2 rows) 上述例子,最后在回滚的事务块中执行包含自治事务的存储过程,直接说明了自治事务的特性,即主事务的回滚,不会影响自治事务已经提交的内容。 父主题: 自治事务
  • DBE_SQL_UTIL.show_sql_patch show_sql_patch是用于显示给定patch_name对应的SQL PATCH的接口函数,返回运行结果。 限制仅初始用户、sysadmin、opradmin、monadmin用户有权限调用。 表1 DBE_SQL_UTIL.show_sql_patch入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 unique_sql_id OUT bigint 查询全局唯一ID。 enabled OUT bool PATCH是否生效。 abort OUT bool 是否是AbortHint。 hint_str OUT text Hint文本。 父主题: DBE_SQL_UTIL Schema
  • SUMMARY_TRANSACTIONS_PREPARED_XACTS 显示集群中各CN节点当前准备好进行两阶段提交的事务的信息。 表1 SUMMARY_TRANSACTIONS_PREPARED_XACTS字段 名称 类型 描述 transaction xid 预备事务的数字事务标识。 gid text 赋予该事务的全局事务标识。 prepared timestamp with time zone 事务准备好提交的时间。 owner name 执行该事务的用户的名称。 database name 执行该事务所在的数据库名。 父主题: Transaction
  • 示例 --创建一个普通表。 gaussdb=# CREATE TABLE my_table (c1 int, c2 int); --创建全量物化视图。 gaussdb=# CREATE MATERIALIZED VIEW my_mv AS SELECT * FROM my_table; --创建增量物化视图。 gaussdb=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table; --基表写入数据。 gaussdb=# INSERT INTO my_table VALUES(1,1),(2,2); --对全量物化视图my_mv进行全量刷新。 gaussdb=# REFRESH MATERIALIZED VIEW my_mv; --对增量物化视图my_imv进行全量刷新。 gaussdb=# REFRESH MATERIALIZED VIEW my_imv; --删除增量物化视图。 gaussdb=# DROP MATERIALIZED VIEW my_imv; --删除全量物化视图。 gaussdb=# DROP MATERIALIZED VIEW my_mv; --删除表my_table。 gaussdb=# DROP TABLE my_table;
  • ADM_AUDIT_SESSION ADM_AUDIT_SESSION显示所有连接断开数据库审计信息,GaussDB审计信息主要通过pg_query_audit函数,该视图同时存在于PG_CATALOG和SYS schema下。仅拥有AUDITADMIN属性的用户才可以查看审计信息。GaussDB的action_name字段与ORA数据库审计动作不一致,transactionid字段与ORA数据库中transactionid数据的类型保持一致。 表1 ADM_AUDIT_SESSION字段 名称 类型 描述 os_username character varying(255) 暂不支持,值为NULL。 username character varying(128) 操作被审计的用户的名称,不是用户ID。 userhost character varying(128) 暂不支持,值为NULL。 terminal character varying(128) 暂不支持,值为NULL。 timestamp timestamp(0) without time zone 创建审核跟踪条目的日期和时间(用户登录创建的条目的日期和时间AUDIT SESSION)。 action_name character varying(28) DBA_AUDIT_TRAIL中的ACTION列中的数字代码对应的动作类型的名称。 logoff_time timestamp(0) without time zone 暂不支持,值为NULL。 logoff_lread numeric 暂不支持,值为NULL。 logoff_pread numeric 暂不支持,值为NULL。 logoff_lwrite numeric 暂不支持,值为NULL。 logoff_dlock character varying(40) 暂不支持,值为NULL。 sessionid numeric 暂不支持,值为NULL。 returncode numeric 暂不支持,值为NULL。 client_id character varying(128) 暂不支持,值为NULL。 session_cpu numeric 暂不支持,值为NULL。 extended_timestamp timestamp(6) with time zone 创建审核跟踪条目的时间戳(创建的条目的用户登录时间戳AUDIT SESSION)在UTC(协调世界时)时区。 proxy_sessionid numeric 暂不支持,值为NULL。 global_uid character varying(32) 暂不支持,值为NULL。 instance_numeric numeric 暂不支持,值为NULL。 os_process character varying(16) 暂不支持,值为NULL。 父主题: 系统视图
  • DB_ARGUMENTS DB_ARGUMENTS视图显示当前用户可访问的存储过程和函数的参数信息。该视图同时存在于PG_CATALOG和SYS Schema下。该视图所有用户都可以访问,显示当前用户可访问的所有信息。 表1 DB_ARGUMENTS字段 名称 类型 描述 owner character varying(128) 函数或存储过程的所有者。 object_name character varying(128) 函数或存储过程的名称。 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) 暂不支持,varchar,nvarchar2,bpchar,char类型置B,其余置NULL。 origin_con_id character varying(256) 暂不支持,值为0。 父主题: 系统视图
  • define和undef指令 嵌入式SQL具有类似于C语言中#define指令: EXEC SQL DEFINE name; EXEC SQL DEFINE name value; EXEC SQL UNDEF name; 示例如下: /* 定义名称 */ EXEC SQL DEFINE HAVE_FEATURE; /* 定义常量 */ EXEC SQL DEFINE MYNUMBER 12; EXEC SQL DEFINE MYSTRING 'abc'; /* 使用 UNDEF 移除定义 */ EXEC SQL UNDEF MYNUMBER; 在嵌入式SQL程序中也可以使用C语言版本的#define和#undef。区别在于定义的值会在哪里被计算,如果使用EXEC SQL DEFINE,那么ecpg预处理阶段会计算这些定义并替换值。如下示例,ecpg对其进行替换并且编译器不会解析名为MYNUMBER的任何名称或标识符: EXEC SQL DEFINE MYNUMBER 12; ... EXEC SQL UPDATE Tbl SET col = MYNUMBER; 不能把#define用于一个将要在嵌入式SQL查询中使用的变量,因为在这种情况下嵌入式SQL预编译器不能看到这个声明。 父主题: 预处理指令
  • 其它函数 pgxc_pool_check() 描述:检查连接池中缓存的连接数据是否与pgxc_node一致。 返回值类型:Boolean pgxc_pool_reload() 描述:更新连接池中缓存的连接信息。 返回值类型:Boolean reload_active_coordinator() 描述:对所有存活的CN,更新连接池中缓存的连接信息。 返回值类型:void pgxc_lock_for_backup() 描述:为备份操作给集群加锁,这些备份是为在新增节点上做恢复。 返回值类型:Boolean pgxc_lock_for_backup是在使用gs_dump或gs_dumpall工具备份集群前,用来给集群加锁的。当给集群加锁后,不允许有改变系统结构的操作。该函数不影响DML语句。 pg_pool_validate(clear bool, node_name text) 描述:显示CN到节点node_name之间pooler中无效连接,当clear为true时清理无效连接。 返回值类型:record gs_validate_node_conn(validate_type cstring, validate_node_name cstring) 描述:显示或清除当前节点接收来自指定节点的连接。 返回值类型:record 表1 gs_validate_node_conn函数参数说明 参数类型 参数名 类型 描述 输入参数 validate_type cstring 指定入参类型: 'check':用于显示当前节点接收来自指定节点的连接。 'clear':用于清除当前节点接收来自指定节点的连接。 输入参数 validate_node_name cstring 指定节点名称。 输出参数 pid bigint 显示当前节点接收来自指定节点连接的线程id(若是线程池线程则为0)。 输出参数 sessionid bigint 显示当前节点接收来自指定节点连接的session id(若是非线程池线程则为0)。 输出参数 node_name text 显示当前节点接收来自指定节点连接的节点名称。 pgxc_pool_connection_status() 描述:检查pooler连接状态是否正常。 返回值类型:boolean pg_nodes_memory() 描述:查看所有节点的内存占用。 返回值类型:record table_skewness(text) 描述:查看表数据在所有节点的占比。 参数:表示待查询表的表名,为text类型。 返回值类型:record table_skewness(text, text, text) 描述:查看表数据指定列在所有节点的占比。 参数:表示待查询表的表名、指定列名、指定的表的记录数(默认值为0,查询所有记录),都为text类型。 返回值类型:record 返回值说明:节点编号,指定列的数据行数,当前节点数据量相对总数据量的占比。 示例: 返回't'表'a'字段前5行数据在节点上的分布。 gaussdb=# select table_skewness('t', 'a',5); table_skewness ---------------- (1,3,60.000%) (2,2,40.000%) (2 rows) 返回't'表'a'字段所有数据在节点上的分布。 gaussdb=# select table_skewness('t', 'a'); table_skewness ---------------- (1,7,70.000%) (2,2,20.000%) (0,1,10.000%) (3 rows) table_skewness_with_schema(text, text) 描述:查看表数据在所有节点的占比,与table_skewness(text)作用相同。 参数:表示待查询表的schema名称和表名,为text类型。 返回值类型:record table_data_skewness(colrecord, type) 描述:查看表数据所在节点。 参数说明: colrecord:表示待查询表的列名记录,为record类型。 type:hash分布类型 返回值类型:smallint 示例: --返回'test1'表的'index'字段数据所在的节点。 gaussdb=# select table_data_skewness(row(index), 'R') from test1; table_data_skewness --------------------- 4 3 1 2 (4 rows) table_distribution(schemaname text, tablename text) 描述:查看指定表在各个节点上占用的存储空间。 参数:表示待查询表的模式名和表名,均为text类型。 返回值类型:record 使用本函数查询指定表存储分布信息,需要具备指定表的SELECT权限。 table_distribution性能比table_skewness更优,大数据量场景下,请优先考虑使用table_distribution函数。 当使用table_distribution并希望直观的看到空间占比时,可使用dnsize/(sum(dnsize) over ())的方式查看出具体的占比情况。 table_distribution() 描述:查看当前库中所有表在各节点的存储空间分布情况。 返回值类型:record 使用本函数涉及全库表信息查询,需要具备管理员权限。 当前基于table_distribution()函数,GaussDB提供视图PGXC_GET_TABLE_SKEWNESS进行数据倾斜查询,建议在数据库中表数量(小于10000)较少的场景直接使用。 plan_seed() 描述:获取前一次查询语句的seed值(内部使用)。 返回值类型:int pg_stat_get_env() 描述:获取当前节点的环境变量信息,仅sysadmin和monitor admin可以访问。 返回值类型:record 示例: gaussdb=# select pg_stat_get_env(); pg_stat_get_env --------------------------------------------------------------------------------------------------------------------------------------- (coordinator1,localhost,144773,49100,/data1/GaussDB_Kernel_TRUNK/install,/data1/GaussDB_Kernel_TRUNK/install/data/coordinator1,pg_log) (1 row) pg_catalog.plancache_clean() 描述:清理节点上无人使用的全局计划缓存。 返回值类型:bool pg_stat_get_thread() 描述:提供当前节点下线程的状态信息,sysadmin和monitor admin用户可以查看所有线程的信息,普通用户只能查看本用户的线程信息。 返回值类型:record pgxc_get_os_threads() 描述:提供整个集群中所有正常节点下的线程状态信息。 返回值类型:record pg_stat_get_sql_count() 描述:提供当前节点中用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果,sysadmin和monitor admin用户可以查看所有用户的信息,普通用户只能查看本用户的统计信息。 返回值类型:record pgxc_get_sql_count() 描述:提供整个集群所有节点中所有用户执行的SELECT/UPDATE/INSERT/DELETE/MERGE INTO语句的计数结果。 返回值类型:record pgxc_get_node_env() 描述:提供获取集群中所有节点的环境变量信息。 返回值类型:record pgxc_disaster_read_set(text) 描述:设置灾备集群的节点信息到ETCD上。仅灾备集群可用,仅初始用户可调用。 返回值类型:Boolean pgxc_disaster_read_init() 描述:初始化灾备可读的资源和状态信息。仅灾备集群可用,仅初始用户可调用。 返回值类型:Boolean pgxc_disaster_read_clear() 描述:清理灾备可读的资源和状态信息。仅灾备集群可用,仅初始用户可调用。 返回值类型:Boolean pgxc_disaster_read_status() 描述:提供灾备集群的节点信息,仅灾备集群可用。 返回值类型:record gs_switch_relfilenode() 描述:交换两个表或分区的元信息(重分布工具内部使用,用户直接使用会有错误信息提示)。 返回值类型:int 此函数可能导致清空统计信息,建议在调用后重新收集统计信息。 pg_catalog.plancache_clean() 描述:清理当前节点上无人使用的全局计划缓存。 返回值类型:boolean DBE_PERF.global_plancache_clean() 描述:清理所有节点上无人使用的全局计划缓存。 返回值类型:Boolean copy_error_log_create() 描述:创建COPY FROM容错机制所需要的错误表(public.pgxc_copy_error_log)。 返回值类型:Boolean 此函数会尝试创建public.pgxc_copy_error_log表,表的详细信息请参见表2。 在relname列上创建B-tree索引,并REVOKE ALL on public.pgxc_copy_error_log FROM public对错误表进行权限控制(与COPY语句权限一致)。 由于尝试创建的public.pgxc_copy_error_log定义是一张行存表,因此集群上必须支持行存表的创建才能够正常运行此函数,并使用后续的COPY容错功能。需要特别注意的是,enable_hadoop_env这个GUC参数开启后会禁止在集群内创建行存表(GaussDB默认为off)。 此函数自身权限为Sysadmin及以上(与错误表、COPY权限一致)。 若创建前public.pgxc_copy_error_log表已存在或者copy_error_log_relname_idx索引已存在,则此函数会报错回滚。 表2 错误表public.pgxc_copy_error_log信息 列名称 类型 描述 relname character varying 表名称。以模式名.表名形式显示。 begintime timestamp with time zone 出现数据格式错误的时间。 filename character varying 出现数据格式错误的数据源文件名。 lineno bigint 在数据源文件中,出现数据格式错误的行号。 rawrecord text 在数据源文件中,出现数据格式错误的原始记录。 detail text 详细错误信息。 pg_stat_get_data_senders() 描述:提供当前活跃的数据复制发送线程的详细信息。 返回值类型:record textlen() 描述:提供查询text的逻辑长度的方法。 返回值类型:int threadpool_status() 描述:显示线程池中工作线程及会话的状态信息。 返回值类型:record get_local_active_session() 描述:提供当前节点保存在内存中的历史活跃session状态的采样记录,sysadmin和monitor admin权限能查看当前节点所有的历史活跃session记录,普通用户查看本会话的历史活跃session记录。 返回值类型:record dbe_perf.get_global_active_session() 描述:提供所有节点保存在内存中的历史活跃session状态的采样记录。 返回值类型:record dbe_perf.get_global_gs_asp(timestamp, timestamp) 描述:提供所有节点保存在系统表gs_asp中的历史活跃session状态的采样记录。 返回值类型:record get_wait_event_info() 描述:提供wait event事件的具体信息。 返回值类型:record dbe_perf.get_datanode_active_session(text) 描述:提供从CN查询DN上保存在内存中的历史活跃session状态的采样记录。 返回值类型:record 备注:该函数查询目标DN上local_active_session视图中记录并和所有CN上的local_active_session中的记录进行匹配获取query string,所以会占用大量的内存。 dbe_perf.get_datanode_active_session_hist(text, timestamp, timestamp) 描述:提供从CN查询DN上保存在系统表gs_asp中的历史活跃session状态的采样记录。 返回值类型:record 备注:该函数查询目标DN上指定时间段的gs_asp记录,如果指定时间段过长造成查询的记录过多,会耗费大量时间。 generate_wdr_report(bigint, bigint, cstring, cstring,cstring) 描述:基于两个snapshot生成系统诊断报告,默认初始化用户或监控管理员用户可以访问。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:text 表3 generate_wdr_report参数说明 参数 说明 取值范围 begin_snap_id 生成某段时间内性能诊断报告的开始snapshotid。 - end_snap_id 结束snapshot的id,默认end_snap_id大于begin_snap_id。 - report_type 指定生成report的类型。 summary detail all,即同时包含summary和detail。 report_scope 指定生成report的范围。 cluster:数据库级别的信息 node:节点级别的信息。 node_name 在“report_scope”指定为“node”时,需要把该参数指定为对应节点的名称。 在“report_scope”为“cluster”时,该参数可以省略,或指定为NULL。 node:GaussDB中的节点名称。 cluster:省略/空/NULL。 create_wdr_snapshot() 描述:手工生成系统诊断快照,该函数需要sysadmin权限,且只能在CCN上执行。 返回值类型:text kill_snapshot() 描述:kill后台的WDR snapshot线程,调用该函数的用户需要具有SYSADMIN权限或具有REPLICATION权限或继承了内置角色gs_role_replication的权限。 返回值类型:void capture_view_to_json(text, integer) 描述:将视图的结果存入GUC: perf_directory所指定的目录,如果is_crossdb为1,则表示对于所有的database都会访问一次view;如果is_crossdb为0,则表示仅对当前database进行一次视图访问。该函数只有sysadmin和monitor admin用户可以执行。 返回值类型:int reset_unique_sql(text, text, bigint) 描述:用来清理CN/DN内存中的Unique SQL(需要sysadmin/monitor admin权限)。 返回值类型:Boolean 表4 reset_unique_sql参数说明 参数 类型 描述 scope text 清理范围类型: 'GLOBAL' - 清理所有的CN/DN节点,如果是'GLOBAL',则只可以为CN节点执行此函数。 'LOCAL' - 清理本节点。 clean_type text 'BY_USERID' - 按用户ID来进行清理Unique SQL。 'BY_CNID' - 按CN的ID来进行清理Unique SQL。 'ALL' - 全部清理。 clean_value int8 具体清理type对应的清理值。如果第二个参数为ALL,则第三个参数不起作用,可以取任意值。 wdr_xdb_query(db_name_str text, query text) 描述:提供本地跨数据库执行query的能力。例如: 在连接到testdb库时, 访问test库下的表。只有初始化用户才有权限执行。 select col1 from wdr_xdb_query('dbname=test','select col1 from t1') as dd(col1 int); 返回值类型:record pg_wlm_jump_queue(pid int) 描述:调整任务到CN队列的最前端。 返回值类型:boolean true:成功。 false:失败。 gs_wlm_switch_cgroup(pid int, cgroup text) 描述:调整作业的优先级到新控制组。 返回值类型:boolean true:成功。 false:失败。 pv_session_memctx_detail(threadid tid, MemoryContextName text) 描述:将线程tid的MemoryContextName内存上下文信息记录到“$GAUSSLOG/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。其中threadid可通过查询表PV_SESSION_MEMORY_DETAIL中的sessid字段获得。在正式发布的版本中仅接受MemoryContextName为空串(两个单引号表示输入为空串,即'')的输入,此时会记录所有的内存上下文信息,否则不会有任何操作。该函数需要管理员权限的用户才能执行。 返回值类型:boolean true:成功。 false:失败。 pg_shared_memctx_detail(MemoryContextName text) 描述:将MemoryContextName内存上下文信息记录到“$GAUSSLOG/pg_log/${node_name}/dumpmem”目录下的“threadid_timestamp.log”文件中。在正式发布版本中调用该函数不会有任何操作。该函数需要管理员权限的用户才能执行。 返回值类型:boolean true:成功。 false:失败。 local_bgwriter_stat() 描述:显示本实例的bgwriter线程刷页信息,候选buffer链中页面个数,buffer淘汰信息。 返回值类型:record local_candidate_stat() 描述:显示本实例的候选buffer链中页面个数,buffer淘汰信息,包含normal buffer pool和segment buffer pool。 返回值类型:record local_ckpt_stat() 描述:显示本实例的检查点信息和各类日志刷页情况。 返回值类型:record local_double_write_stat() 描述:显示本实例的双写文件的情况。 返回值类型:record 表5 local_double_write_stat参数说明 参数 类型 描述 node_name text 实例名称。 curr_dwn int8 当前双写文件的序列号。 curr_start_page int8 当前双写文件恢复起始页面。 file_trunc_num int8 当前双写文件复用的次数。 file_reset_num int8 当前双写文件写满后发生重置的次数。 total_writes int8 当前双写文件总的I/O次数。 low_threshold_writes int8 低效率写双写文件的I/O次数(一次I/O刷页数量少于16页面)。 high_threshold_writes int8 高效率写双写文件的I/O次数(一次I/O刷页数量多于一批,421个页面)。 total_pages int8 当前刷页到双写文件区的总的页面个数。 low_threshold_pages int8 低效率刷页的页面个数。 high_threshold_pages int8 高效率刷页的页面个数。 file_id int8 当前双写文件的id号。 local_single_flush_dw_stat() 描述:显示本实例的单页面淘汰双写文件的情况。 返回值类型:record local_pagewriter_stat() 描述:显示本实例的刷页信息和检查点信息。 返回值类型:record local_redo_stat() 描述:显示本实例的备机的当前回放状态。 返回值类型:record 备注:返回的回放状态主要包括当前回放位置,回放最小恢复点位置等信息。 local_recovery_status() 描述:显示本实例的主机和备机的日志流控信息。 返回值类型:record local_rto_status() 描述:显示本实例的主机和备机的日志流控信息。 返回值类型:record gs_wlm_switch_cgroup(sess_id int8, cgroup name) 描述:切换指定会话的控制组。 返回值类型:record comm_client_info() 描述:用于查询单个节点活跃的客户端连接信息,返回结果解释见COMM_CLIENT_INFO。 返回值类型:setof record pg_get_flush_lsn() 描述:返回当前节点flush的xlog位置。 返回值类型:text pg_get_sync_flush_lsn() 描述:返回当前节点多数派flush的xlog位置。 返回值类型:text pgxc_wlm_rebuild_user_resource_pool() 描述:重新构建用户及资源池缓存信息。需要系统管理员权限才可以执行该函数。 返回值类型:boolean locktag_decode(locktag text) 描述:从locktag中解析锁的具体信息。 示例: gaussdb=# select locktag_decode('271b:0:0:0:0:6'); locktag_decode --------------------------------------------- locktype:transactionid, transactionid:10011 (1 row) 返回值类型:text disable_conn(disconn_mode text, host text, port integer) 描述:CM Agent处理CM Server下发的命令,在DN进行选主时设置该DN拒绝连接所有DN、强制连接某个DN或轮询连接所有DN。只有初始化用户和系统管理员才可以调用该函数。 返回值类型:void 表6 disable_conn参数说明 参数 类型 描述 disconn_mode text DN连接模式: 'prohibit_connection' - 拒绝连接所有DN。 'specify_connection' - 强制连接某个DN。 'polling_connection' - 轮询连接所有DN。 host text DN的IP。 port integer DN的端口号。 dbe_perf.get_global_full_sql_by_timestamp(start_timestamp timestamp with time zone, end_timestamp timestamp with time zone) 描述:获取集群级的全量SQL(Full SQL)信息。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:record 表7 dbe_perf.get_global_full_sql_by_timestamp参数说明 参数 类型 描述 start_timestamp timestamp with time zone SQL启动时间范围的开始时间点。 end_timestamp timestamp with time zone SQL启动时间范围的结束时间点。 dbe_perf.get_global_slow_sql_by_timestamp(start_timestamp timestamp with time zone, end_timestamp timestamp with time zone) 描述:获取集群级的慢SQL(Slow SQL)信息。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:record 表8 dbe_perf.get_global_slow_sql_by_timestamp参数说明 参数 类型 描述 start_timestamp timestamp with time zone SQL启动时间范围的开始时间点。 end_timestamp timestamp with time zone SQL启动时间范围的结束时间点。 statement_detail_decode(detail text, format text, pretty boolean) 描述:解析全量/慢SQL语句中的details字段的信息。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:text 表9 statement_detail_decode参数说明 参数 类型 描述 detail text SQL语句产生的事件的集合(不可读)。 format text 解析输出格式,取值为plaintext。 pretty boolean 当format为plaintext时,是否以优雅的格式展示: true:表示通过“\n”分隔事件。 false:表示通过“,”分隔事件。 pgxc_get_csn(tid) 描述:返回给定的事务id对应的事务提交序号(CSN)。 返回值类型:int8 get_global_user_transaction() 描述:返回所有节点上各用户的事务相关信息。 返回值类型:node_name name、usename name、commit_counter bigint、rollback_counter bigint、resp_min bigint、resp_max bigint、resp_avg bigint、resp_total bigint、bg_commit_counter bigint、bg_rollback_counter bigint、bg_resp_min bigint、bg_resp_max bigint、bg_resp_avg bigint、bg_resp_total bigint pg_collation_for() 描述:返回入参字符串对应的排序规则 参数:any(如果是常量必须进行显式类型转换) 返回值类型:text pgxc_unlock_for_sp_database(name Name) 描述:释放指定数据库锁。 参数:数据库名 返回值类型:Boolean pgxc_lock_for_sp_database(name Name) 描述:对指定的数据库加锁。 参数:数据库名 返回值类型:Boolean pgxc_unlock_for_transfer(name Name) 描述:释放用于数据传输(数据重分布)锁。 参数:数据库名 返回值类型:Boolean pgxc_lock_for_transfer(name Name) 描述:对数据库枷锁,用于数据传输(数据重分布)。 参数:数据库名 返回值类型:Boolean gs_comm_proxy_thread_status() 描述:用于在集群配置用户态网络的场景下,代理通信库comm_proxy收发数据包统计。该函数在当前版本不支持。 参数:nan 返回值类型:record gs_catalog_attribute_records() 描述:对于指定的系统表oid,返回该系统表对应的各个字段的定义。仅支持oid小于10000的普通系统表(不支持索引、toast表等)。 参数:系统表oid 返回值类型:record dynamic_func_control(scope text, function_name text, action text, "{params}" text[]) 描述:动态开启内置的功能,当前仅支持动态开启全量SQL。 返回值类型:record 表10 dynamic_func_control参数说明 参数 类型 描述 scope text 动态开启功能的范围,当前仅支持'GLOBAL/LOCAL'。 function_name text 功能的名称,当前仅支持'STMT'。 action text 当function_name为'STMT'时,action仅支持TRACK/UNTRACK/LIST/CLEAN: TRACK - 开始记录归一化SQL的全量SQL信息。 UNTRACK - 取消记录归一化SQL的全量SQL信息。 LIST - 列取当前TRACK的归一化SQL的信息。 CLEAN - 清理记录当前归一化SQL的信息。 params text[] 当function_name为'STMT'时,对应不同的action时,对应的params设置如下: TRACK - '{"归一化SQLID", "L0/L1/L2"}' UNTRACK - '{"归一化SQLID"}' LIST - '{}' CLEAN - '{}' gs_parse_page_bypath(path text, blocknum bigint, relation_type text, read_memory boolean) 描述:用于解析指定表页面,并返回存放解析内容的路径。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 表11 gs_parse_page_bypath参数说明 参数 类型 描述 path text 对于普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名);例如:base/16603/16394 对于普通表的visibility map,相对路径为:tablespace name/database oid/表的vm文件。例如:base/16603/16394_vm。 对于clog文件,相对路径为:pg_clog目录下的clog文件。例如:000000000000。 对于csnlog文件,相对路径为:pg_csnlog目录下的csnlog文件。例如:000000000000。 对于undo record文件,相对路径为:undo目录下的undo/UNDOPERSISTENCE/zondid.segno。例如:undo/permanent/00000.0000009。 对于undo meta文件,相对路径为:undo目录下的undo/UNDOPERSISTENCE/zondid.meta.segno。例如:undo/permanent/00000.meta.0000004。 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。分区表的路径可以查看pg_partition系统表和调用pg_partition_filepath(partition_oid)。 合法的path格式列举: global/relNode base/dbNode/relNode pg_tblspc/spcNode/version_dir/dbNode/relNode blocknum bigint -1:所有block的信息(强制从磁盘解析)。 0~MaxBlockNumber:对应block的信息。 对于BTree/UBTree索引,block 0为索引元页面。 对于undo record文件,采用逻辑块号,对应文件block大于等于segno*128,小于(segno+1)*128。 对于undo meta文件,采用逻辑块号,对应文件block大于等于segno*4,小于(segno+1)*4。 relation_type text heap(astore表)。 uheap(ustore表)。 btree(BTree索引)。 ubtree(UBTree索引)。 segment(段页式,预留参数,暂不支持)。 vm(astore普通表的visibility map)。 clog(事务状态日志commit log)。 csnlog(快照时间戳日志commit sequence number log)。 undo_slot(事务槽信息)。 undo_record(undo 记录信息)。 read_memory boolean false:从磁盘文件解析。 true:首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析。 正常使用示例: # 解析BTree索引文件中所有页面的信息内容 # 函数调用前请依据参数说明中的内容确保文件路径真实存在 gaussdb=# select gs_parse_page_bypath('base/16603/16394', -1, 'btree', false); gs_parse_page_bypath -------------------------------------------------------------------- /data_dir/1663_16603_16394_-1.page (1 row) # 解析vm文件中所有block的可见性结果 gaussdb=# select gs_parse_page_bypath('base/12828/16771_vm', -1, 'vm', false); gs_parse_page_bypath ----------------------------------------------------------------------- /data_dir/1663_12828_16771_-1_vm.page (1 row) # 解析clog文件中0号block的commit log日志 gaussdb=# select gs_parse_page_bypath('000000000000', 0, 'clog', false); gs_parse_page_bypath -------------------------------------------------------------------- /data_dir/000000000000.clog (1 row) 异常场景报错示例: # 入参blocknum超出取值范围时报错 gaussdb=# select gs_parse_page_bypath('base/12828/16777', -10, 'heap', false); ERROR: Blocknum should be between -1 and 4294967294. CONTEXT: referenced column: gs_parse_page_bypath gs_xlogdump_lsn(start_lsn text, end_lsn text) 描述:用于解析指定lsn范围之内的XLOG日志,并返回存放解析内容的路径。可以通过pg_current_xlog_location()获取当前XLOG位置。 参数:LSN起始位置,LSN结束位置。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 gs_xlogdump_xid(c_xid xid) 描述:用于解析指定xid的XLOG日志,并返回存放解析内容的路径。可以通过txid_current()获取当前事务ID。 参数:事务ID 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 gs_xlogdump_tablepath(path text, blocknum bigint, relation_type text) 描述:用于解析指定表页面对应的日志,并返回存放解析内容的路径。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 表12 gs_xlogdump_tablepath参数说明 参数 类型 描述 path text 对于普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名)。例如:base/16603/16394。 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。分区表的路径可以查看pg_partition系统表和调用pg_partition_filepath(partition_oid)。 合法的path格式列举: global/relNode base/dbNode/relNode pg_tblspc/spcNode/version_dir/dbNode/relNode blocknum bigint -1:所有block的信息(强制从磁盘解析)。 0~MaxBlockNumber:对应block的信息。 relation_type text heap(astore 表) btree(BTree 索引) segment(段页式,预留参数,暂不支持) gs_xlogdump_parsepage_tablepath(path text, blocknum bigint, relation_type text, read_memory boolean) 描述:用于解析指定表页面和表页面对应的日志,并返回存放解析内容的路径。可以看做一次执行gs_parse_page_bypath和gs_xlogdump_tablepath。该函数执行的前置条件是表文件存在。如果想查看已删除的表的相关日志,请直接调用gs_xlogdump_tablepath。 返回值类型:text 备注:必须是系统管理员或运维管理员才能执行此函数。 表13 gs_xlogdump_parsepage_tablepath参数说明 参数 类型 描述 path text 对于普通表,相对路径为:tablespace name/database oid/表的relfilenode(物理文件名);例如:base/16603/16394 表文件的相对路径可以通过pg_relation_filepath(table_name text)查找。分区表的路径可以查看pg_partition系统表和调用pg_partition_filepath(partition_oid)。 合法的path格式列举: global/relNode base/dbNode/relNode pg_tblspc/spcNode/version_dir/dbNode/relNode blocknum bigint -1:所有block的信息(强制从磁盘解析)。 0~MaxBlockNumber:对应block的信息。 relation_type text heap(astore 表) btree(BTree 索引) segment(段页式,预留参数,暂不支持) read_memory boolean false:从磁盘文件解析; true:首先尝试从共享缓冲区中解析该页面;如果共享缓冲区中不存在,则从磁盘文件解析。 gs_index_recycle_queue(Oid oid, int type, uint32 blkno) 描述:用于解析UBtree索引回收队列信息。 返回值类型:record 表14 gs_index_recycle_queue参数说明 参数 类型 描述 oid Oid 索引文件relfilenode,可以通过select relfilenode from pg_class where relname='name'查询,其中name表示对应的索引文件名字。 type int 0:表示解析整个待回收队列 1:表示解析整个空页队列 2:表示解析单个页面 blkno uint32 回收队列页面编号,该参数只有在type=2的时候有效,blkno有效取值范围为1~4294967294。 该函数功能在分布式版本上不支持,有报错提示。 gs_stat_wal_entrytable(int64 idx) 描述:用于输出xlog中预写日志插入状态表的内容。 返回值类型:record 表15 gs_stat_wal_entrytable参数说明 参数类型 参数名 类型 描述 输入参数 idx int64 -1:查询数组所有元素。 0-最大值:具体某个数组元素内容。 输出参数 idx uint64 记录对应数组中的下标。 输出参数 endlsn uint64 记录的LSN标签。 输出参数 lrc int32 记录对应的LRC。 输出参数 status uint32 标识当前entry对应的xlog是否已经完全拷贝到wal buffer中: 0:非COPIED 1: COPIED gs_walwriter_flush_position() 描述:输出预写日志的刷新位置。 返回值类型:record 表16 gs_walwriter_flush_position参数说明 参数类型 参数名 类型 描述 输出参数 last_flush_status_entry int32 Xlog flush上一个刷盘的tblEntry下标索引。 输出参数 last_scanned_lrc int32 Xlog flush上一次扫描到的最后一个tblEntry记录的LRC。 输出参数 curr_lrc int32 WALInsertStatusEntry状态表中LRC最新的使用情况,该LRC表示下一个Xlog记录写入时在WALInsertStatusEntry对应的LRC值。 输出参数 curr_byte_pos uint64 Xlog记录写入WAL 文件,最新分配的位置,下一个xlog记录插入点。 输出参数 prev_byte_size uint32 上一个xlog记录的长度。 输出参数 flush_result uint64 当前全局xlog刷盘的位置。 输出参数 send_result uint64 当前主机上xlog发送位置。 输出参数 shm_rqst_write_pos uint64 共享内存中记录的XLogCtl中LogwrtRqst请求的write位置。 输出参数 shm_rqst_flush_pos uint64 共享内存中记录的XLogCtl中LogwrtRqst请求的flush位置。 输出参数 shm_result_write_pos uint64 共享内存中记录的XLogCtl中LogwrtResult的write位置。 输出参数 shm_result_flush_pos uint64 共享内存中记录的XLogCtl中LogwrtResult的flush位置。 输出参数 curr_time text 当前时间。 gs_walwriter_flush_stat(int operation) 描述:用于统计预写日志write与sync的次数频率与数据量,以及xlog文件的信息。 返回值类型:record 表17 gs_walwriter_flush_stat参数说明 参数类型 参数名 类型 描述 输入参数 operation int -1: 关闭统计开关(默认状态为关闭)。 0:打开统计开关。 1:查询统计信息。 2:重置统计信息。 输出参数 write_times uint64 Xlog调用write接口的次数。 输出参数 sync_times uint64 Xlog调用sync接口次数。 输出参数 total_xlog_sync_bytes uint64 Backend线程请求写入xlog总量统计值。 输出参数 total_actual_xlog_sync_bytes uint64 调用sync接口实际刷盘的xlog总量统计值。 输出参数 avg_write_bytes uint32 每次调用XLogWrite接口请求写的xlog量。 输出参数 avg_actual_write_bytes uint32 实际每次调用write接口写的xlog量。 输出参数 avg_sync_bytes uint32 平均每次请求sync的xlog量。 输出参数 avg_actual_sync_bytes uint32 实际每次调用sync刷盘xlog量。 输出参数 total_write_time uint64 调用write操作总时间统计(单位:us)。 输出参数 total_sync_time uint64 调用sync操作总时间统计(单位:us)。 输出参数 avg_write_time uint32 每次调用write接口平均时间(单位:us)。 输出参数 avg_sync_time uint32 每次调用sync接口平均时间(单位:us)。 输出参数 curr_init_xlog_segno uint64 当前最新创建的xlog段文件编号。 输出参数 curr_open_xlog_segno uint64 当前正在写的xlog段文件编号。 输出参数 last_reset_time text 上一次重置统计信息的时间。 输出参数 curr_time text 当前时间。 pg_ls_tmpdir() 描述:返回默认表空间下临时目录(pgsql_tmp)中每个文件的名称、大小和最后修改时间。 参数:nan 返回值类型:record 备注:必须是系统管理员或者监控管理员才能执行此函数。 参数类型 参数名 类型 描述 输出参数 name text 文件名称。 输出参数 size int8 文件大小(单位:byte)。 输出参数 modification timestamptz 文件最后修改时间。 pg_ls_tmpdir(oid) 描述:返回指定表空间下临时目录(pgsql_tmp)中每个文件的名称、大小和最后修改时间。 参数:oid 返回值类型:record 备注:必须是系统管理员或者监控管理员才能执行此函数。 参数类型 参数名 类型 描述 输入参数 oid oid 表空间id。 输出参数 name text 文件名称。 输出参数 size int8 文件大小(单位:byte)。 输出参数 modification timestamptz 文件最后修改时间。 pg_ls_waldir() 描述:返回预写日志(WAL)目录中每个文件的名称、大小和最后修改时间。 参数:nan 返回值类型:record 备注:必须是系统管理员或者监控管理员才能执行此函数。 参数类型 参数名 类型 描述 输出参数 name text 文件名称。 输出参数 size int8 文件大小(单位:byte)。 输出参数 modification timestamptz 文件最后修改时间。 gs_write_term_log(void) 描述:写入一条日志记录DN节点当前的term值。备DN节点返回false,主DN节点写入成功后返回true。 返回值类型:Boolean gs_stat_space(bool init) 描述:用于查询UStore中做Insert操作时拓展页面的状态。 返回值类型:record 参数类型 参数名 类型 描述 输入参数 init bool 是否重置已统计的数据。 输出参数 access_func int8 relation_get_buffer_for_utuple接口访问总次数。 输出参数 cache_blk int8 relation_get_buffer_for_utuple获取缓存次数。 输出参数 cache_succ int8 relation_get_buffer_for_utuple获取缓存成功次数。 输出参数 nblk_first int8 relation_get_buffer_for_utuple中第一次获取nblocks-1次数。 输出参数 nblk_first_succ int8 relation_get_buffer_for_utuple中第一次获取nblocks-1成功次数。 输出参数 nblk_second int8 relation_get_buffer_for_utuple中第二次获取nblocks-1次数。 输出参数 nblk_second_succ int8 relation_get_buffer_for_utuple中第二次获取nblocks-1成功次数。 输出参数 fsm_first int8 第一次访问FSM次数。 输出参数 fsm_first_success int8 第一次访问FSM成功次数。 输出参数 fsm_rewrite int8 FSM回写次数。 输出参数 fsm_second int8 第二次访问FSM次数。 输出参数 fsm_second_sucess int8 第二次访问FSM成功次数。 输出参数 prune_count int8 relation_get_buffer_for_utuple中Prune次数。 输出参数 prune_space int8 relation_get_buffer_for_utuple中Prune总空间。 输出参数 coprune_count int8 联合清理执行次数。 输出参数 coprune_scan_blocks int8 联合清理扫描总页数。 输出参数 coprune_prune_count int8 联合清理Prune次数。 输出参数 coprune_prune_space int8 联合清理Prune总空间。 输出参数 con_extend_count int8 并发扩页数量。 输出参数 con_extend_time int8 并发扩页总时间。 输出参数 single_extend_time int8 单一扩页次数。 示例: gaussdb=# select * from gs_stat_space(false); access_func | cache_blk | cache_succ | nblk_first | nblk_first_succ | nblk_sencond | nblk_sencond_succ | fsm_first | fsm_first_success | fsm_rewrite | fsm_ second | fsm_second_success | prune_count | prune_space | coprune_count | coprune_scan_blocks | coprune_prune_count | coprune_prune_space | con_extend_count | con_extend_time | single_extend_count -------------+-----------+------------+------------+-----------------+--------------+-------------------+-----------+-------------------+-------------+----- -------+--------------------+-------------+-------------+---------------+---------------------+---------------------+---------------------+----------------- -+-----------------+--------------------- 10082397 | 10082397 | 10082235 | 88 | 78 | 47021 | 47021 | 162 | 74 | 360996 | 360996 | 270948 | 6711 | 0 | 45497 | 222619 | 0 | 0 | 3675 | 25542884 | 26791 (1 row) 备注:请重点关注cache_succ此值较小说明系统缓存失效,prune_space 此值较小表示UStore数据页页面清理机制可能存在问题,con_extend_time此值过高可能表明UStore并发拓页时耗时较高。 gs_redo_upage(directory_path text, backup_path text, blocknum bigint, relation_type text, xlog_path text, lsn text) 描述:用于将备份的特定UStore数据页面重放到指定LSN,并在重放期间校验页面,若检测到页面受损或页面记录受损则告警受损信息,并在重放后落盘页面,返回落盘路径、页面LSN以及受损信息,否则重放至指定LSN并落盘页面后返回,必须是系统管理员或运维管理员才能执行此函数。 返回值类型:record 参数类型 参数 类型 描述 输入参数 directory_path text 备份文件所在目录。 输入参数 backup_path text 备份表文件的相对路径,与备份文件所在目录拼成表文件的完整路径,例如,base/15635/12488,当备份不存在时,传入null。 输入参数 blocknum bigint 0~MaxBlockNumber:对应页面的块号。 输入参数 relation_type text uheap(Ustore数据页)。 ubtree(Ustore索引页)。 indexurq(Urq页面)。 undo_record(Undo record页面)。 undo_slot(Transaction slot页面)。 输入参数 xlog_path text 归档日志目录的绝对路径。 输入参数 lsn text lsn由两个16进制数(各32 bits)组成,中间通过"/"隔开,例如:2/962D1DF8。如果是0则重放到最新版本。 输出参数 output_filename text 文件的落盘路径与文件名。 输出参数 output_lsn text 最后一次页面重放的LSN。 输出参数 corruption_desc text 页面受损情况描述。 gs_xlogdump_bylastlsn(last_lsn text, blocknum bigint, relation_type text) 描述:传入一个页面LSN以及块号,解析LSN对应的WAL日志,并获取对应块号的last LSN继续解析,直到last LSN为0或者更老版本的WAL日志已被复用回收,并将解析后的日志落盘到指定路径,必须是系统管理员或运维管理员才能执行此函数。本系统函数不支持备机调用。 返回值类型:text 参数类型 参数名 类型 描述 输入参数 last_lsn text 解析指定页面的LSN,基于十六进制表示,如12BA/32CDEDDD,LSN可通过页面解析工具(gs_parse_page_bypath等)获取。 输入参数 blocknum bigint 指定页面的逻辑块号。 参数范围:-1~MaxBlockNumber。 块号指定为-1时表示从WAL日志中获取默认块号。 输入参数 relation_type text 指定解析页面的类型。 参数范围:uheap、ubtree、heap、btree、undo_record、undo_slot。 输出参数 output_filepath text WAL日志解析结果的落盘路径。 示例: # 获取页面LSN信息 # 函数调用前请依据参数说明中的内容确保文件路径真实存在 gaussdb=# select * from gs_parse_page_bypath('base/15833/16768', 0, 'uheap', false); output_filepath --------------------------------------------------------------- /data1/database/cluster/primary/data/1663_15833_16768_0.page (1 row) gaussdb=# select * from gs_xlogdump_bylastlsn('0/4593570', -1, 'uheap'); output_filepath ------------------------------------------------------------------- /data1/database/cluster/primary/data/pg_log/dump/4593570_-1.xlog (1 row) gaussdb=# select * from gs_xlogdump_bylastlsn('0/4593570', 0, 'ubtree'); ERROR: The input lsn 0/4593570 related xlog is not ubtree. dbe_perf.get_full_sql_by_parent_id_and_timestamp(parent_id bigint, start_timestamp timestamp with time zone, end_timestamp timestamp with time zone) 描述:根据parent_id获取某个时间段内,执行某个存储过程的数据库级的全量SQL及其子语句的记录。只可在系统库中查询到结果,用户库中无法查询。 返回值类型:record 参数 类型 描述 parent_id bigint 指定需要检索的存储过程的调用语句的unique_sql_id。 start_timestamp timestamp with time zone SQL启动时间范围的开始时间点。 end_timestamp timestamp with time zone SQL启动时间范围的结束时间点。 示例: gaussdb=# CREATE TABLE test(a int,b int); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE gaussdb=# INSERT INTO test values(1,1); INSERT 0 1 gaussdb=# CREATE PROCEDURE mypro1() as num int; gaussdb$# begin gaussdb$# INSERT INTO test values(2,2); gaussdb$# DELETE FROM test where a = 2; gaussdb$# end; gaussdb$# / CREATE PROCEDURE # 打开参数,跟踪存储过程子语句。 gaussdb=# SET instr_unique_sql_track_type = 'all'; SET # 打开参数,dbe_perf.statement_history表生成全量语句记录。 gaussdb=# SET track_stmt_stat_level = 'L0,L0'; SET gaussdb=# CALL mypro1(); mypro1 -------- (1 row) gaussdb=# SET track_stmt_stat_level = 'off,L0'; SET gaussdb=# SET instr_unique_sql_track_type = 'top'; SET # 查询关键信息,作为函数参数使用。 gaussdb=# SELECT query,unique_query_id,start_time,finish_time FROM dbe_perf.statement_history; query | unique_query_id | start_time | finish_time --------------------------------------+-----------------+-------------------------------+------------------------------- set track_stmt_stat_level = 'L0,L0'; | 636388010 | 2023-06-02 17:40:49.176155+08 | 2023-06-02 17:40:49.176543+08 call mypro1(); | 536458473 | 2023-06-02 17:40:59.028144+08 | 2023-06-02 17:40:59.032027+08 delete from test where a = ? | 583323884 | 2023-06-02 17:40:59.029955+08 | 2023-06-02 17:40:59.031577+08 insert into test values(?,?) | 769279931 | 2023-06-02 17:40:59.029219+08 | 2023-06-02 17:40:59.029947+08 (4 rows) # 通过外层语句的unique_query_id,开始时间的起止时间作为参数,查询该时间段内,指定存储过程及其子语句的信息。 gaussdb=# SELECT query FROM dbe_perf.get_full_sql_by_parent_id_and_timestamp(536458473,'2023-06-02 17:40:59.028144+08','2023-06-02 17:40:59.032027+08'); query ------------------------------ call mypro1(); delete from test where a = ? insert into test values(?,?) (3 rows) gs_index_dump_read(int8 reset, text out_type) 描述:用于查询索引获取新页面时在循环队列中产生的buffer read信息和索引页面相同key从左到右遍历叶子页面的buffer read信息。 返回值类型:record 参数类型 参数名 类型 描述 输入参数 reset int8 0:将统计信息reset为初始值0,重新开始统计。 1:直接show出当前的统计信息。 输入参数 out_type text urq:输出循环队列的统计信息。 ubtree:输出索引页的统计信息。 all:循环队列和索引页的统计信息全部输出。 输出参数 relfilenode oid 统计到的最大buffer read值对应的索引relfilenode。 输出参数 max_count int8 最大buffer read值。 输出参数 ave_count int8 平均buffer read值。 该接口当前仅支持USTORE索引表。 该接口执行时,先reset清理、将记录全部置为0。再进行查询,直到下次统计到信息值之前,查询记录会一直为0。查询示例如下: gaussdb=# SELECT * FROM gs_index_dump_read(0, 'all'); relfilenode | max_count | ave_count --------------+-------------+------------- | | (1 row) gaussdb=# SELECT * FROM gs_index_dump_read(1, 'all'); relfilenode | max_count | ave_count --------------+-------------+------------- 0 | 0 | 0 0 | 0 | 0 (2 rows) 父主题: 系统管理函数
  • 接口介绍 高级功能包DBE_RANDOM支持的所有接口请参见表 DBE_RANDOM接口参数说明。 表1 DBE_RANDOM接口参数说明 接口名称 描述 DBE_RANDOM.SET_SEED 设置一个随机数的种子。 DBE_RANDOM.GET_VALUE 生成一个大小介于指定的low及high之间的随机数。 DBE_RANDOM.SET_SEED 存储过程SEED用于设置一个随机数的种子。DBE_RANDOM.SET_SEED函数原型为: 1 DBE_RANDOM.SET_SEED (seed IN INTEGER); 表2 DBE_RANDOM.SET_SEED接口参数说明 参数 描述 seed 用于产生一个随机数的种子。 DBE_RANDOM.GET_VALUE 存储过程VALUE生成一个大小介于指定的low及high之间的随机数。DBE_RANDOM.GET_VALUE函数原型为: 1 2 3 4 DBE_RANDOM.GET_VALUE( min IN NUMBER default 0, max IN NUMBER default 1) RETURN NUMBER; 表3 DBE_RANDOM.GET_VALUE接口参数说明 参数 描述 min 指定随机数大小的下边界,生成的随机数大于或等于min。 max 指定随机数大小的上边界,生成的随机数小于max。 实际上,只要求这里的参数类型是NUMERIC即可,对于左右边界的大小并没有要求。 DBE_RANDOM实现的是伪随机,所以若使用的初值(种子)不变,那么伪随机数的数序也不变,使用时需要注意。 生成的随机数有效数字为15位。
  • DBE_SQL_UTIL.create_remote_hint_sql_patch create_remote_hint_sql_patch是用于指定CN创建调优SQL PATCH的接口函数,返回执行是否成功。 限制仅初始用户、sysadmin、opradmin、monadmin用户有权限调用。 表1 DBE_SQL_UTIL.create_remote_hint_sql_patch入参和返回值列表 参数 类型 描述 node_name IN text 目标节点名。 patch_name IN name PATCH名称。 unique_sql_id IN bigint 查询全局唯一ID。 hint_string IN text Hint文本。 description IN text PATCH的备注,默认值为NULL。 enabled IN bool PATCH是否生效,默认值为true。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • MY_TABLESPACES MY_TABLESPACES视图显示用户拥有存储对象的表空间的描述信息。默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。ORA数据库与GaussDB逻辑结构特性不一致。 表1 MY_TABLESPACES字段 名称 类型 描述 tablespace_name character varying(64) 表空间名称。 block_size numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extents numeric 暂不支持,值为NULL。 max_extents numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 min_extlen numeric 暂不支持,值为NULL。 contents character varying(9) 暂不支持,值为NULL。 status character varying(9) 表空间状态,默认为ONLINE(在线)。 logging character varying(9) 暂不支持,值为NULL。 force_logging character varying(3) 暂不支持,值为NULL。 extent_management character varying(10) 暂不支持,值为NULL。 allocation_type character varying(9) 暂不支持,值为NULL。 segment_space_management character varying(6) 暂不支持,值为NULL。 def_tab_compression character varying(8) 暂不支持,值为NULL。 retention character varying(11) 暂不支持,值为NULL。 bigfile character varying(3) 暂不支持,值为NULL。 predicate_evaluation character varying(7) 暂不支持,值为NULL。 encrypted character varying(3) 暂不支持,值为NULL。 compress_for character varying(30) 暂不支持,值为NULL。 def_inmemory character varying(8) 暂不支持,值为NULL。 def_inmemory_priority character varying(8) 暂不支持,值为NULL。 def_inmemory_distribute character varying(15) 暂不支持,值为NULL。 def_inmemory_compression character varying(17) 暂不支持,值为NULL。 def_inmemory_duplicate character varying(13) 暂不支持,值为NULL。 shared character varying(12) 暂不支持,值为NULL。 def_index_compression character varying(8) 暂不支持,值为NULL。 index_compress_for character varying(13) 暂不支持,值为NULL。 def_cellmemory character varying(14) 暂不支持,值为NULL。 def_inmemory_service character varying(12) 暂不支持,值为NULL。 def_inmemory_service_name character varying(1000) 暂不支持,值为NULL。 lost_write_protect character varying(7) 暂不支持,值为NULL。 chunk_tablespace character varying(1) 暂不支持,值为NULL。 父主题: 系统视图
  • IN expression IN (value [, ...]) 右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果列表中的内容符合左侧表达式的结果,则IN的结果为true。如果没有相符的结果,则IN的结果为false。 示例如下: 1 2 3 4 5 gaussdb=# SELECT 8000+500 IN (10000, 9000) AS RESULT; result ---------- f (1 row)
  • NOT IN expression NOT IN (value [, ...]) 右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果在列表中的内容没有符合左侧表达式结果的内容,则NOT IN的结果为true。如果有符合的内容,则NOT IN的结果为false。 示例如下: 1 2 3 4 5 gaussdb=# SELECT 8000+500 NOT IN (10000, 9000) AS RESULT; result ---------- t (1 row) 如果查询语句返回结果为空,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空,则NOT IN的返回结果为null,而不是false。这样的处理方式和SQL返回空值的布尔组合规则是一致的。 在所有情况下X NOT IN Y等价于NOT(X IN Y)。 不支持对XML类型数据操作。
  • PGReplicationConnection的继承关系 PGReplicationConnection是逻辑复制的接口,实现类是PGReplicationConnectionImpl,该类位于org.postgresql.replication Package中,该类的声明如下: public class PGReplicationConnection implements PGReplicationConnection
  • 常用方法 表1 PGReplicationConnection常用方法 返回值 方法 描述 throws ChainedCreateReplicationSlotBuilder createReplicationSlot() 用于创建逻辑复制槽。连接CN只能创建集群级(CSN序)逻辑复制槽,并在其他CN和主DN上创建同名复制槽,连接DN只能创建本地(LSN序)逻辑复制槽。若需要创建CN上的LSN序逻辑复制槽,或是DN上的CSN序逻辑复制槽,请参考逻辑复制SQL函数pg_create_logical_replication_slot。 - void dropReplicationSlot(String slotName) 用于删除逻辑复制槽。连接CN删除逻辑复制槽时,若为LSN序逻辑复制槽,则仅删除当前节点复制槽,其他节点同名复制槽不受影响,否则只要其他节点有残留同名CSN序逻辑复制槽,执行删除时不会因为某些节点不存在复制槽而报错,同时所有节点的同名复制槽会被成功删除。如果任何节点均不存在该复制槽,则报错。如果当前CN节点残留LSN序逻辑复制槽,同时其他某些节点上残留同名CSN序逻辑复制槽,则连接当前CN节点上执行删除复制槽操作仅会删除本地LSN序逻辑复制槽,待删除完成再次执行删除操作方可删除其他节点的同名复制槽。 SQLException,IOException ChainedStreamBuilder replicationStream() 用户开启逻辑复制。 -
  • SUMMARY_STATIO_USER_SEQUENCES SUMMARY_STATIO_USER_SEQUENCES视图显示集群内汇聚的命名空间中所有用户关系表类型为序列的I/O状态信息。 表1 SUMMARY_STATIO_USER_SEQUENCES字段 名称 类型 描述 schemaname name 序列中模式名。 relname name 序列名。 blks_read numeric 从序列中读取的磁盘块数。 blks_hit numeric 序列中缓存命中数。 父主题: Cache/IO
共100000条