华为云用户手册

  • GS_MATVIEW GS_MATVIEW系统表提供了关于数据库中每一个物化视图的信息。 表1 GS_MATVIEW字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 matviewid oid 物化视图的oid。 mapid oid 物化视图map表的oid,map表为物化视图关联表,与物化视图一一对应。全量物化视图不存在对应的map表,该字段为0。 ivm boolean 物化视图的类型,t为增量物化视图,f为全量物化视图。 needrefresh boolean 保留字段。 refreshtime timestamp without time zone 物化视图上一次刷新时间,若未刷新则为null。仅对DN上的增量物化视图维护该字段,其余情况均为null。 父主题: 物化视图
  • 动态数据脱敏函数 creditcardmasking(col text, letter char default 'x') 描述:将col字符串后四位之前的数字使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text basicemailmasking(col text, letter char default 'x') 描述:将col字符串中第一个'@'之前的字符使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text fullemailmasking(col text, letter char default 'x') 描述:将col字符串中出现最后一个'.'之前的字符(除'@'外)使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text alldigitsmasking(col text, letter char default '0') 描述:将col字符串中出现的数字使用letter替换。 参数:待替换的字符串、替换字符。 返回值类型:text shufflemasking(col text) 描述:将col字符串中的字符乱序排列。 参数:待替换的字符串、替换字符。 返回值类型:text randommasking(col text) 描述:将col字符串中的字符随机化。 参数:待替换的字符串、替换字符。 返回值类型:text regexpmasking(col text, reg text, replace_text text, pos INTEGER default 0, reg_len INTEGER default -1) 描述:将col字符串使用正则表达式替换。 参数:待替换的字符串、正则表达式、替换的起始位置、替换长度。 返回值类型:text 父主题: 函数和操作符
  • PG_OPCLASS PG_OPCLASS系统表定义索引访问方法操作符类。 每个操作符类为一种特定数据类型和一种特定索引访问方法定义索引字段的语义。一个操作符类本质上指定一个特定的操作符族适用于一个特定的可索引的字段数据类型。索引的字段实际可用的族中的操作符集是接受字段中左侧字段的数据类型。 表1 PG_OPCLASS字段 名称 类型 引用 描述 oid oid - 行标识符(隐含字段,必须明确选择)。 opcmethod oid PG_AM.oid 操作符类所服务的索引访问方法。 opcname name - 这个操作符类的名称。 opcnamespace oid PG_NAMESPACE.oid 这个操作符类的名称空间。 opcowner oid PG_AUTHID.oid 操作符类属主。 opcfamily oid PG_OPFAMILY.oid 包含该操作符类的操作符族。 opcintype oid PG_TYPE.oid 操作符类索引的数据类型。 opcdefault boolean - 如果操作符类是opcintype的缺省,则为真(t),否则为假(f)。 opckeytype oid PG_TYPE.oid 索引数据的类型,如果和opcintype相同则为零。 一个操作符类的opcmethod必须匹配包含它的操作符族的opfmethod。 父主题: 其他系统表
  • THREAD_WAIT_STATUS 通过该视图可以检测当前节点上工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况,如表1所示。具体事件信息请参见15.3.67-表2 等待状态列表、15.3.67-表3 轻量级锁等待事件列表、15.3.67-表4 IO等待事件列表和15.3.67-表5 事务锁等待事件列表。 表1 THREAD_WAIT_STATUS字段 名称 类型 描述 node_name text 节点名称。 db_name text 数据库名称。 thread_name text 线程名称。 query_id bigint 查询ID,对应debug_query_id。 tid bigint 当前线程的线程号。 sessionid bigint session的ID。 lwtid integer 当前线程的轻量级线程号。 psessionid bigint streaming线程的父线程。 tlevel integer streaming线程的层级。 smpid integer 并行线程的ID。 wait_status text 当前线程的等待状态。等待状态的详细信息请参见表 等待状态列表。 wait_event text 如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、I/O的信息;否则为空。 locktag text 当前线程正在等待锁的信息。 lockmode text 当前线程正等待获取的锁模式。包含表级锁、行级锁、页级锁下的各模式。 block_sessionid bigint 阻塞当前线程获取锁的会话标识。 global_sessionid text 全局会话ID。 父主题: Session/Thread
  • DBE_PLDEBUGGER.continue 执行当前存储过程,直到下一个断点或结束,返回执行的下一条的行数和对应query,如表1所示。 函数原型为: 1 2 DBE_PLDEBUGGER.continue() RETURN Record; 表1 continue 返回值列表 名称 类型 描述 funcoid OUT oid 函数id。 funcname OUT text 函数名。 lineno OUT integer 当前调试运行的下一行行号。 query OUT text 当前调试的下一行函数源码。 父主题: DBE_PLDEBUGGER Schema
  • 参数说明 SESSION 声明的参数只对当前会话起作用。如果SESSION和LOCAL都没出现,则SESSION为缺省值。 如果在事务中执行了此命令,命令的产生影响将在事务回滚之后消失。如果该事务已提交,影响将持续到会话的结束,除非被另外一个SET命令重置参数。 LOCAL 声明的参数只在当前事务中有效。在COMMIT或ROLLBACK之后,会话级别的设置将再次生效。 不论事务是否提交,此命令的影响只持续到当前事务结束。一个特例是:在一个事务里面,既有SET命令,又有SET LOCAL命令,且SET LOCAL在SET后面,则在事务结束之前,SET LOCAL命令会起作用,但事务提交之后,则是SET命令会生效。 TIME ZONE timezone 用于指定当前会话的本地时区。 取值范围:有效的本地时区。该选项对应的运行时参数名称为TimeZone,DEFAULT缺省值为PRC。 CURRENT_SCHEMA schema CURRENT_SCHEMA用于指定当前的模式。 取值范围:已存在模式名称。如果模式名不存在,会导致CURRENT_SCHEMA值为空。 SCHEMA schema 同CURRENT_SCHEMA。此处的schema是个字符串。 例如:set schema 'public'; NAMES {'charset_name' [COLLATE 'collation_name'] | DEFAULT}; 在B兼容模式下,并在设置b_format_version='5.7'、b_format_dev_version='s2';时,支持指定collate子句。 用于设置客户端字符编码,常量字符串的字符集、字符序,及返回结果的字符集。 等价于: set client_encoding = charset_name; set character_set_connection = charset_name; set collation_connection = collation_name; set character_set_results = charset_name; 取值范围:B兼容模式下支持的字符集,字符序。暂不支持指定charset_name与数据库字符集不同。 其他场景下不支持指定collate子句。 用于设置客户端的字符编码。 等价于: set client_encoding to charset_name 取值范围:有效的字符编码。该选项对应的运行时参数名称为client_encoding,默认编码为UTF8。 config_parameter 可设置的运行时参数的名称。可用的运行时参数可以使用SHOW ALL命令查看。 部分通过SHOW ALL查看的参数不能通过SET设置。如max_datanodes。 value config_parameter的新值。可以声明为字符串常量、标识符、数字,或者逗号分隔的列表。DEFAULT用于把这些参数设置为它们的缺省值。 SESSION | @@SESSION. | @@ 声明的参数生效方式为superuser、user,可通过pg_settings系统视图的context字段确定,如果没有出现GLOBAL /SESSION,则SESSION为缺省值。支持config_parameter赋值为表达式。 SET SESSION 只有在兼容B模式下(sql_compatibility = 'B')支持,并且GUC参数b_format_behavior_compat_options设置值包含 enable_set_variables的场景下才支持(set b_format_behavior_compat_options = 'enable_set_variables')。 使用@@config_parameter进行操作符运算时,尽量使用空格隔开。比如set @@config_parameter1=@@config_parameter1*2; 命令中,会将=@@当做操作符,可将其修改为set @@config_parameter1= @@config_parameter1 * 2 。
  • 示例 --设置所处的时区。 gaussdb=# SET TIME ZONE 'PST8PDT'; --设置模式搜索路径。 gaussdb=# SET search_path TO tpcds, public; --设置客户端编码集。 gaussdb=# SET client_encoding TO utf8; --设置XML的解析方式。 gaussdb=# SET XML OPTION DOCUMENT; --把日期时间风格设置为传统的 POSTGRES 风格(日在月前)。 gaussdb=# SET datestyle TO postgres,dmy; --SET自定义用户变量的功能。 gaussdb=# CREATE DATABASE user_var DBCOMPATIBILITY 'B'; gaussdb=# \c user_var user_var=# SET b_format_behavior_compat_options = enable_set_variables; user_var=# SET @v1 := 1, @v2 := 1.1, @v3 := true, @v4 := 'dasda', @v5 := x'41'; --查询自定义用户变量。 user_var=# SELECT @v1, @v2, @v3, @v4, @v5, @v6, @v7; @v1 | @v2 | @v3 | @v4 | @v5 | @v6 | @v7 -----+-----+-----+-------+----------+-----+----- 1 | 1.1 | 1 | dasda | 01000001 | | (1 row) --PREPARE语法使用自定义用户变量。 user_var=# SET @sql = 'select 1'; user_var=# PREPARE stmt as @sql; user_var=# EXECUTE stmt; user_var=# \c postgres --删除数据库。 gaussdb=# DROP DATABASE user_var;
  • 语法格式 设置所处的时区。 SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT }; 设置所属的模式。 SET [ SESSION | LOCAL ] {CURRENT_SCHEMA { TO | = } { schema | DEFAULT } | SCHEMA 'schema'}; 设置客户端编码集。 SET [ SESSION | LOCAL ] NAMES {'charset_name' [COLLATE 'collation_name'] | DEFAULT}; 设置其他运行时参数。 SET [ SESSION | LOCAL ] {config_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }};
  • 配置设置函数 配置设置函数是可以用于查询以及修改运行时配置参数的函数。 current_setting(setting_name) 描述:当前的设置值。 返回值类型:text 备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如: 1 2 3 4 5 6 gaussdb=# SELECT current_setting('datestyle'); current_setting ----------------- ISO, MDY (1 row) set_working_grand_version_num_manually(tmp_version) 描述:通过切换授权版本号来更新和升级高斯数据库的新特性。 返回值类型:void shell_in(type) 描述:为shell类型输入路由(那些尚未填充的类型)。 返回值类型:void shell_out(type) 描述:为shell类型输出路由(那些尚未填充的类型)。 返回值类型:void set_config(setting_name, new_value, is_local) 描述:设置参数并返回新值。 返回值类型:text 备注:set_config将参数setting_name设置为new_value,如果is_local为true,则new_value将只应用于当前事务。如果希望new_value应用于当前会话,可以使用false,和SQL语句SET是等效的。 示例: 1 2 3 4 5 6 gaussdb=# SELECT set_config('log_statement_stats', 'off', false); set_config ------------ off (1 row) 父主题: 系统管理函数
  • 逻辑解码 在逻辑解码独立多版本字典中,使用的逻辑解码字典表是系统表。逻辑解码系统表均为实例级系统表,仅管理员权限用户可以查看和修改系统表。 GS_ LOG ICAL_ATTRDEF GS_LOGICAL_ATTRIBUTE GS_LOGICAL_AUTHID GS_LOGICAL_CLASS GS_LOGICAL_CONSTRAINT GS_LOGICAL_DATABASE GS_LOGICAL_DICTIONARY GS_LOGICAL_INDEX GS_LOGICAL_NAMESPACE GS_LOGICAL_PARTITION GS_LOGICAL_TYPE GS_SQLAPPLY_SKIP GS_TXN_LSN_TIME 父主题: 系统表
  • LOCAL_ACTIVE_SESSION LOCAL_ACTIVE_SESSION视图显示本节点上的ACTIVE SESSION PROFILE内存中的样本,如表1所示。 表1 LOCAL_ACTIVE_SESSION字段 名称 类型 描述 sampleid bigint 采样ID。 sample_time timestamp with time zone 采样的时间。 need_flush_sample boolean 该样本是否需要刷新到磁盘。 databaseid oid 数据库ID thread_id bigint 线程的ID。 sessionid bigint 会话的ID。 start_time timestamp with time zone 会话的启动时间。 event text 具体的事件名称。 lwtid integer 当前线程的轻量级线程号。 psessionid bigint streaming线程的父线程。 tlevel integer streaming线程的层级。与执行计划的层级(id)相对应。 smpid integer smp执行模式下并行线程的并行编号。 userid oid session用户的id。 application_name text 应用的名称。 client_addr inet client端的地址。 client_hostname text client端的名称。 client_port integer 客户端用于与后端通讯的TCP端口号。 query_id bigint debug query id。 unique_query_id bigint unique query id。 user_id oid unique query的key中的user_id。 cn_id integer cn id,在DN上表示该unique sql来自该CN节点,unique query的key中的cn_id。 unique_query text 规范化后的UniqueSQL文本串。 locktag text 会话等待锁信息,可通过locktag_decode解析。 lockmode text 会话等待锁模式。 block_sessionid bigint 如果会话正在等待锁,阻塞该会话获取锁的会话标识。 final_block_sessionid bigint 表示源头阻塞会话id。 wait_status text 描述event列的更多详细信息。 global_sessionid text 全局会话ID。 xact_start_time timestamp with time zone 事务开始时间。 query_start_time timestamp with time zone 语句开始执行时间。 state text 当前语句状态。 可能取值为:active、idle in transaction、fastpath function call、idle in transaction (aborted)、disabled、retrying。 event_start_time timestamp with time zone wait event的开始时间。 current_xid xid 当前事务ID。 top_xid xid 顶层事务ID。 parent_unique_sql_id bigint 调用本条语句的父语句SQL_Id。 父主题: Session/Thread
  • MY_PART_INDEXES MY_PART_INDEXES视图显示当前用户下分区表索引的信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_PART_INDEXES字段 名称 类型 描述 def_tablespace_name name 分区表索引的表空间名称。 index_owner character varying(64) 分区表索引的所有者名称。 index_name character varying(64) 分区表索引的名称。 partition_count bigint 分区表索引的索引分区的个数。 partitioning_key_count integer 分区表的分区键个数。 partitioning_type text 分区表的分区策略。 说明: 当前分区表策略支持范围见CREATE TABLE PARTITION。 schema character varying(64) 分区表索引的模式。 table_name character varying(64) 分区表索引所属的分区表名称。 subpartitioning_type text 二级分区表的分区策略。如果分区表是一级分区表,则显示NONE。 说明: 当前二级分区表策略支持范围见CREATE TABLE SUBPARTITION。 def_subpartition_count integer 默认创建二级分区的个数,二级分区表为1,一级分区表为0。 subpartitioning_key_count integer 分区表二级分区键的个数。 父主题: 分区表
  • 常用方法 表1 PGReplicationConnection常用方法 返回值 方法 描述 throws ChainedCreateReplicationSlotBuilder createReplicationSlot() 用于创建逻辑复制槽。连接CN只能创建集群级( CS N序)逻辑复制槽,并在其他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() 用户开启逻辑复制。 -
  • PGReplicationConnection的继承关系 PGReplicationConnection是逻辑复制的接口,实现类是PGReplicationConnectionImpl,该类位于com.huawei.gaussdb.jdbc.replication Package中,该类的声明如下: public class PGReplicationConnection implements PGReplicationConnection
  • PG_STATIO_ALL_SEQUEN CES PG_STATIO_ALL_SEQUENCES视图显示当前数据库中每个序列的I/O的统计信息。具体字段信息如表1所示。 表1 PG_STATIO_ALL_SEQUENCES字段 名称 类型 描述 relid oid 序列OID。 schemaname name 序列的模式名。 relname name 序列名。 blks_read bigint 从序列中读取的磁盘块数。 blks_hit bigint 序列命中缓存数。 父主题: 其他系统视图
  • GLOBAL_FILE_REDO_IOSTAT 显示数据库内各节点的Redo(WAL)相关统计信息,如表1所示。 表1 GLOBAL_FILE_REDO_IOSTAT字段 名称 类型 描述 node_name name 节点名称。 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
  • 功能描述 用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC、PG_STATISTIC_EXT下,执行ANALYZE命令后,可在上述系统表中查询收集到的统计信息,也可以通过系统视图PG_STATS、PG_EXT_STATS查询信息。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。 如果没有指定参数,ANALYZE会分析当前数据库中的每个表和分区表。同时也可以通过指定table_name、column_name和partition_name参数把分析限定在特定的表、列或分区表中。 {ANALYZE|ANALYSE} VERIFY用于检测数据库中普通表的数据文件是否损坏。
  • 注意事项 ANALYZE非临时表不支持在一个匿名块、事务块、函数或存储过程内被执行。ANALYZE临时表支持存储过程中被执行,不支持统计信息回滚操作。 ANALYZE VERIFY如果不涉及远程读场景,远程读参数则不会生效。对于检测出关键系统表页面损坏的错误,将直接报错不再继续检测。 如果ANALYZE不指定参数,则默认处理当前用户拥有相应权限的表。如果参数指定了一个表参数,ANALYZE只处理指定的表。 要对一个表进行ANALYZE操作,用户必须是表的所有者或者被授予了指定表VACUUM权限,三权分立开关关闭时,默认系统管理员有该权限。数据库的所有者允许对数据库中除了共享目录以外的所有表进行ANALYZE操作(该限制意味着只有系统管理员才能真正对一个数据库进行ANALYZE操作)。ANALYZE会跳过那些用户没有权限的表。 ANALYZE不收集无法做比较或等值运算的列,例如:CURSOR类型。 如果拟分析的表成了一个空表,ANALYZE不会记录该表的统计信息,而原来已有统计信息则会保留。
  • 语法格式 收集表的统计信息。 { ANALYZE | ANALYSE } [ VERBOSE ] [ table_name [ ( column_name [, ...] ) ] ] [ WITH PARTITION_MODE ]; 收集分区表的分区统计信息。 { ANALYZE | ANALYSE } [ VERBOSE ] table_name [ ( column_name [, ...] ) ] PARTITION ( partition_name ) ; 使用关键字PARTITION,partition_name必须为一级分区名字。 分布式不支持二级分区。 收集外表的统计信息。 { ANALYZE | ANALYSE } [ VERBOSE ] { foreign_table_name | FOREIGN TABLES };
  • 参数说明 VERBOSE 启用显示进度信息。 如果指定了VERBOSE,ANALYZE发出进度信息,表明目前正在处理的表。各种有关表的统计信息也会打印出来。 table_name 需要分析的特定表的表名(可能会带模式名),如果省略,将对数据库中的所有表(非外部表)进行分析。 对于ANALYZE收集统计信息,目前仅支持行存表的外表。 取值范围:已有的表名。 column_name,column_1_name,column_2_name 需要分析特定列的列名,默认为所有列。 取值范围:已有的列名。 partition_name 如果table为分区表,在关键字PARTITION后面指定分区名partition_name表示分析该分区表的统计信息。 取值范围:表的某一个分区名。 foreign_table_name 需要分析的特定表的表名(可能会带模式名)。 取值范围:已有的表名。 FOREIGN TABLES 分析所有当前用户权限下的外表。 index_name 需要分析的特定索引表的表名(可能会带模式名)。 取值范围:已有的表名。 FAST|COMPLETE 对于行存表,FAST模式下主要对于行存表的CRC和page header进行校验,如果校验失败则会告警;而COMPLETE模式下,则主要对行存表的指针、tuple进行解析校验。 CASCADE CASCADE模式下会对当前表的所有索引进行检测处理。 PARTITION_MODE PARTITION_MODE适用于分区表级联收集统计信息,可选项和含义如下表所示。不适用于非分区表。 表1 PARTITION_MODE选项说明 PARTITION_MODE选项 含义 ALL 收集整表、一级分区的统计信息。 GLOBAL 收集整表的统计信息。 PARTITION 收集一级分区的统计信息。 GLOBAL AND PARTITION 收集整表、一级分区的统计信息。 ALL COMPLETE 收集整表、一级分区的统计信息。 AUTO 缺省值,以statistic_granularity或default_statistic_granularity中配置的参数为准,其中表级参数statistic_granularity的优先级高于全局参数default_statistic_granularity。 其中,ALL和ALL COMPLETE的区别为:ALL_COMPLETE模式下,采用更高的采样率,相应地,计算统计信息的耗时会更长。 从505.0.0之前版本升级到505.0.0及更高版本时,在升级观察期期间,PARTITION_MODE不生效,其行为与升级前版本保持一致。 analyze整库时,不支持指定partition mode,即不支持analyze with global等语法。 analyze整库时,支持设置default_statistic_granularity为GLOBAL或ALL,此时analyze行为和default_statistic_granularity的定义相同;当default_statistic_granularity设置为其他值时,analyze行为退化为GLOBAL行为。
  • 示例 收集表的的统计信息。 --创建customer_info表。 gaussdb=# CREATE TABLE customer_info( wr_returned_date_sk INTEGER , wr_returned_time_sk INTEGER , wr_item_sk INTEGER NOT NULL ,wr_refunded_customer_sk INTEGER ) DISTRIBUTE BY HASH (wr_item_sk); --使用ANALYZE语句更新统计信息。 gaussdb=# ANALYZE customer_info; --使用ANALYZE VERBOSE语句更新统计信息,并输出customer_info表的相关信息。 gaussdb=# ANALYZE VERBOSE customer_info; INFO: analyzing "public.customer_info"(cn_5002 pid=53078) --使用ANALYZE VERBOSE输出customer_info表的wr_returned_time_sk列信息。 gaussdb=# ANALYZE VERBOSE customer_info(wr_returned_time_sk); INFO: analyzing "public.customer_info"(cn_5002 pid=53078) 收集分区表的统计信息。 --创建分区表。 gaussdb=# CREATE TABLE customer_par( wr_returned_date_sk INTEGER , wr_returned_time_sk INTEGER , wr_item_sk INTEGER NOT NULL, wr_returned_customer_sk INTEGER) DISTRIBUTE BY HASH (wr_item_sk)PARTITION BY RANGE(wr_returned_date_sk)(PARTITION P1 VALUES LESS THAN(2452275),PARTITION P2 VALUES LESS THAN(2452640),PARTITION P3 VALUES LESS THAN(2453000),PARTITION P4 VALUES LESS THAN(MAXVALUE))ENABLE ROW MOVEMENT; --使用ANALYZE语句更新统计信息。 gaussdb=# ANALYZE customer_par; --使用ANALYZE VERBOSE输出customer_par表的相关信息。 gaussdb=# ANALYZE VERBOSE customer_par; INFO: analyzing "public.customer_par"(cn_5001 pid=446617) --使用ANALYZE VERBOSE输出P1一级分区表的相关信息。 gaussdb=# ANALYZE VERBOSE customer_par PARTITION(P1); INFO: analyzing "public.customer_par"(cn_5001 pid=446617) 手动收集多列统计信息。 --手动收集wr_returned_date_sk、wr_returned_time_sk这两列的统计信息。 gaussdb=# ANALYZE VERBOSE customer_info (wr_returned_date_sk,wr_returned_time_sk); INFO: analyzing "public.customer_par"(cn_5001 pid=446617) 自动收集多列统计信息。 --给customer_info表创建索引。 gaussdb=# CREATE INDEX customer_index ON customer_info USING btree(wr_returned_date_sk,wr_returned_time_sk,wr_item_sk,wr_refunded_customer_sk); --设置auto_statistic_ext_columns参数为4。 gaussdb=# set auto_statistic_ext_columns=4; --自动收集多列统计信息。 gaussdb=# ANALYZE VERBOSE customer_info; INFO: analyzing "public.customer_info"(cn_5001 pid=446617) 检测当前库的数据文件。 gaussdb=# ANALYZE VERIFY FAST; 检测表和索引的数据文件。 --检查customer_info表。 gaussdb=# ANALYZE VERIFY FAST customer_info; --检查customer_index索引。 gaussdb=# ANALYZE VERIFY FAST customer_index; 检测表分区的数据文件。 --检查customer_par分区表中的P1分区。 gaussdb=# ANALYZE VERIFY FAST customer_par PARTITION (P1); 删除数据。 --删除索引customer_index。 gaussdb=# DROP INDEX customer_index; --删除表customer_info。 gaussdb=# DROP TABLE customer_info; --删除分区表customer_par。 gaussdb=# DROP TABLE customer_par;
  • DBE_SQL_UTIL.drop_sql_patch drop_sql_patch是用于删除SQL PATCH的接口函数,返回执行是否成功,如表1所示。 限制:仅初始用户、sysadmin、opradmin和monadmin用户有权限调用。 表1 DBE_SQL_UTIL.drop_sql_patch入参和返回值列表 参数 类型 描述 patch_name IN name PATCH名称。 result OUT bool 执行是否成功。 父主题: DBE_SQL_UTIL Schema
  • SUMMARY_STAT_XACT_USER_FUNCTIONS 显示集群内各节点,本事务内函数执行的统计信息的汇总求和结果(在CN节点使用),如表1所示。 表1 SUMMARY_STAT_XACT_USER_FUNCTIONS字段 名称 类型 描述 schemaname name 函数所在的Schema名。 funcname name 函数名称。 calls numeric 函数被调用的次数。 total_time double precision 此函数及其调用的所有其他函数所花费的总时间。 self_time double precision 在此函数本身中花费的时间(不包括它调用的其他函数)。 父主题: Object
  • GLOBAL_THREAD_WAIT_STATUS 通过该视图可以检测所有节点上工作线程(backend thread)以及辅助线程(auxiliary thread)的阻塞等待情况,如表1所示。具体事件信息请参见表 等待状态列表、表 轻量级锁等待事件列表、表 IO等待事件列表和表 事务锁等待事件列表。 通过GLOBAL_THREAD_WAIT_STATUS视图,可以查看数据库全局各个节点上所有SQL语句产生的线程之间的调用层次关系,以及各个线程的阻塞等待状态,从而更容易定位hang以及类似现象的原因。 GLOBAL_THREAD_WAIT_STATUS视图和THREAD_WAIT_STATUS视图列定义完全相同,这是由于GLOBAL_THREAD_WAIT_STATUS视图本质是到数据库中各个节点上查询THREAD_WAIT_STATUS视图汇总的结果。 表1 GLOBAL_THREAD_WAIT_STATUS字段 名称 类型 描述 node_name text 节点名称。 db_name text 数据库名称。 thread_name text 线程名称。 query_id bigint 查询ID,对应debug_query_id。 tid bigint 当前线程的线程号。 sessionid bigint session的ID。 lwtid integer 当前线程的轻量级线程号。 psessionid bigint streaming线程的父线程。 tlevel integer streaming线程的层级。 smpid integer 并行线程的ID。 wait_status text 当前线程的等待状态。等待状态的详细信息请参见表 等待状态列表。 wait_event text 如果wait_status是acquire lock、acquire lwlock、wait io三种类型,此列描述具体的锁、轻量级锁、I/O的信息。否则是空。 locktag text 当前线程正在等待锁的信息。 lockmode text 当前线程正等待获取的锁模式。包含表级锁、行级锁、页级锁下的各模式。 block_sessionid bigint 阻塞当前线程获取锁的会话标识。 global_sessionid text 全局会话ID。 父主题: Session/Thread
  • ADM_TYPES ADM_TYPES视图用于描述数据库中的所有对象类型。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TYPES字段 名称 类型 描述 owner character varying(128) 类型的所有者。 type_name character varying(128) 类型名称。 type_oid raw 类型的标识符(OID)。 typecode character varying(128) 类型的类型代码。 attributes numeric 类型中的属性数。 methods numeric 暂不支持,值为0。 predefined character varying(3) 该类型是否是内置类型。 incomplete character varying(3) 该类型是否是不完整类型。 final character varying(3) 暂不支持,值为NULL。 instantiable character varying(3) 暂不支持,值为NULL。 persistable character varying(3) 暂不支持,值为NULL。 supertype_owner character varying(128) 暂不支持,值为NULL。 supertype_name character varying(128) 暂不支持,值为NULL。 local_attributes numeric 暂不支持,值为NULL。 local_methods numeric 暂不支持,值为NULL。 typeid raw 暂不支持,值为NULL。 父主题: 其他系统视图
  • SQL语法格式说明 表1 SQL语法格式说明 格式 意义 [ ] 表示用“[ ]”括起来的部分是可选的。 ... 表示前面的元素可重复出现。 [ x | y | ... ] 表示从两个或多个选项中选取一个或者不选。 { x | y | ... } 表示从两个或多个选项中选取一个。 [x | y | ... ] [ ... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用空格分隔。 [ x | y | ... ] [ ,... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用逗号分隔。 { x | y | ... } [ ... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间以空格分隔。 { x | y | ... } [ ,... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间用逗号分隔。 父主题: SQL语法
  • WDR Snapshot Schema WDR Snapshot在启动后(打开GUC参数enable_wdr_snapshot),会在用户表空间"pg_default",数据库"postgres"下的Snapshot Schema中创建对象,用于持久化WDR快照数据。默认初始化用户或monadmin用户可以访问和操作Snapshot Schema下的对象。 根据GUC参数wdr_snapshot_retention_days来自动管理快照的生命周期。 用户应该禁止对Snapshot Schema下的表进行增删改等操作,人为对这些表的修改或破坏可能会导致WDR各种异常情况甚至WDR不可用。 WDR Snapshot原信息 WDR Snapshot 数据表 父主题: Schema
  • GS_SPM_PA RAM GS_SPM_PARAM是SPM计划管理特性中的系统表,当前该特性在分布式中不支持。它用于存储SQL参数相关信息的系统表,每个SQL只存储一组参数,具备sysadmin权限的用户可以对该系统表进行读操作,但只有初始用户才可以对该系统表进行写的操作。 表1 GS_SPM_PARAM字段 名称 类型 描述 sql_namespace oid schema oid。 sql_hash bigint SPM中SQL的唯一标识。 position integer 参数在SQL中的位置索引,从0开始。 datatype integer 参数类型的oid。 datatype_string text 参数类型的字符串形式。 value_string text 参数值的字符串形式。 is_null boolean 参数值是否是NULL。 hash_value bigint 参数值的hash value。 user oid 本记录的创建用户。 creation_time timestamp with time zone 本记录的创建时间。 父主题: SPM计划管理
  • 示例 示例1:Union中的待定类型解析。这里,unknown类型文本'b'将被解析成text类型。 1 2 3 4 5 6 gaussdb=# SELECT text 'a' AS "text" UNION SELECT 'b'; text ------ a b (2 rows) 示例2:简单Union中的类型解析。文本1.2的类型为numeric,而且integer类型的1可以隐含地转换为numeric,因此使用这个类型。 1 2 3 4 5 6 gaussdb=# SELECT 1.2 AS "numeric" UNION SELECT 1; numeric --------- 1 1.2 (2 rows) 示例3:转置Union中的类型解析。这里,因为类型real不能被隐含转换成integer,但是integer可以隐含转换成real,那么联合的结果类型将是real。 1 2 3 4 5 6 gaussdb=# SELECT 1 AS "real" UNION SELECT CAST('2.2' AS REAL); real ------ 1 2.2 (2 rows) 示例4:TD模式下,coalesce参数输入int和varchar类型,那么解析成varchar类型。A模式下会报错。 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 --在A模式下,创建A兼容模式的数据库a_1。 gaussdb=# CREATE DATABASE a_1 dbcompatibility = 'A'; --切换数据库为a_1。 gaussdb=# \c a_1 --创建表t1。 a_1=# CREATE TABLE t1(a int, b varchar(10)); --查看coalesce参数输入int和varchar类型的查询语句的执行计划。 a_1=# EXPLAIN SELECT coalesce(a, b) FROM t1; ERROR: COALESCE types integer and character varying cannot be matched LINE 1: EXPLAIN SELECT coalesce(a, b) FROM t1; ^ CONTEXT: referenced column: coalesce --删除表。 a_1=# DROP TABLE t1; --切换数据库为testdb。 a_1=# \c testdb --在TD模式下,创建TD兼容模式的数据库td_1。 gaussdb=# CREATE DATABASE td_1 dbcompatibility = 'C'; --切换数据库为td_1。 gaussdb=# \c td_1 --创建表t2。 td_1=# CREATE TABLE t2(a int, b varchar(10)); --查看coalesce参数输入int和varchar类型的查询语句的执行计划。 td_1=# EXPLAIN VERBOSE select coalesce(a, b) from t2; QUERY PLAN --------------------------------------------------------------------------------------- Data Node Scan (cost=0.00..0.00 rows=0 width=0) Output: (COALESCE((t2.a)::character varying, t2.b)) Node/s: All dbnodes Remote query: SELECT COALESCE(a::character varying, b) AS "coalesce" FROM public.t2 (4 rows) --删除表。 td_1=# DROP TABLE t2; --切换数据库为testdb。 td_1=# \c testdb --删除A和TD模式的数据库。 gaussdb=# DROP DATABASE a_1; gaussdb=# DROP DATABASE td_1; 示例5:ORA模式下,将整个表达式最终的返回值类型定为result1的数据类型,或者与result1同类型范畴的更高精度的数据类型。 --在ORA模式下,创建ORA兼容模式的数据库ora_1。 gaussdb=# CREATE DATABASE ora_1 dbcompatibility = 'A'; --切换数据库为ora_1。 gaussdb=# \c ora_1 --开启Decode兼容性参数。 set sql_beta_feature='a_style_coerce'; --创建表t1。 ora_1=# CREATE TABLE t1(c_int int, c_float8 float8, c_char char(10), c_text text, c_date date); --插入数据。 ora_1=# INSERT INTO t1 VALUES(1, 2, '3', '4', date '12-10-2010'); --result1类型为char,defresult类型为text,text精度更高,返回值的类型由char更新为text。 ora_1=# SELECT decode(1, 2, c_char, c_text) AS result, pg_typeof(result) FROM t1; result | pg_typeof --------+----------- 4 | text (1 row) --result1类型为int,属于数值类型范畴,返回值的类型置为numeric。 ora_1=# SELECT decode(1, 2, c_int, c_float8) AS result, pg_typeof(result) FROM t1; result | pg_typeof --------+----------- 2 | numeric (1 row) --不存在defresult数据类型向result1数据类型之间的隐式转换,报错处理。 ora_1=# SELECT decode(1, 2, c_int, c_date) FROM t1; ERROR: CASE types integer and timestamp without time zone cannot be matched LINE 1: SELECT decode(1, 2, c_int, c_date) FROM t1; ^ CONTEXT: referenced column: c_date --关闭Decode兼容性参数。 set sql_beta_feature='none'; --删除表。 ora_1=# DROP TABLE t1; DROP TABLE --切换数据库为testdb。 ora_1=# \c testdb --删除ORA模式的数据库。 gaussdb=# DROP DATABASE ora_1; DROP DATABASE
  • 对于case和coalesce,在TD兼容模式下的处理 如果所有输入都是相同的类型,并且不是unknown类型,那么解析成这种类型。 如果所有输入都是unknown类型则解析成text类型。 如果输入字符串(包括unknown,unknown当text来处理)和数字类型,那么解析成字符串类型,如果是其他不同的类型范畴,则报错。 如果输入类型是同一个类型范畴,则选择该类型的优先级较高的类型。 把所有输入转换为所选的类型。如果从给定的输入到所选的类型没有隐式转换则失败。
共100000条