华为云用户手册

  • GLOBAL_STATIO_ALL_TABLES GLOBAL_STATIO_ALL_TABLES视图显示集群内各节点每张表(包括TOAST表)的I/O状态信息,如表1所示。 表1 GLOBAL_STATIO_ALL_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表OID。 schemaname name 该表模式名。 relname name 表名。 heap_blks_read bigint 从该表中读取的磁盘块数。 heap_blks_hit bigint 该表缓存命中数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引命中缓存数。 toast_blks_read bigint 该表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 该表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read bigint 该表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 该表的TOAST表索引命中缓冲区数(如果存在)。 last_updated timestamp with time zone 视图中该表监控数据最后一次更新的时间。 父主题: Cache/IO
  • GS_ILM_JOBDETAIL GS_ILM_JOBDETAIL系统表提供了记录策略动作类型、判定条件等。 表1 GS_ILM_JOBDETAIL字段 名称 类型 描述 taskoid bigint 所属ADO Task的Oid。 jobtype "char" 当前Job类型:压缩(‘c’)。 jobstatus smallint 当前Job状态: 1:JOB CREATED 2:COMPLETED SUC CES SFULLY 3:FAILED 4:STOPPED 5:JOB CREATION FAILED jobname text ADO Job名称表内唯一,关联系统表PG_JOB的job_name。 starttime timestamp with time zone 启动时间。 completetime timestamp with time zone 完成时间。 payload text 当前Job的具体执行内容PL/SQL代码。 statistics text 当前Job的统计信息。 comments text 记录当前Job执行的描述信息,如失败原因等。 父主题: OLTP表压缩
  • Host CPU Host CPU列名称及描述如表1所示。 表1 Host CPU报表主要内容 列名称 描述 Cpus CPU数量。 Cores CPU核数。 Sockets CPU Sockets数量。 Load Average Begin 开始snapshot的Load Average值。 Load Average End 结束snapshot的Load Average值。 %User 用户态在CPU时间上的占比。 %System 内核态在CPU时间上的占比。 %WIO Wait IO在CPU时间上的占比。 %Idle 空闲时间在CPU时间上的占比。 父主题: WDR报告信息介绍
  • GS_ADM_ILMOBJE CTS GS_ADM_ILMOBJECTS视图反映所有存在ILM策略应用的数据对象与相应策略的概要信息,包含策略名称、数据对象名称、策略的来源、策略的启用删除状态。需要有系统管理员权限才可以访问此系统视图。 表1 GS_ADM_ILMOBJECTS字段 名称 类型 描述 policy_name character varying(128) ADO策略名称,系统自动生成,规则为:p+策略ID。 object_owner character varying(128) 数据对象的属主。 object_name character varying(128) 数据对象名称。 subobject_name character varying(128) 数据对象分区名称。 object_type character varying(18) 数据对象类型。取值范围: TABLE:表。 TABLE PARTITION:分区。 inherited_from character varying(20) 当前策略是继承哪一个对象上的策略。取值范围: TABLE:表。 TABLE PARTITION:分区。 POLICY NOT INHERITED:不继承。 tbs_inherited_from character varying(30) 当前策略是继承哪一个表空间上的策略,当前版本值为NULL。 enabled character varying(7) 该策略对当前对象是否开启。 deleted character varying(7) 标识该对象上的ILM策略被删除。实际操作结果是删除分区或者是删除分区上的策略,该条记录都会被删除(ILMOBJ)。 node_name name 数据来源节点的名称。 父主题: OLTP表压缩
  • DB_TRIGGERS DB_TRIGGERS视图显示当前用户能访问到的触发器的信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 DB_TRIGGERS字段 名称 类型 描述 trigger_name character varying(64) 触发器名称。 table_name character varying(64) 关系表名称。 table_owner character varying(64) 角色名称。 status character varying(64) 触发器的状态。 O:触发器在“origin”和“local”模式下触发。 D:触发器被禁用。 R:触发器在“replica”模式下触发。 A:触发器始终触发。 父主题: 其他系统视图
  • MY_INDEXES MY_INDEXES视图显示当前用户的索引信息。该视图同时存在于PG_CATALOG和SYS Schema下。具体字段信息如表1所示。 表1 MY_INDEXES字段 名称 类型 描述 owner character varying(64) 索引的所有者。 index_name character varying(64) 索引名称。 table_name character varying(64) 索引对应的表名。 uniqueness text 表示该索引是否为唯一索引。 UNIQUE:唯一索引。 NONUNIQUE:非唯一索引。 partitioned character(3) 表示该索引是否具有分区表的性质。 Yes:索引具有分区表的性质。 No:索引不具有分区表的性质。 generated character varying(1) 表示该索引的名称是否为系统生成。 y:索引名称为系统生成。 n:索引名称非系统生成。 index_type character varying(27) 索引类型。 NORMAL:索引属性都是简单的引用,表达式树为空。 FUNCTION-BASED NORMAL:存在表达式树用于非简单字段引用的索引属性。 table_owner character varying(128) 索引对象的所有者。 table_type character(11) 索引对象的类型。 TABLE:索引对象为表类型。 tablespace_name character varying(30) 包含索引的表空间名称。 status character varying(8) 非分区索引状态。 VALID:非分区索引可以用于查询。 UNUSABLE:非分区索引不可用。 N/A:索引具有分区表性质。 compression character varying(13) 暂不支持,值为NULL。 prefix_length numeric 暂不支持,值为NULL。 ini_trans numeric 暂不支持,值为NULL。 max_trans numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extents numeric 暂不支持,值为NULL。 max_extents numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 pct_threshold numeric 暂不支持,值为NULL。 include_column numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 pct_free numeric 暂不支持,值为NULL。 logging character varying(3) 暂不支持,值为NULL。 blevel numeric 暂不支持,值为NULL。 leaf_blocks numeric 暂不支持,值为NULL。 distinct_keys numeric 暂不支持,值为NULL。 avg_leaf_blocks_per_key numeric 暂不支持,值为NULL。 avg_data_blocks_per_key numeric 暂不支持,值为NULL。 clustering_factor numeric 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed date 暂不支持,值为NULL。 degree character varying(40) 暂不支持,值为NULL。 instances character varying(40) 暂不支持,值为NULL。 temporary character varying(1) 暂不支持,值为NULL。 secondary character varying(1) 暂不支持,值为NULL。 buffer_pool character varying(7) 暂不支持,值为NULL。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 duration character varying(15) 暂不支持,值为NULL。 pct_direct_access numeric 暂不支持,值为NULL。 ityp_owner character varying(128) 暂不支持,值为NULL。 ityp_name character varying(128) 暂不支持,值为NULL。 parameters character varying(1000) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 domidx_status character varying(12) 暂不支持,值为NULL。 domidx_opstatus character varying(6) 暂不支持,值为NULL。 funcidx_status character varying(8) 暂不支持,值为NULL。 join_index character varying(3) 暂不支持,值为NULL。 iot_redundant_pkey_elim character varying(3) 暂不支持,值为NULL。 dropped character varying(3) 暂不支持,值为NULL。 visibility character varying(9) 表示该索引对优化器是否可见。 VISIBLE:索引对优化器可见。 INVISIBLE:索引对优化器不可见。 domidx_management character varying(14) 暂不支持,值为NULL。 segment_created character varying(3) 暂不支持,值为NULL。 orphaned_entries character varying(3) 暂不支持,值为NULL。 indexing character varying(7) 暂不支持,值为NULL。 auto character varying(3) 暂不支持,值为NULL。 父主题: 其他系统视图
  • 逻辑解码 在逻辑解码独立多版本字典中,使用的逻辑解码字典表是系统表。逻辑解码系统表均为实例级系统表,仅管理员权限用户可以查看和修改系统表。 GS_LOGICAL_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 父主题: 系统表
  • java.sql.Statement java.sql.Statement是SQL语句接口。 表1 对java.sql.Statement的支持情况 方法名 返回值类型 支持JDBC4 addBatch(String sql) void Yes clearBatch() void Yes clearWarnings() void Yes close() void Yes closeOnCompletion() void Yes execute(String sql) Boolean Yes execute(String sql, int autoGeneratedKeys) Boolean Yes execute(String sql, int[] columnIndexes) Boolean Yes execute(String sql, String[] columnNames) Boolean Yes executeBatch() Boolean Yes executeQuery(String sql) ResultSet Yes executeUpdate(String sql) int Yes executeUpdate(String sql, int autoGeneratedKeys) int Yes executeUpdate(String sql, int[] columnIndexes) int Yes executeUpdate(String sql, String[] columnNames) int Yes getConnection() Connection Yes getFetchDirection() int Yes getFetchSize() int Yes getGeneratedKeys() ResultSet Yes getMaxFieldSize() int Yes getMaxRows() int Yes getMoreResults() Boolean Yes getMoreResults(int current) Boolean Yes getResultSet() ResultSet Yes getResultSetConcurrency() int Yes getResultSetHoldability() int Yes getResultSetType() int Yes getQueryTimeout() int Yes getUpdateCount() int Yes getWarnings() SQLWarning Yes isClosed() Boolean Yes isCloseOnCompletion() Boolean Yes isPoolable() Boolean Yes setCursorName(String name) void Yes setEscapeProcessing(boolean enable) void Yes setFetchDirection(int direction) void Yes setMaxFieldSize(int max) void Yes setMaxRows(int max) void Yes setPoolable(boolean poolable) void Yes setQueryTimeout(int seconds) void Yes setFetchSize(int rows) void Yes cancel() void Yes executeLargeUpdate(String sql) long No getLargeUpdateCount() long No executeLargeBatch() long No executeLargeUpdate(String sql, int autoGeneratedKeys) long No executeLargeUpdate(String sql, int[] columnIndexes) long No executeLargeUpdate(String sql, String[] columnNames) long No enableStreamingResults() void Yes 通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,会有性能损耗。 由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCommit(false)。同时在业务数据需要持久化到数据库中时,在连接上执行提交操作。 LargeUpdate相关方法必须在JDBC4.2及以上版本使用。 enableStreamingResults()是开启流式读的一个自定义接口,该接口间接调用setFetchSize(Integer.MIN_VALUE)。若要开启流式读功能,需要将url中的enableStreamingQuery设置为true,同时调用setFetchSize(Integer.MIN_VALUE)或者enableStreamingResults()。除开启流式读功能外,setFetchSize()的入参只能为正数或者0。 父主题: JDBC接口参考
  • DBE_PERF Schema DBE_PERF Schema内视图主要用来诊断性能问题,也是WDR Snapshot的数据来源。数据库安装后,默认只有初始用户和监控管理员具有模式dbe_perf的权限,有权查看该模式下的视图和函数。若是由老版本升级而来,为保持权限的前向兼容,模式dbe_perf的权限与老版本保持一致,当前版本禁止所有用户在该模式下创建操作符,已创建的操作符不影响使用。从OS、Instance、Memory等多个维度划分组织视图,并且符合如下命名规范: GLOBAL_开头的视图,代表从CN/DN请求数据,并将数据追加对外返回,不会处理数据。 SUMMARY_开头的视图,代表是将集群内的数据概述,多数情况下是返回CN/DN(有时只有CN的)的数据,会对数据进行加工和汇聚。 非这两者开头的视图,一般代表本地视图,不会向其它CN/DN请求数据。 OS Instance File Object Workload Session/Thread Transaction Query Cache/IO Comm Utility Lock Wait Events Configuration Operator Workload Manager Global Plancache RTO & RPO AI Watchdog Trace Function 废弃 父主题: Schema
  • GS_ENCRYPTED_PROC GS_ENCRYPTED_PROC系统表提供了密态函数/存储过程函数参数、返回值的原始数据类型,加密列等信息。 表1 GS_ENCRYPTED_PROC字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 func_id oid function的oid,对应系统表PG_PROC中的oid行标识符。 prorettype_orig integer 返回值的原始数据类型。 last_change timestamp without time zone 密态函数上次修改的时间。 proargcachedcol oidvector 函数INPUT参数对应的加密列的oid,对应系统表GS_ENCRYPTED_COLUMNS中的oid行标识符。 proallargtypes_orig oid[] 所有函数参数的原始数据类型。 父主题: 密态等值查询
  • GLOBAL_COMM_CLIENT_INFO GLOBAL_COMM_CLIENT_INFO用来查询整个集群全局节点活跃的客户端连接信息,默认只有系统管理员权限才可以访问此系统视图。 表1 GLOBAL_COMM_CLIENT_INFO字段 名称 类型 描述 node_name text 当前节点的名称。 app text 连接当前DN的客户端,如coordinator(CN)、GTM、DN等。 tid bigint 当前线程的线程号。 lwtid integer 当前线程的轻量级线程号。 query_id bigint 查询ID,对应debug_query_id。 socket integer 如果是物理连接,显示socket。 remote_ip text 对端节点IP。 remote_port text 对端节点port。 logic_id integer 如果是逻辑连接,显示sid。 父主题: 通信
  • 使用LIKE进行模糊查找时如何忽略大小写? 答:可以将LIKE改为ILIKE,也可以使用upper或者lower函数。具体示例如下: --前置操作创建表和插入数据。 gaussdb=# CREATE TABLE tbl_test1(c1 varchar); gaussdb=# INSERT INTO tbl_test1 VALUES ('EEE'),('ABC'),('abc'),('aabccd'); --使用like进行模糊查询,结果过滤了所有大写的字符串,不符合预期。 gaussdb=# SELECT * FROM tbl_test1 WHERE c1 LIKE 'ab%'; c1 ----- abc (1 row) --使用ILIKE进行模糊查询。 gaussdb=# SELECT * FROM tbl_test1 WHERE c1 ILIKE 'ab%'; c1 ----- ABC abc (2 rows) --使用upper()函数。 gaussdb=# SELECT * FROM tbl_test1 WHERE upper(c1) LIKE 'AB%'; c1 ----- ABC abc (2 rows) --删除。 gaussdb=# DROP TABLE tbl_test1; 父主题: FAQ
  • 字符集与字符序 字符集(Character Set)是字符的编码规则,字符序(Collation)是字符的排序规则,本章主要对 GaussDB 的MYSQL兼容模式(即sql_compatibility = 'MYSQL')下的字符集、字符序进行介绍,以下介绍的字符集、字符序规则和语法仅在MYSQL兼容模式下支持。 GaussDB目前所支持的字符集可以参考CREATE DATABASE章节中ENCODING部分介绍,所支持的字符序可以通过查询系统表PG_COLLATION。 其中,部分字符集在MySQL模式下存在默认字符序,可以参考表1。 字符集和字符序存在以下说明: 每一个字符集都有一个或多个字符序,只有一个字符序为字符集的默认字符序。 每一个字符序仅有一个相关联的字符集。 相同数据使用不同的字符序排序结果可能会不同。 在GaussDB中,utf8mb4与utf8为同一字符集。 在GaussDB的MySQL模式(即sql_compatibility = 'MYSQL')下,binary字符集与SQL_ASCII字符集为同一字符集。 建议表字段和server_encoding选择相同字符集,避免转码带来的性能损耗。 GaussDB数据库 支持以下功能: 支持多种字符集存储字符串。 支持使用字符序比较字符串。 支持数据库级、模式级、表级、字段级字符集和字符序。 暂不支持在同一服务器、同一数据库、同一个表、同一条SQL语句中混合使用不同字符集和字符序的字符串。 客户端连接的字符集和字符序 数据库级字符集和字符序 模式级字符集和字符序 表级字符集和字符序 列级字符集字符序 字符类型表达式的字符集和字符序 字符集和字符序合并规则 父主题: SQL参考
  • ADM_IND_PARTITIONS ADM_IND_PARTITIONS视图显示数据库中所有一级分区表Local索引的索引分区信息。数据库中每个一级分区表的Local索引的索引分区(如果存在的话)都会在ADM_IND_PARTITIONS里有一行记录。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_IND_PARTITIONS字段 名称 类型 描述 index_owner character varying(64) 索引分区所属分区表索引的所有者的名称。 index_name character varying(64) 索引分区所属分区表索引的名称。 partition_name character varying(64) 索引分区的名称。 def_tablespace_name name 索引分区的表空间名称。 high_value text 索引分区所对应分区的上边界。 对于范围分区和间隔分区,显示各分区的上边界值。 对于列表分区,显示各分区的取值列表。 对于哈希分区,显示各分区的编号。 index_partition_usable boolean 索引分区是否可用。 t(true):表示可用。 f(false):表示不可用。 schema character varying(64) 索引分区所属分区表索引的模式。 high_value_length integer 索引分区所对应分区的边界的字符长度。 composite character varying(3) 索引是否属于二级分区表上的本地索引,该表不存储二级分区信息,所以该值为NO。 subpartition_count numeric 分区中的二级分区数,该表不存储二级分区信息,所以该值为0。 partition_position numeric 索引分区在索引中的位置。 status character varying(8) 索引分区是否可用。 tablespace_name name 分区所在表空间的名称。 pct_free numeric 块中最小可用空间百分比。 ini_trans numeric 初始事务数,默认值为4,非USTORE分区表时为NULL。 max_trans numeric 最大事务数,默认值为128,非USTORE分区表时为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(7) 是否记录对索引的更改。 compression character varying(13) 分区索引是否启用索引压缩。 blevel numeric 暂不支持,值为NULL。 leaf_blocks numeric 暂不支持,值为NULL。 distinct_keys numeric 暂不支持,值为NULL。 avg_leaf_blocks_per_key numeric 暂不支持,值为NULL。 avg_data_blocks_per_key numeric 暂不支持,值为NULL。 clustering_factor numeric 根据索引的值表示表中行的顺序。需要通过执行analyze进行统计。 num_rows numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp with time zone 最近分析此分区的日期。 buffer_pool character varying(7) 分区的实际缓冲池。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 pct_direct_access numeric 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 domidx_opstatus character varying(6) 暂不支持,值为NULL。 parameters character varying(1000) 暂不支持,值为NULL。 interval character varying(3) 分区是否在间隔分区表的间隔节中。分布式暂不支持间隔分区,该字段值为NO。 segment_created character varying(3) 索引分区段是否已创建。 orphaned_entries character varying(3) 暂不支持,值为NULL。 父主题: 分区表
  • 示例 gaussdb=# deallocate all; DEALLOCATE ALL gaussdb=# prepare p1 as insert /*+ no_gpc */ into t1 select c1,c2 from t2 where c1=$1; PREPARE gaussdb=# execute p1(3); INSERT 0 1 gaussdb=# select * from dbe_perf.global_plancache_status where schema_name='public' order by 1,2; nodename | query | refcount | valid | databaseid | schema_name | params_num | func_id | pkg_id | stmt_id ----------+-------+----------+-------+------------+-------------+------------+---------+--------+--------- (0 rows) dbe_perf.global_plancache_status视图中无结果即没有计划被全局缓存。
  • PRVT_ILM PRVT_ILM接口为ILM特性内部使用,用户无法直接调用,只列举接口名称,不做详细接口原型描述。 接口名称 描述 be_active_ado_window 维护窗口触发动作,刷新ilmadowindow触发时间及动作。 be_create_ado_window_for_each_db 维护窗口触发动作,在实例的每个数据库中创建ilmadowindow。 be_execute_ilm ilmadowind执行动作,进行自动评估。 be_execute_ilm_dn 用于分布式DN上的自动评估。该操作会影响集群整体的ILM后台调度。 flush_task_executestate 自动调度任务刷新task状态。 generate_taskoid CN生成用于本次调度的taskid。 evaluate_obj_policy 触发调度后对数据对象进行评估。 change_be_ilm dbe_ilm_admin.enable_ilm()和disable_ilm()帮助函数。该操作会影响集群整体的ILM后台调度。 get_compression_ratio dbe_compression.get_compression_ratio()帮助函数。 get_compression_type dbe_compression.get_compression_type()帮助函数。 get_lastmodified_time dbe_heat_map.row_heat_map()帮助函数。 ilm_job_action 压缩任务执行体,分布式DN使用。 delete_expired_ilm_log 清理过期日志,分布式使用。 delete_gs_ilm_task 操作特性相关系统表,分布式DN使用。 insert_gs_ilm_jobdetail 操作特性相关系统表,分布式DN使用。 insert_gs_ilm_task 操作特性相关系统表,分布式DN使用。 insert_gs_ilm_taskdetail 操作特性相关系统表,分布式DN使用。 update_gs_ilm_jobdetail 操作特性相关系统表,分布式DN使用。 update_gs_ilm_object 操作特性相关系统表,分布式DN使用。 update_gs_ilm_param 操作特性相关系统表,分布式DN使用。该操作会影响集群整体的ILM后台调度。 update_gs_ilm_task 操作特性相关系统表,分布式DN使用。 gs_ilm_ticker 维护窗口执行动作,执行一次打点,记录lsn与时间的映射关系。 compress_blocks prvt_ilm.ilm_job_action()帮助函数。 compress_block_single 废弃接口,请勿再使用。 get_job_status dbe_ilm.stop_ilm帮助函数。 insert_gs_ilm_param 操作特性相关系统表。 query_unfinishedjob_num 查询是否存在还没有结束的job,包括初始和运行中的状态。 update_gs_ilm_object_flag2 操作特性相关系统表,分布式DN使用。 ilm_seq_nextval 用于获取ilm的下一个sequence值。 ilm_seq_setval 用于设置ilm的当前sequence值。 check_compatibility 用于统一判断数据库兼容性模式的帮助函数。 set_pg_settings 用于设置数据库兼容性模式特性GUC参数的帮助函数。 check_seq 保证gsilmtask_seq当前值大于gs_ilm_task表最大taskoid,分布式CN使用。 父主题: 二次封装接口(推荐)
  • 示例 闪回到某个时间点 需要设置undo_retention_time参数,用于设置旧版本undo的保留时间。 参数使用请联系管理员处理。 --建表并插入数据。 gaussdb=# CREATE TABLE tbl_test(c1 int, c2 int) with(storage_type = ustore) DISTRIBUTE BY REPLICATION; gaussdb=# INSERT INTO tbl_test VALUES (1,1),(2,2),(3,3); --查询当前时间和全局所有节点上的next_csn。 gaussdb=# SELECT now(); now ------------------------------- 2023-11-27 17:06:34.840698+08 (1 row) gaussdb=# SELECT int8in(xidout(next_csn)) FROM gs_get_next_xid_csn(); int8in -------- 25391 25391 25391 25391 25391 25391 (6 row) --修改数据。 gaussdb=# UPDATE tbl_test SET c1=111, c2=222 WHERE c1=1; --查询数据,并将数据闪回至UPDATE之前。 gaussdb=# SELECT * FROM tbl_test; c1 | c2 -----+----- 111 | 222 2 | 2 3 | 3 (3 rows) gaussdb=# TIMECAPSULE table tbl_test TO TIMESTAMP to_timestamp('2023-11-27 17:06:34.840698','YYYY-MM-DD HH24:MI:SS.FF'); --也可使使用如下SQL。 gaussdb=# TIMECAPSULE table tbl_test TO CS N 25391; gaussdb=# SELECT * FROM tbl_test; c1 | c2 ----+---- 2 | 2 3 | 3 1 | 1 (3 rows) --删除。 gaussdb=# DROP TABLE tbl_test PURGE; 从回收站中闪回数据 前提条件: 开启enable_recyclebin参数,启用回收站,参数使用请联系管理员处理。 recyclebin_retention_time参数用于设置回收站对象保留时间,超过该时间的回收站对象将被自动清理,参数使用请联系管理员处理。 --建表并插入数据。 gaussdb=# CREATE TABLE tbl_test1(c1 int, c2 varchar(10))with(storage_type = ustore); gaussdb=# INSERT INTO tbl_test1 VALUES (1,'AAA'),(2,'BBB'); --删除表。 gaussdb=# DROP TABLE tbl_test1; --闪回至表删除之前。 gaussdb=# TIMECAPSULE TABLE tbl_test1 TO BEFORE DROP; --查询数据。 gaussdb=# SELECT * FROM tbl_test1; c1 | c2 ----+----- 1 | AAA 2 | BBB (2 rows) --删除表(添加PURGE参数,级联删除回收站该表数据)。 gaussdb=# DROP TABLE tbl_test1 PURGE;
  • 参数说明 schema 指定模式包含的表。如果缺省,则为当前模式。 table_name 指定表名。 TO CSN 指定要返回表的时间点对应的事务提交序列号(CSN)。expr必须计算一个数字,代表有效的CSN。 说明:GTM-Free场景各节点使用本地CSN,没有全局统一CSN号,暂不支持使用TO CSN方式进行闪回操作。 TO TIMESTAMP 指定要返回表的时间点对应的时间戳。expr必须计算一个过去有效的时间戳(使用TO_TIMESTAMP函数将字符串转换为时间类型)。表将被闪回到指定时间戳大约3秒内的时间点。 说明:闪回点过旧时,因旧版本被回收导致无法获取旧版本,会导致闪回失败并报错:Restore point too old。 TO BEFORE DROP 使用这个子句检索回收站中已删除的表及其子对象。 RENAME TO 为从回收站中检索的表指定一个新名称。 TO BEFORE TRUNCATE 闪回到TRUNCATE之前。
  • 注意事项 TIMECAPSULE TABLE语句的用法主要分为两大类:闪回旧版本数据和从回收站中闪回。 TO TIMECAPSULE和TO CSN能够将表闪回到过去的某个版本,当前仅支持Ustore存储引擎。 回收站记录了DROP和TRUNCATE的对象数据。TO BEFORE DROP和TO BEFORE TRUNCATE就是从回收站中闪回,当前支持Ustore以及Astore存储引擎。 不支持闪回表的对象类型:系统表、DFS表、全局临时表、本地临时表、UNLOGGED表、序列表、hash bucket表、密态表。 不支持含有自定义类型表的闪回。 开启闪回后,回收站里的表可以进行表级备份,无法进行表级恢复。 闪回点和当前点之间,执行过修改表结构或影响物理存储的语句(DDL、DCL、VACUUM FULL),则闪回失败。 执行闪回删除需要用户具有如下权限:用户必须具有垃圾对象所在Schema的CREATE和USAGE权限,并且用户必须是Schema的所有者或者是垃圾对象的所有者。 执行闪回TRUNCATE需要用户具有如下权限:用户必须具有垃圾对象所在SCHEMA的CREATE和USAGE权限,并且用户必须是Schema的所有者或者是垃圾对象的所有者,另外用户必须具有垃圾对象的TRUNCATE权限。 不适用闪回DROP/TRUNCATE功能的场景或表: 回收站关闭场景:enable_recyclebin = off。 系统处于维护态(xc_maintenance_mode = on)或从不支持的基线版本升级到支持的版本的升级场景。 多对象删除场景:DROP/TRUNCATE TABLE命令同时指定多个对象。 系统表、DFS表、全局临时表、本地临时表、UNLOGGED表、序列表、hash bucket表、密态表。 回收站对象被清理后无法闪回DROP/TRUNCATE,recyclebin_retention_time参数用于设置回收站对象保留时间。 不支持扩缩容场景:扩容重分布时会强制将回收站中的数据清空,扩容期间,DROP的对象不会放入回收站。 回收站对象禁止DML、DCL、DDL等写操作,不支持DQL查询操作。 TRUNCATE表和闪回TRUNCATE操作之间,执行过修改表结构或影响物理文件的语句(DDL、DCL、VACUUM FULL、增加/删除/切割/合成等分区操作),闪回失败。 整表删除或截断时,分区会随着整表放入回收站,单个删除的分区不支持放入回收站,避免破坏数据一致性。 如果有在线索引残留(存在未创建的节点,在该节点上搜索不到该索引),DROP表时会报错,需要清理残留数据才能DROP成功,将对象放入回收站。 如果表依赖的对象为外部对象(如表列为复合类型、自定义类型等),则采用物理删除,不将表放入回收站。 DROP闪回约束 可以指定原始用户指定的表的名称,或对象删除时数据库分配的系统生成名称。 回收站中系统生成的对象名称是唯一的。因此,如果指定系统生成名称,那么数据库检索指定的对象。使用“SELECT * FROM gs_recyclebin;”语句查看回收站中的内容。 如果指定了用户指定的名称,且回收站中包含多个该名称的对象,那么数据库检索回收站中最近移动的对象。如果需要检索更早版本的表,请按以下步骤执行: 指定需要检索的表的系统生成名称。 执行TIMECAPSULE TABLE ... TO BEFORE DROP语句,直到找到要检索的表。 恢复DROP表时,只恢复基表名,其他子对象名均保持回收站对象名。用户可根据需要,执行DDL命令手工调整子对象名。 如果表存在缺省值引用序列和自定义函数,那么闪回DROP表成功但不会恢复缺省值。 如果表存在视图引用,DROP表时需要级联删除视图,那么闪回DROP表成功但不会恢复视图。 回收站对象不支持DML、DCL、DDL等写操作,不支持DQL查询操作(后续支持)。 recyclebin_retention_time配置参数用于设置回收站对象保留时间,超过该时间的回收站对象将被自动清理。 TRUNCATE闪回约束 TRUNCATE闪回后,统计信息无变化,仍显示为0,可以在业务低峰期(降低性能影响)时候手动ANALYZE来修正统计信息。 RENAME TO仅支持DROP闪回操作为检索表指定新名称,不支持TRUNCATE闪回。 TRUNCATE闪回不能跨越影响表结构或物理存储的语句,否则会报错。即闪回点和当前点之间,如果执行过修改表结构或影响物理存储的语句(DDL、DCL、VACUUM FULL、增加/删除/切割/合成等分区操作),则闪回失败。执行过DDL的表进行闪回操作报错:“ERROR:The table definition of %s has been changed.”。涉及namespace、表名改变等操作的DDL执行闪回操作报错:“ERROR: recycle object %s desired does not exist.”。
  • DB_TAB_MODIFICATIONS DB_TAB_MODIFICATIONS视图显示自上次收集表统计信息以来当前用户可访问的表的修改信息的统计数据。该视图目前只显示执行了INSERT、DELETE和UPDATE操作的表的统计数据。所有用户都可以访问该视图。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_TAB_MODIFICATIONS字段 名称 类型 描述 table_owner character varying(128) 表的所有者。 table_name character varying(128) 表的名称。 partition_name character varying(128) 分区的名称。 subpartition_name character varying(128) 子分区的名称。 inserts numeric 自上次收集统计信息以来插入次数的估算值。 updates numeric 自上次收集统计信息以来更新次数的估算值。 deletes numeric 自上次收集统计信息以来删除次数的估算值。 timestamp date 上次修改表的时间。 暂不支持分区表的修改时间,值为NULL。 truncated character varying(3) 暂不支持,值为NULL。 drop_segments numeric 暂不支持,值为NULL。 schema_name character varying(128) 表所属模式名。 父主题: 其他系统视图
  • V_INSTANCE V_INSTANCE视图显示当前数据库的实例信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。具体字段信息如表1所示。 表1 V_INSTANCE字段 名称 类型 描述 instance_number oid 当前数据库oid。 instance_name character varying(16) 当前数据库名。 host_name character varying(64) 主机名。 version character varying(17) 暂不支持,值为NULL。 version_legacy character varying(17) 暂不支持,值为NULL。 version_full character varying(17) 暂不支持,值为NULL。 startup_time date 暂不支持,值为NULL。 status character varying(12) 暂不支持,值为NULL。 parallel character varying(3) 暂不支持,值为NULL。 thread# numeric 暂不支持,值为NULL。 archiver character varying(7) 暂不支持,值为NULL。 log_switch_wait character varying(15) 暂不支持,值为NULL。 logins character varying(10) 暂不支持,值为NULL。 shutdown_pending character varying(3) 暂不支持,值为NULL。 database_status character varying(17) 暂不支持,值为NULL。 instance_role character varying(18) 暂不支持,值为NULL。 active_state character varying(9) 暂不支持,值为NULL。 blocked character varying(3) 暂不支持,值为NULL。 con_id numeric 暂不支持,值为NULL。 instance_mode character varying(11) 暂不支持,值为NULL。 edition character varying(7) 暂不支持,值为NULL。 family character varying(80) 暂不支持,值为NULL。 database_type character varying(15) 暂不支持,值为NULL。 父主题: 其他系统视图
  • Load Profile Load Profile指标名称及描述如表1所示。 表1 Load Profile报表主要内容 指标名称 描述 DB Time(us) 作业运行的elapse time总和。 CPU Time(us) 作业运行的CPU时间总和。 Redo size(blocks) 产生的WAL的大小(块数)。 Logical read (blocks) 表或者索引文件的逻辑读(块数)。 Physical read (blocks) 表或者索引的物理读(块数)。 Physical write (blocks) 表或者索引的物理写(块数)。 Read IO requests 表或者索引的读次数。 Write IO requests 表或者索引的写次数。 Read IO (MB) 表或者索引的读大小(MB)。 Write IO (MB) 表或者索引的写大小(MB)。 Logins 登录次数。 Executes (SQL) SQL执行次数。 Rollbacks 回滚事务数。 Transactions 事务数。 SQL response time P95(us) 95%的SQL的响应时间。 SQL response time P80(us) 80%的SQL的响应时间。 父主题: WDR报告信息介绍
  • 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,也不能更新视图。 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_SETTINGS PG_SETTINGS视图显示数据库运行时参数的相关信息。具体字段信息如表1所示。 表1 PG_SETTINGS字段 名称 类型 描述 name text 参数名称。 setting text 参数当前值。 unit text 参数的单位。 category text 参数的逻辑组。 short_desc text 参数的简单描述。 extra_desc text 参数的详细描述。 context text 设置参数值的上下文,包括:internal、postmaster、sighup、backend、superuser、user、pdb sighup。 vartype text 参数类型,包括:bool、enum、integer、real或string。 source text 参数的赋值方式。 min_val text 参数最小值。如果参数类型不是数值型,那么该字段值为null。 max_val text 参数最大值。如果参数类型不是数值型,那么该字段值为null。 enumvals text[] enum类型参数合法值。如果参数类型不是enum型,那么该字段值为null。 boot_val text 数据库启动时参数默认值。 reset_val text 数据库重置时参数默认值。 sourcefile text 设置参数值的配置文件。如果参数不是通过配置文件赋值,那么该字段值为null。 sourceline integer 设置参数值的配置文件的行号。如果参数不是通过配置文件赋值,那么该字段值为null。 父主题: 其他系统视图
  • 优化说明 通常优化器总会选择最优的执行计划,但是代价估算,尤其是中间结果集的代价估算一般会有比较大的偏差,这种比较大的偏差就可能会导致agg的计算方式出现比较大的偏差,这时候就需要通过best_agg_plan进行agg计算模型的干预。 一般来说,当agg汇聚的收敛度很小时,即结果集的个数在agg之后并没有明显变少(经验上以5倍为临界点),选择redistribute+hashagg执行方式,否则选择hashagg+redistribute+hashagg执行方式。
  • Psycopg接口参考 Psycopg接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述。 psycopg2.connect() connection.cursor() cursor.execute(query,vars_list) cursor.executemany(query,vars_list) connection.commit() connection.rollback() cursor.fetchone() cursor.fetchall() cursor.close() connection.close() 父主题: 基于Psycopg开发
  • GS_AUDITING GS_AUDITING视图显示对数据库相关操作的所有审计信息。需要有系统管理员或安全策略管理员权限才可以访问此视图。 表1 GS_AUDITING字段 名称 类型 描述 polname name 策略名称,需要唯一,不可重复。 pol_type text 审计策略类型,值为‘access’或者‘privilege’。 access:表示审计DML操作。 privilege:表示审计DDL操作。 polenabled boolean 用来表示策略开关是否启动。 t(true):表示启动。 f(false):表示不启动。 access_type name DML数据库操作相关类型,例如SELECT、INSERT、DELETE等;或是DDL数据库操作相关类型,例如CREATE、ALTER、DROP等。 label_name name 资源标签名称。对应系统表gs_auditing_policy中的polname字段。 priv_object text 数据库资产的路径。 filter_name text 过滤条件的逻辑字符串。 父主题: 审计
  • OPERATOR_RUNTIME OPERATOR_RUNTIME视图显示当前用户正在执行的作业的算子相关信息,如表1所示。 表1 OPERATOR_RUNTIME的字段 名称 类型 描述 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)。 status text 当前算子的执行状态,包括finished和running。 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
  • SUMMARY_STATIO_SYS_SEQUENCES SUMMARY_STATIO_SYS_SEQUENCES视图显示集群内汇聚的命名空间中所有系统序列的I/O状态信息,如表1所示。 表1 SUMMARY_STATIO_SYS_SEQUENCES字段 名称 类型 描述 schemaname name 序列中模式名。 relname name 序列名。 blks_read numeric 从序列中读取的磁盘块数。 blks_hit numeric 序列中缓存命中数。 父主题: Cache/IO
  • 层次递归查询函数 层次递归查询语句中可使用以下函数返回连接路径上的相关信息。 sys_connect_by_path(col, separator) 描述:仅在层次递归查询中适用,用于返回从根节点到当前行的连接路径。 参数col为在路径中显示的列的名称,只支持类型为CHAR、VARCHAR、NVARCHAR2、TEXT、INT1、INT2、INT4、INT8、FLOAT4、FLOAT8和NUMERIC的列,参数separator为路径节点之间的分隔符。当前该函数col输入不支持表达式输入,列内容与分隔符separator重复时可正常运行,不会报错。 返回值类型:text 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 --建表导数。 gaussdb=# CREATE TABLE connect_by_table(id int,pid int,name text); CREATE TABLE gaussdb=# INSERT INTO connect_by_table VALUES(1,0,'a'),(2,1,'b'),(3,2,'c'),(4,1,'d'); INSERT 0 4 --查询。 gaussdb=# SELECT *, sys_connect_by_path(name, '-') FROM connect_by_table START WITH id = 1 CONNECT BY prior id = pid ORDER BY pid, id; id | pid | name | sys_connect_by_path ----+-----+------+--------------------- 1 | 0 | a | -a 2 | 1 | b | -a-b 4 | 1 | d | -a-d 3 | 2 | c | -a-b-c (4 rows) --恢复环境。 gaussdb=# DROP TABLE IF EXISTS connect_by_table; DROP TABLE connect_by_root(col) 描述:仅在层次递归查询中适用,用于返回当前行最顶层父亲行中某列的值。 参数col为输出列的名称。仅支持如下类型的列:INT8、INT1、INT2、OID、INT4、BOOL、CHAR、NAME、FLOAT4、FLOAT8、ABSTIME、RELTIME、DATE、CASH、TIME、TIMESTAMP、TIMESTAMPTZ、SMALLDATETIME、UUID、INTERVAL、TIMETZ、INT2VECTOR、CLOB、NVARCHAR2、VARCHAR、TEXT、VECTOR、BPCHAR、RAW、BYTEA、NUMERIC、XID、CID以及TID,且通过强制类型转换为上述类型的操作无法绕开白名单限制,如:connect_by_root(col::text)(其中col不是上述白名单中的类型)。 返回值类型:即为所指定列col的数据类型。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 --建表导数。 gaussdb=# CREATE TABLE connect_by_table(id int,pid int,name text); CREATE TABLE gaussdb=# INSERT INTO connect_by_table VALUES(1,0,'a'),(2,1,'b'),(3,2,'c'),(4,1,'d'); INSERT 0 4 --查询。 gaussdb=# SELECT *, connect_by_root(name) FROM connect_by_table START WITH id = 1 CONNECT BY prior id = pid ORDER BY pid, id; id | pid | name | connect_by_root ----+-----+------+----------------- 1 | 0 | a | a 2 | 1 | b | a 4 | 1 | d | a 3 | 2 | c | a (4 rows) --恢复环境。 gaussdb=# drop table if exists connect_by_table; DROP TABLE 父主题: 函数和操作符
共100000条