华为云用户手册

  • ecpg兼容 ecpg提供使用URL连接方式的连接语法,不仅支持“gaussdb”,还兼容支持“postgresql”。 连接语法: EXEC SQL CONNECT TO target [AS connection-name] [USER user-name]; 其中target支持“postgresql”方式如下: tcp:postgresql://hostname[:port][/dbname][?options] unix:postgresql://hostname[:port][/dbname][?options]
  • DB4AI.PREPARE_SNAPSHOT_INTERNAL PREPARE_SNAPSHOT_INTERNAL是db4ai.prepare_snapshot函数的内置执行函数,如表1所示。函数存在信息校验,无法直接调用。 表1 DB4AI.PREPARE_SNAPSHOT_INTERNAL入参列表 参数 类型 描述 s_id IN BIGINT 快照id。 p_id IN BIGINT 父快照id。 m_id IN BIGINT 矩阵id。 r_id IN BIGINT 根快照id。 i_schema IN NAME 快照模式。 i_name IN NAME 快照名称。 i_commands IN TEXT[] 定义快照修改的DDL和DML命令。 i_comment IN TEXT 快照描述。 i_owner IN NAME 快照所有者。 i_idx INOUT INT exec_cmds的索引。 i_exec_cmds INOUT TEXT[] 用于执行的DDL和DML。 i_mapping IN NAME[] 将用户列映射到备份列;如果不为NULL,则生成规则。 父主题: DB4AI Schema
  • 语法格式 为当前会话设置会话用户标识符和当前用户标识符。 1 SET [ SESSION | LOCAL ] SESSION AUTHORIZATION role_name PASSWORD 'password'; 重置会话和当前用户标识符为初始认证的用户名。 1 2 {SET [ SESSION | LOCAL ] SESSION AUTHORIZATION DEFAULT | RESET SESSION AUTHORIZATION};
  • 参数说明 SESSION 声明这个命令只对当前会话起作用。 LOCAL 声明该命令只在当前事务中有效。 role_name 用户名。 取值范围:字符串,数据库中已经存在的用户名。 password 角色的密码。要求符合密码的命名规则。 使用密文密码限制如下: 管理员用户不能使用密文密码切换到其他管理员用户,只能向权限更低用户切换; 使用密文密码通常用于gs_dump、gs_dumpall导出场景,其他场景不建议直接使用密文密码。 DEFAULT 重置会话和当前用户标识符为初始认证的用户名。
  • 使用分区表 分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储。这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。分区表和普通表相比具有以下优点: 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。 增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。 方便维护:如果分区表的某个分区出现故障,需要修复数据,只修复该分区即可。 GaussDB数据库支持的分区表为一级分区表和二级分区表,其中一级分区表包括范围分区表、间隔分区表、列表分区表、哈希分区表四种,二级分区表包括范围分区、列表分区、哈希分区两两组合的九种。 范围分区表:将数据基于范围映射到每一个分区,这个范围是由创建分区表时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期,例如将销售数据按照月份进行分区。 间隔分区表:是一种特殊的范围分区表,相比范围分区表,新增间隔值定义,当插入记录找不到匹配的分区时,可以根据间隔值自动创建分区。 列表分区表:将数据中包含的键值分别存储在不同的分区中,依次将数据映射到每一个分区,分区中包含的键值由创建分区表时指定。 哈希分区表:将数据根据内部哈希算法依次映射到每一个分区中,包含的分区个数由创建分区表时指定。 二级分区表:由范围分区、列表分区、哈希分区任意组合得到的分区表,其一级分区和二级分区均可以使用前面三种定义方式。
  • 表压缩级别 在创建表时,可以自定义字段的压缩级别及压缩水平。压缩不仅影响到数据加载,也影响到数据查询。表压缩级别由参数COMPRESSION控制。 参数说明: COMPRESSION指定表数据的压缩级别,它决定了表数据的压缩比以及压缩时间。一般来讲,压缩级别越高,压缩比也越大,压缩时间也越长;反之亦然。实际压缩比取决于加载的表数据的分布特征。 取值范围: 行存表的有效值为YES/NO,默认值为NO。 客户可根据不同场景依据表1选择不同压缩级别。 表1 压缩级别适用场景说明 压缩级别 适用场景 存储方式 YES 启用表压缩:行存表压缩率较低,不建议启用。 行存 NO 禁用表压缩。 行存
  • PG_AUTH_HISTORY PG_AUTH_HISTORY系统表记录了角色的认证历史。需要有系统管理员权限才可以访问此系统表。 表1 PG_AUTH_HISTORY字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 roloid oid 角色标识。 passwordtime timestamp with time zone 创建和修改密码的时间。 rolpassword text 角色密码密文,加密方式由GUC参数password_encryption_type确定。 父主题: 连接和认证
  • 接口介绍 根据输入的参数,返回目标数据块中行的最后修改时间等信息,用于直观浏览每一行被判定为冷、热行的依据。该接口属于运维类接口,不做可见性判断,即传入的ctid为已删除的行时,该接口依然会返回当前行在页面上最新的状态。 表1 DBE_HEAT_MAP 接口名称 描述 ROW_HEAT_MAP 根据对象所属Schema、数据对象名称、数据对象分区名及ctid获取行的最后修改时间等信息。 DBE_HEAT_MAP.ROW_HEAT_MAP 根据对象所属Schema、数据对象名称、数据对象分区名及ctid获取行的最后修改时间等信息,原型为: 1 2 3 4 5 DBE_HEAT_MAP.ROW_HEAT_MAP( owner IN VARCHAR2, segment_name IN VARCHAR2, partition_name IN VARCHAR2 DEFAULT NULL, ctid IN TEXT); 表2 DBE_HEAT_MAP.ROW_HEAT_MAP接口参数说明 参数 描述 owner 数据对象所属Schema。 segment_name 数据对象名称。 partition_name 数据对象分区名,可选参数,默认为 NULL。 ctid 数据行ID。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 --创建表reason。 gaussdb=# CREATE TABLE reason ( CD_DEMO_SK int NOT NULL, CD_GENDER varchar(10), CD_MARITAL_STATUS varchar(10) ); --为一个INSERT语句创建一个预备语句然后执行它。 gaussdb=# PREPARE insert_reason(int,varchar(10),varchar(10)) AS INSERT INTO reason VALUES($1,$2,$3); gaussdb=# EXECUTE insert_reason(52, 'AAAAAAAADD', 'reason 52'); --查询数据。 gaussdb=# SELECT * FROM reason; cd_demo_sk | cd_gender | cd_marital_status ------------+------------+------------------- 52 | AAAAAAAADD | reason 52 (1 row) --删除表reason。 gaussdb=# DROP TABLE reason;
  • DBE_SQL_UTIL.create_remote_hint_sql_patch create_remote_hint_sql_patch是用于指定CN创建调优SQL PATCH的接口函数,返回执行是否成功,如表1所示。 限制仅初始用户、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
  • 行转列与列转行 行转列 --建表并插入数据。 gaussdb=# CREATE TABLE test_p1(id INT, math INT, english INT); gaussdb=# INSERT INTO test_p1 VALUES (1,84,78), (2,98,82), (3,68,59); gaussdb=# SELECT * FROM test_p1; id | math | english ----+------+--------- 3 | 68 | 59 1 | 84 | 78 2 | 98 | 82 (3 rows) --行转列。 gaussdb=# SELECT * FROM test_p1 UNPIVOT(score FOR class IN(math, english)); id | class | score ----+---------+------- 3 | MATH | 68 3 | ENGLISH | 59 1 | MATH | 84 1 | ENGLISH | 78 2 | MATH | 98 2 | ENGLISH | 82 (6 rows) --删除。 gaussdb=# DROP TABLE test_p1; 列转行 --建表并插入数据。 gaussdb=# CREATE TABLE test_p2(id INT, class VARCHAR(20), score INT); gaussdb=# INSERT INTO test_p2 VALUES (1,'math',64), (1,'english',78); gaussdb=# INSERT INTO test_p2 VALUES (2,'math',98), (2,'english',82); gaussdb=# INSERT INTO test_p2 VALUES (3,'math',68), (3,'english',59); gaussdb=# SELECT * FROM test_p2; id | class | score ----+---------+------- 3 | math | 68 3 | english | 59 1 | math | 64 1 | english | 78 2 | math | 98 2 | english | 82 (6 rows) --列转行。 gaussdb=# SELECT * FROM test_p2 PIVOT(MAX(score) FOR class IN('math','english')); id | 'math' | 'english' ----+--------+----------- 3 | 68 | 59 1 | 64 | 78 2 | 98 | 82 (3 rows) --删除。 gaussdb=# DROP TABLE test_p2; 父主题: SELECT
  • GS_DB_LINKS GS_DB_LINKS系统视图显示DATABASE LINK对象的相关信息,用户可以查看属于自己和PUBLIC级别的DATABASE LINK信息。 表1 GS_DB_LINKS字段 名称 类型 描述 dblinkid oid 当前DATABASE LINK对象的oid。 dlname name 当前DATABASE LINK对象的名称。 dlowner oid 当前DATABASE LINK对象拥有者的id。拥有者为public时值为0。 dlownername name 当前DATABASE LINK对象拥有者的名称。 options text[] 当前DATABASE LINK对象的连接信息,使用“keyword=value”格式的字符串。 useroptions text 当前DATABASE LINK对象连接远端所使用的用户信息。 heterogeneous text 暂不支持,值为NULL。 protocol text 暂不支持,值为NULL。 opencursors text 暂不支持,值为NULL。 intransaction boolean 当前DATABASE LINK对象是否在事务中。 updatasent boolean 当前DATABASE LINK对象是否使用了更新数据的语句。 父主题: DATABASE LINK
  • DBE_SQL_UTIL.show_sql_patch show_sql_patch是用于显示给定patch_name对应的SQL PATCH的接口函数,返回运行结果,如表1所示。 限制:仅初始用户、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
  • Retry管理 Retry是数据库在SQL或存储过程(包含匿名块)执行失败时,在数据库内部进行重新执行的过程,以提高执行成功率和用户体验。同时也是数据库内部通过检查发生错误时的错误码及Retry相关配置,决定是否进行重试。 失败时回滚之前执行的语句,并重新执行存储过程进行Retry。 示例: 1 2 3 4 5 6 7 8 9 gaussdb=# CREATE OR REPLACE PROCEDURE retry_basic ( IN x INT) AS BEGIN INSERT INTO t1 (a) VALUES (x); INSERT INTO t1 (a) VALUES (x+1); END; / gaussdb=# CALL retry_basic(1); 父主题: 存储过程
  • 永久用户 GaussDB提供永久用户方案:创建具有PERSISTENCE属性的永久用户,具有PERSISTENCE属性的用户能够使用service_reserved_connections通道连接数据库。 service_reserved_connections为带有persistence属性预留的最少连接数,不建议设置过大。 1 gaussdb=# CREATE USER user_persistence WITH PERSISTENCE IDENTIFIED BY "********"; 只允许初始用户创建、修改和删除具有PERSISTENCE属性的永久用户。
  • 创建、修改和删除用户 创建用户,请使用SQL语句CREATE USER。 例如:创建用户joe,并设置用户拥有CREATEDB属性。 1 2 gaussdb=# CREATE USER joe WITH CREATEDB PASSWORD "********"; CREATE ROLE 创建系统管理员,请使用带有SYSADMIN选项的CREATE USER语句 。 删除现有用户,请参见DROP USER。 更改用户账户(例如,重命名用户或更改密码),请参见ALTER USER。 查看用户列表,请查询视图PG_USER。 1 gaussdb=# SELECT * FROM pg_user; 查看用户属性,请查询系统表PG_AUTHID。 1 gaussdb=# SELECT * FROM pg_authid;
  • autovacuum_max_workers 参数说明:设置能同时运行的自动清理线程的最大数量,该参数的取值上限与GUC参数max_connections和job_queue_processes大小有关。 参数类型:整型 参数单位:无 取值范围:最小值为0(表示不会自动进行autovacuum),理论最大值为262143,实际最大值为动态值,计算公式为“262143 - max_inner_tool_connections - max_connections - job_queue_processes - max_concurrent_autonomous_transactions - 辅助线程数 – autovacuum的launcher线程数 - 1”,其中辅助线程数和autovacuum的launcher线程数由两个宏来指定,当前版本的默认值分别为20和2。 默认值:3 调整建议:此参数设置越大,自动清理功能创建的线程数越多,占用的系统cpu和内存资源越多,所以设置时不建议设置过大,避免由于此参数设置过大导致内存无法分配或者占用过多cpu资源,导致数据库启动报错或业务受到影响。 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
  • autovacuum_naptime 参数说明:设置两次自动清理操作的时间间隔。 参数类型:整型 参数单位:s 取值范围:1~2147483。 默认值:10min(即600s) 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。例如,不带单位取值600,表示autovacuum_naptime为600s;带单位取值10min,表示autovacuum_naptime为10min。取值如果要带单位,必须为s、min、h、d 设置建议:设置为默认值,不作调整。
  • autovacuum_analyze_scale_factor 参数说明:ANALYZE表的规模因子,用于计算执行ANALYZE的阈值,计算方式为autovacuum_analyze_threshold+ reltuples(表上元组的个数) * autovacuum_analyze_scale_factor。当表上被删除、插入或更新的记录数超过阈值时才会对这个表执行ANALYZE操作。 参数类型:浮点型 参数单位:无 取值范围:0.0 ~ 100.0 默认值:0.1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:该值越大,触发ANALYZE的条件就越高,对性能影响越小。
  • log_autovacuum_min_duration 参数说明:当自动清理的执行时间大于或者等于某个特定的值时,向服务器日志中记录自动清理执行的每一步操作。设置此选项有助于追踪自动清理的行为。 举例如下:将log_autovacuum_min_duration设置为250ms,记录所有运行大于或者等于250ms的自动清理命令的相关信息。 参数类型:整型 参数单位:毫秒 取值范围:-1~2147483647。 当参数设置为0时,表示所有的自动清理操作都记录到日志中。 当参数设置为-1时,表示所有的自动清理操作都不记录到日志中。 当参数设置为非-1时,当由于锁冲突的存在导致一个自动清理操作被跳过,记录一条消息(记录跳过autovacuum原因,便于审计)。 默认值:-1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:一般默认-1。日志中需要记录autovacuum操作的场景下,则设置为非-1。
  • autovacuum_freeze_max_age 参数说明:对于ASTORE表,指定在一个VACUUM操作被强制执行前,一个表的pg_class.relfrozenxid域能保持的最大周期(事务的)。 VACUUM也可以删除pg_clog/子目录中的旧文件。 即使自动清理线程被禁止,系统也会调用自动清理线程。 参数类型:长整型 参数单位:无 取值范围:100 000~576 460 752 303 423 487 默认值:4000000000 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。
  • autovacuum_vacuum_threshold 参数说明:用于计算触发VACUUM的阈值,计算方式为autovacuum_vacuum_threshold+ reltuples(表上元组的个数) * autovacuum_vacuum_scale_factor。当表上被删除或更新的记录数超过阈值时才会对这个表执行VACUUM操作。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 默认值:50 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。
  • autovacuum_analyze_threshold 参数说明:用于计算触发ANALYZE操作的阈值,计算方式为autovacuum_analyze_threshold+ reltuples(表上元组的个数) * autovacuum_analyze_scale_factor。当表上被删除、插入或更新的记录数超过阈值时才会对这个表执行ANALYZE操作。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647 默认值:50 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:推荐使用默认值。
  • autovacuum_vacuum_scale_factor 参数说明:VACUUM时计算表的规模因子,用于计算执行VACUUM的阈值,计算方式为autovacuum_vacuum_threshold+ reltuples (表上元组的个数)* autovacuum_vacuum_scale_factor。当表上被删除或更新的记录数超过阈值时才会对这个表执行VACUUM操作。 参数类型:浮点型 参数单位:无 取值范围:0.0 ~ 100.0 默认值:0.2 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:该值越大,触发VACUUM的条件就越高,对性能影响越小。
  • autovacuum 参数说明:控制数据库自动清理线程(autovacuum)的启动。自动清理线程运行的前提是将track_counts设置为on。 如果希望系统在故障恢复后,具备自动清理两阶段事务的功能,请将autovacuum设置为on; 当设置autovacuum为on,autovacuum_max_workers为0时,表示系统不会自动进行autovacuum,只会在故障恢复后,自动清理两阶段事务; 当设置autovacuum为on,autovacuum_max_workers大于0时,表示系统不仅在故障恢复后,自动清理两阶段事务,并且还可以自动进行autovacuum。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启数据库自动清理线程。 off:表示关闭数据库自动清理线程。 默认值:on 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。
  • autoanalyze_timeout 参数说明:设置autoanalyze的超时时间。在对某张表做autoanalyze时,如果该表的analyze时长超过了autoanalyze_timeout,则自动取消该表此次analyze。 参数类型:整型 参数单位:秒(s) 取值范围:0~2147483,0表示不超时。 默认值:300 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:无。
  • autovacuum_mode 参数说明:该参数仅在autovacuum设置为on的场景下生效,它控制autoanalyze和autovacuum的打开情况。 参数类型:枚举类型 参数单位:无 取值范围:analyze、vacuum、mix、none analyze:表示只做autoanalyze。 vacuum:表示只做autovacuum。 mix:表示autoanalyze和autovacuum都做。 none:表示autoanalyze和autovacuum都不做。 默认值:mix 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:建议设置为默认值。
  • GS_GET_LISTEN_ADDRESS_EXT_INFO GS_GET_LISTEN_ADDRESS_EXT_INFO视图描述了查询当前DN实例扩展IP配置信息。具体使用场景参见gs_get_listen_address_ext_info()。 表1 GS_GET_LISTEN_ADDRESS_EXT_INFO字段 名称 类型 描述 node_name text DN实例名。 host text DN实例侦听IP。 port bigint DN实例侦听的port。 ext_listen_ip text DN实例配置扩展IP。 父主题: 通信
  • 执行没有结果集的语句 执行EXECUTE IMMEDIATE命令示例如下: EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "CREATE TABLE test1 (...);"; EXEC SQL END DECLARE SECTION; EXEC SQL EXECUTE IMMEDIATE :stmt; EXECUTE IMMEDIATE可以用于不返回结果集的SQL语句,比如:DDL、INSERT、UPDATE和DELETE语句。但不能用这种方式执行检索数据的语句,比如:SELECT语句。 父主题: 执行动态SQL语句
  • maintenance_work_mem 参数说明:设置在维护性操作(比如VACUUM、CREATE INDEX等)中可使用的最大的内存。该参数的设置会影响VACUUM、VACUUM FULL、CLUSTER、CREATE INDEX的执行效率。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,1024~2147483647‬,单位为KB。 默认值: 独立部署: CN:1GB(60核CPU/480G内存);512MB(32核CPU/256G内存);256MB(16核CPU/128G内存);128MB(8核CPU/64G内存);64MB(4核CPU/32G内存);32MB(4核CPU/16G内存) DN:2GB(60核CPU/480G内存);1GB(32核CPU/256G内存);512MB(16核CPU/128G内存);256MB(8核CPU/64G内存);128MB(4核CPU/32G内存);64MB(4核CPU/16G内存) 金融版(标准型): CN:1GB(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存);512MB(72核CPU/576G内存,64核CPU/512G内存);256MB(60核CPU/480G内存,32核CPU/256G内存,16核CPU/128G内存,8核CPU/64G内存) DN:2GB(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,72核CPU/576G内存,64核CPU/512G内存,60核CPU/480G内存);1GB(32核CPU/256G内存);512MB(16核CPU/128G内存);256MB(8核CPU/64G内存) 企业版: CN:1GB(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,80核CPU/512G内存);512MB(72核CPU/576G内存,64核CPU/512G内存);256MB(60核CPU/480G内存,32核CPU/256G内存,16核CPU/128G内存,8核CPU/64G内存) DN:2GB(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,80核CPU/512G内存,72核CPU/576G内存,64核CPU/512G内存,60核CPU/480G内存);1GB(32核CPU/256G内存);512MB(16核CPU/128G内存);256MB(8核CPU/64G内存) 金融版(数据计算型): CN:1GB(196核CPU/1536G内存,128核CPU/1024G内存,96核CPU/768G内存);256MB(72核CPU/576G内存,64核CPU/512G内存);128MB(32核CPU/256G内存) DN:2GB(196核CPU/1536G内存,128核CPU/1024G内存,96核CPU/768G内存);1GB(72核CPU/576G内存,64核CPU/512G内存);512MB(32核CPU/256G内存) 设置建议: 建议设置此参数的值大于work_mem,可以改进清理和恢复数据库转储的速度。因为在一个数据库会话里,任意时刻只有一个维护性操作可以执行,并且在执行维护性操作时不会有太多的会话。 当自动清理线程运行时,autovacuum_max_workers倍数的内存将会被分配,所以此时设置maintenance_work_mem的值应该不小于work_mem。 如果进行大数据量的cluster等,可以在session中调大该值。
共100000条