华为云用户手册

  • ADM_HIST_SNAPSHOT ADM_HIST_SNAPSHOT视图记录当前系统中存储的WDR快照数据信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图位于PG_CATA LOG 和SYS Schema下。该视图只有在GUC参数enable_wdr_snapshot为on时才可以访问。访问PG_CATALOG.ADM_HIST_SNAPSHOT和SYS.ADM_HIST_SNAPSHOT视图除需要本视图访问权限外,还需要snapshot schema,snapshot table和tables_snap_timestamp表的访问权限。 表1 ADM_HIST_SNAPSHOT字段 名称 类型 描述 snap_id bigint 唯一快照ID。 dbid oid 快照的数据库ID。 instance_number oid 暂不支持,同DBID。 startup_time timestamp(3) without time zone 实例启动时间。 begin_interval_time timestamp without time zone 快照间隔开始的时间(即上次快照的结束时间)。 end_interval_time timestamp without time zone 快照间隔结束的时间。拍摄快照的实际时间(即本次快照的结束时间)。 flush_elapsed interval 执行快照所花费的时间。 snap_level numeric 暂不支持,值为NULL。 error_count numeric 暂不支持,值为NULL。 snap_flag numeric 暂不支持,值为NULL。 snap_timezone interval day to second(0) 快照时区,表示为与UTC(协调世界时)时区的偏移量。 begin_interval_time_tz timestamp with time zone 快照间隔开始的时间(即上次快照的结束时间),带时区。 end_interval_time_tz timestamp with time zone 快照间隔结束的时间。拍摄快照的实际时间(即本次快照的结束时间),带时区。 con_id numeric 暂不支持,值为0。 父主题: 系统视图
  • 示例 --创建一个无用的外部数据封装器dummy。 gaussdb=# CREATE FOREIGN DATA WRAPPER dummy; --创建一个带有处理器函数file_fdw_handler 的外部数据封装器file。 gaussdb=# CREATE FOREIGN DATA WRAPPER file HANDLER file_fdw_handler; --创建一个带有一些选项的外部数据封装器mywrapper。 gaussdb=# CREATE FOREIGN DATA WRAPPER mywrapper OPTIONS (debug 'true');
  • 参数说明 name 要创建的外部数据封装器的名字 HADNLER handler_function handler_function是先前已经注册了的函数的名字,用来为外部表检索执行函数。 处理器函数必须没有参数,并且它的返回类型必须为fdw_handler。 不用处理器函数创建外部数据封装器是可能的,但是使用这种封装器的外部表只能被声明,不能被访问。 VALIDATOR validator_function validator_function 是先前已经注册了的函数的名字用来检查提供给外部数据封装器的通用选项, 还有使用该外部数据封装器的外部服务器、用户映射和外部表的选项。 如果没有验证器函数或声明了NO VALIDATOR, 那么在创建时将不检查选项。(外部数据封装器可能在运行时忽略或拒绝无效的选项说明, 取决于实现。)验证器函数必须接受两个参数:一个类型为text[], 将包含存储在系统目录中的选项的数组,一个类型为oid, 是包含这些选项的系统目录的OID。忽略返回类型;该函数应该使用 ereport(ERROR)函数报告无效选项。 OPTIONS ( option 'value' [, ... ] ) 这个子句为新的外部数据封装器声明选项。允许的选项名和值是特定于每个外部数据封装器的, 并且是经过外部数据封装器的验证器函数验证了的。选项名必须是唯一的。
  • ai_watchdog_monitor_status 表1 ai_watchdog_monitor_status参数说明 参数 类型 描述 metric_name text metric指标名称: tps:TPS。 tps_hourly:每小时的TPS均值。 shared_used_mem:共享内存使用量(MB)。 dynamic_used_shrctx:共享内存上下文使用量(MB)。 other_used_mem:其他内存使用量(MB)。 process_used_mem:系统常驻内存使用量(MB)。 dynamic_used_mem:动态内存使用量(MB)。 malloc_failures:每个采集间隔内的内存分配失败次数。 D_state_rate:D状态线程比例。 R_state_rate:R状态线程比例。 S_state_rate:S状态线程比例。 db_state:数据库的状态(68表示D、82表示R、83表示S)。 cpu_usage:CPU使用率,上限100。 disk_io:两个采集间隔内的磁盘IO延迟。 network_io:两个采集间隔内的网络IO延迟。 threadpool_usage:线程池使用率。 threadpool_hang_rate:线程池group处于hang状态的比例。 max_length int 采集队列长度。 current_length int 当前采集到的样本数。 collection_interval int 采集间隔,单位秒。 latest_value int 上次采集到的值,没采集到为null。 last_report timestamp 上次采集时刻。 父主题: AI Watchdog
  • javax.sql.PooledConnection javax.sql.PooledConnection是由连接池创建的连接接口。 表1 对javax.sql.PooledConnection的支持情况 方法名 返回值类型 支持JDBC 4 addConnectionEventListener(ConnectionEventListener listener) void Yes close() void Yes getConnection() Connection Yes removeConnectionEventListener(ConnectionEventListener listener) void Yes 父主题: JDBC接口参考
  • GS_STATIO_ALL_PARTITIONS GS_STATIO_ALL_PARTITIONS视图包含当前数据库中每个分区表分区的I/O统计信息,此视图信息由gs_statio_get_all_partitions_stats()函数查询得到。 表1 GS_STATIO_ALL_PARTITIONS字段 名称 类型 描述 partition_oid oid 分区OID。 schemaname name 该分区模式名。 relname name 该分区所在表的表名。 partition_name name 该分区所在一级分区名。 sub_partition_name 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表分区索引命中缓冲区数(如果存在)。 父主题: 系统视图
  • 什么是SQL SQL是用于访问和处理数据库的标准计算机语言。 SQL提供了各种任务的语句,包括: 查询数据。 在表中插入、更新和删除行。 创建、替换、更改和删除对象。 控制对数据库及其对象的访问。 保证数据库的一致性和完整性。 SQL语言由用于处理数据库和数据库对象的命令和函数组成。该语言还会强制实施有关数据类型、表达式和文本使用的规则。因此在SQL参考章节,除了SQL语法参考外,还介绍了有关数据类型、表达式、函数和操作符等信息。
  • SQL发展简史 SQL发展简史如下: 1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86 1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89 1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92 1999年,ISO/IEC 9075:1999,SQL:1999 2003年,ISO/IEC 9075:2003,SQL:2003 2011年,ISO/IEC 9075:2011,SQL:2011 2016年,ISO/IEC 9075:2016,SQL:2016 2019年,ISO/IEC 9075:2019,SQL:2019
  • 语法格式 开启匿名块。 [DECLARE [declare_statements]] BEGIN execution_statements END; / 开启事务。 BEGIN [ WORK | TRANSACTION ] [ { ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ];
  • PG_NAMESPACE PG_NAMESPACE系统表存储名称空间,即存储schema相关的信息。 表1 PG_NAMESPACE字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 nspname name 名称空间的名称。 nspowner oid 名称空间的所有者。 nsptimeline bigint 在数据库节点上创建此命名空间时的时间线。此字段为内部使用,仅在数据库节点上有效。 nspacl aclitem[] 访问权限。 in_redistribution "char" 是否处于重发布状态。 nspcollation oid 名称空间的默认字符序(仅在sql_compatibility='b'时可能有值)。 父主题: 系统表
  • STATIO_ALL_INDEXES STATIO_ALL_INDEXES视图包含数据库中的每个索引行,显示特定索引的I/O的统计。 表1 STATIO_ALL_INDEXES字段 名称 类型 描述 relid oid 索引的表的OID。 indexrelid oid 该索引的OID。 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read bigint 从索引中读取的磁盘块数。 idx_blks_hit bigint 索引命中缓存数。 父主题: Cache/IO
  • 算子说明 Sample Scan是一种扫描表的方式,它可以在查询过程中随机地从表中抽取一部分数据进行查询,而不是扫描整个表。Sample Scan配合TABLESAMPLE关键字使用,使用方式为[ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ]。这种技术通常用于大型表或者需要随机抽样的查询场景,可以提高查询效率。
  • 示例 示例:采样查询 --数据准备。 gaussdb=# CREATE TABLE t1 (c1 number, c2 number, c3 number); CREATE TABLE gaussdb=# INSERT INTO t1 VALUES (generate_series(1,100), 2, 3); INSERT 0 100 --执行结果。 gaussdb=# EXPLAIN SELECT c1 FROM t1 tablesample system(10); QUERY PLAN ---------------------------------------------------- Sample Scan on t1 (cost=0.00..272.00 rows=10000 width=6) Sampling: system (10::real) (2 rows) --删除。 gaussdb=# DROP TABLE t1; 上述示例中,Sample Scan算子输出信息如下所示。 信息名称 含义 Sample Scan 算子的名称。 Sampling 算子采样的方式,示例中采用system 作为采样方法,采样的比例为10%
  • PG_AUTHID PG_AUTHID系统表存储有关数据库认证标识符(角色)的信息。角色把“用户”的概念包含在内。一个用户实际上就是一个rolcanlogin标志被设置的角色。任何角色(不管rolcanlogin设置与否)都能够把其他角色作为成员。 GaussDB 中只有一份pg_authid,不是每个数据库有一份。需要有系统管理员权限才可以访问此系统表。 表1 PG_AUTHID字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 rolname name 角色名称。 rolsuper boolean 角色是否是拥有最高权限的初始系统管理员。 t(true):表示是。 f(false):表示不是。 rolinherit boolean 角色是否自动继承其所属角色的权限。 t(true):表示自动继承。 f(false):表示不自动继承。 rolcreaterole boolean 角色是否可以创建更多角色。 t(true):表示可以。 f(false):表示不可以。 rolcreatedb boolean 角色是否可以创建数据库。 t(true):表示可以。 f(false):表示不可以。 rolcatupdate boolean 角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 t(true):表示可以。 f(false):表示不可以。 rolcanlogin boolean 角色是否可以登录,也就是说,这个角色可以给予会话认证标识符。 t(true):表示可以。 f(false):表示不可以。 rolreplication boolean 角色是否具有复制权限。 t(true):表示有。 f(false):表示没有。 rolauditadmin boolean 角色是否具有审计管理员权限。 t(true):表示有。 f(false):表示没有。 rolsystemadmin boolean 角色是否具有系统管理员权限。 t(true):表示有。 f(false):表示没有。 rolconnlimit integer 对于可以登录的角色,限制其最大并发连接数量。 -1 表示没有限制。 rolpassword text 密码(可能是加密的),如果没有密码,则为NULL。 rolvalidbegin timestamp with time zone 账户的有效开始时间,如果没有开始时间,则为NULL。 rolvaliduntil timestamp with time zone 账户的有效结束时间,如果没有结束时间,则为NULL。 rolrespool name 用户所能够使用的resource pool。 roluseft boolean 角色是否可以操作外表。 t(true):表示可以。 f(false):表示不可以。 rolparentid oid 用户所在组用户的OID。 roltabspace text 用户数据表的最大空间限额。 rolkind "char" 特殊用户种类。 n:表示普通用户。 p:表示永久用户。 rolnodegroup oid 该字段不支持。 roltempspace text 用户临时表的最大空间限额,单位为KB。 rolspillspace text 用户执行作业时下盘数据的最大空间限额,单位为KB。 rolexcpdata text 用户可以设置的查询规则(当前未使用)。 rolmonitoradmin boolean 角色是否具有监控管理员权限。 t(true):表示有。 f(false):表示没有。 roloperatoradmin boolean 角色是否具有运维管理员权限。 t(true):表示有。 f(false):表示没有。 rolpolicyadmin boolean 角色是否具有安全策略管理员权限。 t(true):表示有。 f(false):表示没有。 父主题: 系统表
  • 语法 RAISE语法 有以下五种语法格式: 图1 raise_format::= 图2 raise_condition::= 图3 raise_sqlstate::= 图4 raise_option::= 图5 raise::= 参数说明: level选项用于指定错误级别,有DEBUG,LOG,INFO,NOTICE,WARNING以及EXCEPTION(默认值)。EXCEPTION抛出一个正常终止当前事务的异常,其他的仅产生不同异常级别的信息。特殊级别的错误信息是否报告到客户端、写到服务器日志由log_min_messages和client_min_messages这两个GUC配置参数控制。 format:格式字符串,指定要报告的错误消息文本。格式字符串后可跟表达式,用于向消息文本中插入。在格式字符串中,%由format后面跟着的参数的值替换,%%用于打印出%。例如: --v_job_id 将替换字符串中的 %: RAISE NOTICE 'Calling cs_create_job(%)',v_job_id; option = expression:向错误报告中添加另外的信息。关键字option可以是MESSAGE、DETAIL、HINT以及ERRCODE,并且每一个expression可以是任意的字符串。 MESSAGE,指定错误消息文本,这个选项不能用于在USING前包含一个格式字符串的RAISE语句中。 DETAIL,说明错误的详细信息。 HINT,用于打印出提示信息。 ERRCODE,向报告中指定错误码(SQLSTATE)。可以使用条件名称或者直接用五位字符的SQLSTATE错误码。 condition_name:错误码对应的条件名。 sqlstate:错误码。 如果在RAISE EXCEPTION命令中既没有指定条件名也没有指定SQLSTATE,默认用RAISE EXCEPTION (P0001)。如果没有指定消息文本,默认用条件名或者SQLSTATE作为消息文本。 当由SQLSTATE指定了错误码,则不局限于已定义的错误码,可以选择任意包含五个数字或者大写的ASCII字母的错误码,而不是00000。建议避免使用以三个0结尾的错误码,因为这种错误码是类别码,会被整个种类捕获。 兼容O模式下,SQLCODE等于SQLSTATE。 图5所示的语法不接任何参数。这种形式仅用于一个BEGIN块中的EXCEPTION语句,它使得错误重新被处理。
  • java.sql.Statement java.sql.Statement是SQL语句接口。 表1 对java.sql.Statement的支持情况 方法名 返回值类型 支持JDBC 4 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 通过setFetchSize可以减少结果集在客户端的内存占用情况。它的原理是通过将结果集打包成游标,然后分段处理,所以会加大数据库与客户端的通信量,会有性能损耗。 由于数据库游标是事务内有效,所以,在设置setFetchSize的同时,需要将连接设置为非自动提交模式,setAutoCommit(false)。同时在业务数据需要持久化到数据库中时,在连接上执行提交操作。 LargeUpdate相关方法必须在JDBC4.2及以上版本使用。 父主题: JDBC接口参考
  • ADM_DATA_FILES ADM_DATA_FILES视图显示关于数据库文件的描述。默认只有系统管理员权限才可以访问此视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_DATA_FILES字段 名称 类型 描述 tablespace_name name 文件所属的表空间的名称。 bytes double precision 文件的字节长度。 父主题: 系统视图
  • MY_COLL_TYPES MY_COLL_TYPES视图显示当前用户创建的集合类型信息。默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_COLL_TYPES字段 名称 类型 描述 owner character varying(128) 集合的所有者。 type_name character varying(128) 集合的名称。 coll_type character varying(128) 集合的描述。 upper_bound numeric 暂不支持,值为NULL。 elem_type_mod character varying(7) 元素的类型修饰。 elem_type_owner character varying(128) 集合基于的元素类型的所有者。该值主要用于用户定义的类型。 elem_type_name character varying(128) 集合所依据的数据类型或用户定义类型的名称。 length numeric 暂不支持,值为NULL。 precision numeric 暂不支持,值为NULL。 scale numeric 暂不支持,值为NULL。 character_set_name character varying(44) 暂不支持,值为NULL。 elem_storage character varying(7) 暂不支持,值为NULL。 nulls_stored character varying(3) 暂不支持,值为NULL。 char_used character varying(1) 暂不支持,值为NULL。 父主题: 系统视图
  • GS_GLOBAL_ARCHIVE_STATUS GS_GLOBAL_ARCHIVE_STATUS视图描述DN和所有分片的归档进度,获取分片名称(node_name)、归档位置(restart_lsn),实际进行归档的主/备机名称(archive_node)和当前日志位置(current_xlog_location)。查询此视图需要数据库开启归档功能,并从主DN节点进行查询。 表1 GS_GLOBAL_ARCHIVE_STATUS字段 名称 类型 描述 node_name text 分片名称。 restart_lsn text 归档位置。 archive_node text 实际进行归档的主/备机名称。 current_xlog_location text 当前日志位置。 父主题: 系统视图
  • 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。 父主题: 系统视图
  • 连接方式介绍 连接数据库的方式通常是根据安全性、性能、可扩展性和实现复杂度等因素进行选择的。连接方式介绍如表1所示。 表1 连接方式介绍 连接方式 优点 缺点 选择原则 非加密方式 简单易实现,无需额外的加密和解密操作。 性能较高,因为不需要进行加密/解密操作,减少了数据传输的开销。 安全性较低,数据在传输过程中容易被窃听或篡改。 不适合传输敏感信息,可能违反隐私保护法规。 只适用于内部网络或对安全性要求不高的环境。 SSL方式 提供了加密传输,数据在传输过程中得到保护,安全性较高。 支持客户端/服务器身份验证,增强了安全性。 配置和管理相对复杂,需要证书的颁发和更新。 可能会增加一些性能开销,特别是在加密和解密大量数据时。 适用于对数据传输安全性要求较高的环境,如金融、医疗等行业。 UDS方式 适用于本地通信,不经过网络,传输速度快。 不需要额外的网络开销,不容易受到网络攻击。 仅限于在同一台主机上的进程间通信,无法用于远程连接。 适用于本地通信的场景,如本地服务和应用之间的数据交换。 父主题: 连接数据库
  • 存储过程支持自治事务 自治事务可以在存储过程中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与创建存储过程语法相同,示例如下。 --建表 gaussdb=# create table t2(a int, b int); 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) 上述例子,最后在回滚的事务块中执行包含自治事务的存储过程,直接说明了自治事务的特性,即主事务的回滚,不会影响自治事务已经提交的内容。 父主题: 自治事务
  • DB4AI.MANAGE_SNAPSHOT_INTERNAL MANAGE_SNAPSHOT_INTERNAL是DB4AI.PUBLISH_SNAPSHOT和DB4AI.ARCHIVE_SNAPSHOT函数的内置执行函数。函数存在信息校验,无法直接调用。 表1 DB4AI.MANAGE_SNAPSHOT_INTERNAL入参和返回值列表 参数 类型 描述 i_schema IN NAME 快照存储的模式名字 i_name IN NAME 快照名称 publish IN BOOLEAN 是否是发布状态 res OUT db4ai.snapshot_name 结果 父主题: DB4AI Schema
  • 执行计划显示信息 除了设置不同的执行计划显示格式外,还可以通过不同的EXPLAIN用法,显示不同详细程度的执行计划信息。常见有如下几种,关于更多用法请参见EXPLAIN语法说明。 EXPLAIN statement: 只生成执行计划,不实际执行。其中statement代表SQL语句。 EXPLAIN ANALYZE statement:生成执行计划,进行执行,并显示执行的概要信息。显示中加入了实际的运行时间统计,包括在每个规划节点内部花掉的总时间(以毫秒计)和它实际返回的行数。 EXPLAIN PERFORMANCE statement:生成执行计划,进行执行,并显示执行期间的全部信息。 为了测量运行时在执行计划中每个节点的开销,EXPLAIN ANALYZE或EXPLAIN PERFORMANCE会在当前查询执行上增加性能分析的开销。在一个查询上运行EXPLAIN ANALYZE或EXPLAIN PERFORMANCE有时会比普通查询明显花费更多的时间。超出的时间多少取决于查询本身复杂程度和使用的平台。 因此,当定位SQL运行慢问题时,如果SQL长时间运行未结束,建议通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出来,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及其实际的运行信息,以便更准确地定位问题原因。
  • PG_REPLICATION_SLOTS PG_REPLICATION_SLOTS视图显示复制槽的信息。 表1 PG_REPLICATION_SLOTS字段 名称 类型 描述 slot_name text 复制槽的名称。 plugin text 逻辑复制槽对应的输出插件名称。 slot_type text 复制槽的类型。 physical:物理复制槽。 logical:逻辑复制槽。 datoid oid 复制槽所在的数据库OID。 database name 复制槽所在的数据库名称。 active boolean 复制槽是否为激活状态。 t(true):表示是。 f(false):表示不是。 xmin xid 数据库需要为复制槽保留的最早事务的事务号。 catalog_xmin xid 数据库需要为逻辑复制槽保留的最早的涉及系统表的事务的事务号。 restart_lsn text 复制槽需要的最早xlog的物理位置。 dummy_standby boolean 预留参数。 confirmed_flush text 逻辑复制槽专用,客户端确认接收到的日志位置。 confirmed_csn xid 逻辑复制槽专用,客户端确认接收到的日志中最后一个事务对应的 CS N。 示例: gaussdb=# select * from pg_replication_slots; slot_name | plugin | slot_type | datoid | database | active | xmin | catalog_xmin | restart_lsn | dummy_standby | confirmed_flush | confirmed_csn -----------+----------------+-----------+--------+----------+--------+------+--------------+-------------+---------------+-----------------+--------------- dn_6002 | | physical | 0 | | t | | | 0/3622B528 | f | | dn_6003 | | physical | 0 | | t | | | 0/3622B528 | f | | slot_lsn | mppdb_decoding | logical | 131072 | db_test | f | | 66658 | 0/36252350 | f | 0/362523D0 | slot_test | mppdb_decoding | logical | 131072 | db_test | f | | 66658 | 0/36251718 | f | | 10025527 (4 rows) 在DN上执行查询,LSN序逻辑复制槽的confirmed_csn查询结果为空,CSN序逻辑复制槽的confirmed_flush查询结果为空。 父主题: 系统视图
  • effective_cache_size 参数说明:设置优化器在一次单一的查询中可用的磁盘缓冲区的有效大小。 设置这个参数,还要考虑GaussDB的共享缓冲区以及内核的磁盘缓冲区。另外,还要考虑预计的在不同表之间的并发查询数目,因为它们将共享可用的空间。 这个参数对GaussDB分配的共享内存大小没有影响,它也不会使用内核磁盘缓冲,它只用于估算。数值是用磁盘页来计算的,通常每个页面是8192字节。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,1~2147483647,单位为8KB。 比默认值高的数值可能会导致使用索引扫描,更低的数值可能会导致选择顺序扫描。 默认值: 280GB(196核CPU/1536G内存);180GB(128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存);135GB(96核CPU/768G内存);100GB(80核CPU/640G内存);90GB(64核CPU/512G内存);80GB(60核CPU/480G内存);40GB(32核CPU/256G内存);18GB(16核CPU/128G内存);8GB(8核CPU/64G内存);4GB(4核CPU/32G内存);2GB(4核CPU/16G内存)
  • random_page_cost 参数说明:设置优化器计算一次非顺序抓取磁盘页面的开销。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 虽然服务器允许将random_page_cost设置的比seq_page_cost小,但是物理上实际不受影响。如果所有数据库都位于随机访问内存中时,两者设置为相等很合理。因为在此种情况下,非顺序抓取页并没有副作用。同样,在缓冲率很高的数据库上,应该相对于CPU参数同时降低这两个值,因为获取内存中的页要比通常情况下开销小很多。 取值范围:浮点型,0~DBL_MAX。 默认值:4 对于特别表空间中的表和索引,可以通过设置同名的表空间的参数来覆盖这个值。 相对于seq_page_cost,减少这个值将导致系统更倾向于使用索引扫描,而增加这个值使得索引扫描开销比较高。可以通过同时增加或减少这两个值来调整磁盘I/O相对于CPU的开销。
  • GS_ENCRYPTED_PROC GS_ENCRYPTED_PROC系统表提供了密态函数/存储过程函数参数、返回值的原始数据类型,加密列等信息。 表1 GS_ENCRYPTED_PROC字段 名称 类型 描述 oid oid 行标识符(隐含字段)。 func_id oid function的oid,对应系统表13.2.84 PG_PROC中的oid行标识符。 prorettype_orig integer 返回值的原始数据类型。 last_change timestamp without time zone 密态函数信息上次修改的时间。 proargcachedcol oidvector 函数INPUT参数对应的加密列的oid,对应系统表13.2.14 GS_ENCRYPTED_COLUMNS中的oid行标识符。 proallargtypes_orig oid[] 所有函数参数的原始数据类型。 父主题: 系统表
  • 语法格式 [ WITH [ RECURSIVE ] with_query [, ...] ] INSERT [/*+ plan_hint */] INTO table_name [partition_clause] [ 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 ] }[, ...]} ];
  • 注意事项 只有拥有表INSERT权限的用户,才可以向表中插入数据。用户被授予INSERT ANY TABLE权限,相当于用户对除系统模式之外的任何模式具有USAGE权限,并且拥有这些模式下表的INSERT权限。 如果使用RETURNING子句,用户必须要有该表的SELECT权限。 如果使用ON DUPLICATE KEY UPDATE,用户必须要有该表的INSERT、UPDATE权限,UPDATE子句中列的SELECT权限。 如果使用query子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的SELECT权限。 生成列不能被直接写入。在INSERT命令中不能为生成列指定值,但是可以指定关键字DEFAULT。 当连接到TD兼容的数据库时,td_compatible_truncation参数设置为on时,将启用超长字符串自动截断功能,在后续的INSERT语句中(不包含外表的场景下),对目标表中CHAR和VARCHAR类型的列上插入超长字符串时,系统会自动按照目标表中相应列定义的最大长度对超长字符串进行截断。 如果向字符集为字节类型编码(SQL_ASCII,LATIN1等)的数据库中插入多字节字符数据(如汉字等),且字符数据跨越截断位置,这种情况下,按照字节长度自动截断,自动截断后会在尾部产生非预期结果。如果用户有对于截断结果正确性的要求,建议用户采用UTF8等能够按照字符截断的输入字符集作为数据库的编码集。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全