华为云用户手册

  • 背景信息 GaussDB 提供了多种修改GUC参数的方法,用户可以方便的针对数据库、用户、会话进行设置。 参数名称不区分大小写。 参数取值有整型、浮点型、字符串、布尔型和枚举型五类。 布尔值可以是(on,off)、(true,false)、(yes,no)或者(1,0),且不区分大小写。 枚举类型的取值是在系统表pg_settings的enumvals字段取值定义的。 对于有单位的参数,在设置时请指定单位,否则将使用默认的单位。 参数的默认单位在系统表pg_settings的unit字段定义的。 内存单位有:KB(千字节)、MB(兆字节)和GB(吉字节)。 时间单位:ms(毫秒)、s(秒)、min(分钟)、h(小时)和d(天)。 具体参数说明请参见GUC参数说明。
  • 恢复控制函数 恢复信息函数提供了当前备机状态的信息。这些函数可能在恢复期间或正常运行中执行。 pg_is_in_recovery() 描述:如果恢复仍然在进行中则返回true。 返回值类型:Boolean pg_last_xlog_receive_location() 描述:获取最后接收事务日志的位置并通过流复制将其同步到磁盘。当流复制正在进行时,事务日志将持续递增。如果恢复已完成,则最后一次获取的WAL记录会被静态保持并在恢复过程中同步到磁盘。如果流复制不可用,或还没有开始,这个函数返回NULL。 返回值类型:text pg_last_xlog_replay_location() 描述:获取最后一个事务日志在恢复时重放的位置。如果恢复仍在进行,事务日志将持续递增。如果已经完成恢复,则将保持在恢复期间最后接收WAL记录的值。如果未进行恢复但服务器正常启动时,则这个函数返回NULL。 返回值类型:text pg_last_xact_replay_timestamp() 描述:获取最后一个事务在恢复时重放的时间戳。这是为在主节点上生成事务提交或终止WAL记录的时间。如果在恢复时没有事务重放,则这个函数返回NULL。如果恢复仍在进行,则事务日志将持续递增。如果恢复已经完成,则将保持在恢复期间最后接收WAL记录的值。如果服务器无需恢复就已正常启动,则这个函数返回NULL。 返回值类型:timestamp with time zone 恢复控制函数控制恢复的线程。这些函数可能只在恢复时被执行。 pg_is_xlog_replay_paused() 描述:如果恢复暂停则返回true。 返回值类型:Boolean pg_xlog_replay_pause() 描述:立即暂停恢复。 返回值类型:void pg_xlog_replay_resume() 描述:如果恢复处于暂停状态,则重新启动。 返回值类型:void gs_get_active_archiving_standby() 描述:查询同一分片内归档备机的信息。返回备机名,备机归档位置和已归档日志个数。 返回值类型:text,int gs_pitr_get_warning_for_xlog_force_recycle() 描述:查询开启归档后是否因归档槽不推进日志大量堆积导致日志被回收。 返回值类型:Boolean gs_pitr_clean_history_global_barriers(stop_barrier_timestamp cstring) 描述:清理指定时间之前所有barrier记录。返回时间最远的barrier记录。入参为cstring类型,linux时间戳。需要管理员角色或运维管理员角色执行。 返回值类型:text gs_pitr_archive_slot_force_advance(stop_barrier_timestamp cstring) 描述:强制推进归档槽,并清理不需要的barrier记录。返回新的归档槽位置。入参为cstring类型,linux时间戳。需要管理员角色或运维管理员角色执行。 返回值类型:text gs_recent_barrier_buffer_info(start_time text, end_time text) 描述:根据用户输入的时间范围,进行相应的barrier信息查询,获取time_stamp、 CS N、LSN和standard_time。 返回值类型:records 说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。输入参数start_time和end_time采用“年-月-日 时间”格式,其中时间采用clock格式。查询最大时间跨度为1天,超出跨度约束,根据查询起始时间将结束时间自动转换为极限边界进行查询。例如: gaussdb=# SELECT * FROM gs_recent_barrier_buffer_info('2024-01-15 23:27:50', '2024-01-15 23:28:00'); timestamp | lsn | csn | standard_time ------------+-------------------+----------+--------------------- 1705332470 | 00000000/15FFBBA0 | 41020421 | 2024-01-15 23:27:50 1705332471 | 00000000/15FFBDF0 | 41020422 | 2024-01-15 23:27:51 1705332472 | 00000000/15FFC058 | 41020423 | 2024-01-15 23:27:52 1705332472 | 00000000/15FFC0F8 | 41020424 | 2024-01-15 23:27:52 1705332473 | 00000000/15FFC348 | 41020425 | 2024-01-15 23:27:53 1705332474 | 00000000/15FFC598 | 41020426 | 2024-01-15 23:27:54 1705332475 | 00000000/15FFC638 | 41020427 | 2024-01-15 23:27:55 1705332476 | 00000000/15FFC888 | 41020428 | 2024-01-15 23:27:56 1705332476 | 00000000/15FFDC80 | 41020433 | 2024-01-15 23:27:56 1705332477 | 00000000/15FFDD20 | 41020434 | 2024-01-15 23:27:57 1705332478 | 00000000/15FFDF70 | 41020435 | 2024-01-15 23:27:58 1705332479 | 00000000/15FFE1D8 | 41020436 | 2024-01-15 23:27:59 1705332480 | 00000000/15FFE278 | 41020437 | 2024-01-15 23:28:00 1705332480 | 00000000/15FFE4C8 | 41020438 | 2024-01-15 23:28:00 (14 rows) gs_show_obs_media_files(slot_name cstring, src cstring, offset int32, limit int32) 描述:根据用户输入的归档槽(slot_name)和OBS目录地址(src),查询OBS文件列表。 返回值类型:records 说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。Offset为查询结果偏移,limit为输出最大行数,查询src下所有文件。例如: gaussdb=# SELECT gs_show_obs_archive_files('ssh','dn1/pg_xlog',0, 5); gs_show_obs_archive_files --------------------------------------------------------------------------------------------- (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_00_01_00000004_00000002_00000000) (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_00_01_00000103_00000003_00000000) (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_01_01_00000004_00000002_00000000) (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_01_01_00000103_00000003_00000000) (wstdist_ssh/archive/dn1/pg_xlog/000000010000000000000007_02_01_00000004_00000002_00000000) (5 rows) gs_upload_obs_media_file(slot_name cstring, src cstring, dest cstring, is_forced bool) 描述:根据用户输入的归档槽(slot_name)、上传文件原地址(src)、OBS地址(dest)和是否强制上传(is_forced),上传OBS文件。 返回值类型:void 说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。原文件目录仅允许为$GAUSS LOG 目录。例如: gaussdb=# SELECT * FROM gs_upload_obs_archive_file('ssh', '/data/gauss/log/stwang/test/000000010000000000000007_02_01_00000004_00000002_00000000', 'dn1/pg_xlog/000000010000000000000019_02_01_00000000_00000000_00000003', true); gs_upload_obs_archive_file ---------------------------- (1 row) gs_download_obs_media_file(slot_name cstring, src cstring, dest cstring) 描述:根据用户输入的归档槽(slot_name)、下载原地址(src)和本地目标地址(dest),下载OBS文件。 返回值类型:void 说明:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限。下载目录仅允许为$GAUSSLOG目录。例如: gaussdb=# SELECT * FROM gs_download_obs_archive_file('ssh','dn1/pg_xlog/000000010000000000000019_02_01_00000000_00000000_00000003','/data/gauss/log/stwang/test'); gs_download_obs_archive_file ------------------------------ (1 row) 当恢复暂停时,没有发生数据库更改。如果是在热备里,所有新的查询将看到一致的数据库快照,并且不会有进一步的查询冲突产生,直到恢复继续。 如果不能使用流复制,则暂停状态将无限的延续。当流复制正在进行时,将连续接收WAL记录,最终将填满可用磁盘空间,这个进度取决于暂停的持续时间,WAL生成的速度和可用的磁盘空间。
  • 备份控制函数 备份控制函数可帮助进行在线备份。 pg_create_restore_point(name text) 描述:为执行恢复创建一个命名点(需要管理员角色)。 返回值类型:text 备注:pg_create_restore_point创建了一个可以用作恢复目的、有命名的事务日志记录,并返回相应的事务日志位置。在恢复过程中,recovery_target_name可以通过这个名称定位对应的日志恢复点,并从此处开始执行恢复操作。避免使用相同的名称创建多个恢复点,因为恢复操作将在第一个匹配(恢复目标)的名称上停止。 pg_current_xlog_location() 描述:获取当前事务日志的写入位置。 返回值类型:text 备注:pg_current_xlog_location使用与前面那些函数相同的格式显示当前事务日志的写入位置。如果是只读操作,不需要系统管理员权限。 pg_current_xlog_insert_location() 描述:获取当前事务日志的插入位置。 返回值类型:text 备注:pg_current_xlog_insert_location显示当前事务日志的插入位置。插入点是事务日志在某个瞬间的“逻辑终点”,而实际的写入位置则是从服务器内部缓冲区写出时的终点。写入位置是可以从服务器外部检测到的终点,如果要归档部分完成事务日志文件,则该操作即可实现。插入点主要用于服务器调试目的。如果是只读操作,不需要系统管理员权限。 gs_current_xlog_insert_end_location() 描述:获取当前事务日志的插入位置。 返回值类型:text 备注:gs_current_xlog_insert_end_location显示当前事务日志的实际插入位置。 pg_start_backup(label text [, fast boolean ]) 描述:开始执行在线备份(需要管理员角色、复制的角色或运维管理员角色打开operation_mode)。 返回值类型:text 备注:pg_start_backup接受一个用户定义的备份标签(通常这是备份转储文件存放地点的名称)。这个函数向数据库的数据目录写入一个备份标签文件,然后以文本方式返回备份的事务日志起始位置。该函数务必配合pg_stop_backup()使用,单独调用该函数会导致backup_label残留,后面再进行WAL回放时会根据backup_label读取checkpoint,如果该checkpoint对应的WAL文件已经被回收,则会导致数据库无法正常启动。 1 2 3 4 5 gaussdb=# SELECT pg_start_backup('label_goes_here'); pg_start_backup ----------------- 0/3000020 (1 row) pg_stop_backup() 描述:完成执行在线备份(需要管理员角色、复制的角色或运维管理员角色打开operation_mode)。 返回值类型:text 备注:pg_stop_backup删除pg_start_backup创建的标签文件,并且在事务日志归档区里创建一个备份历史文件。这个历史文件包含给予pg_start_backup的标签、备份的事务日志起始与终止位置、备份的起始和终止时间。返回值是备份的事务日志终止位置。计算出中止位置后,当前事务日志的插入点将自动前进到下一个事务日志文件,结束的事务日志文件可以被立即归档从而完成备份。 pg_switch_xlog() 描述:切换到一个新的事务日志文件(需要管理员角色或运维管理员角色打开operation_mode)。 返回值类型:text 备注:pg_switch_xlog移动到下一个事务日志文件,以允许将当前日志文件归档(假定使用连续归档)。返回值是刚完成的事务日志文件的事务日志结束位置+1。如果从最后一次事务日志切换以来没有活动的事务日志,则pg_switch_xlog不进行移动操作,直接返回当前事务日志文件的开始位置。 pg_xlogfile_name(location text) 描述:将事务日志的位置字符串转换为文件名。 返回值类型:text 备注:pg_xlogfile_name仅抽取事务日志文件名称。如果给定的事务日志位置恰好位于事务日志文件的交界上,这两个函数都返回前一个事务日志文件的名称。这对于管理事务日志归档来说是非常有利的,因为前一个文件是当前最后一个需要归档的文件。 pg_xlogfile_name_offset(location text) 描述:将事务日志的位置字符串转换为文件名并返回在文件中的字节偏移量。 返回值类型:text,integer 备注:可以使用pg_xlogfile_name_offset从前述函数的返回结果中抽取相应的事务日志文件名称和字节偏移量。例如: 1 2 3 4 5 6 7 gaussdb=# SELECT * FROM pg_xlogfile_name_offset(pg_stop_backup()); NOTICE: pg_stop_backup cleanup done, waiting for required WAL segments to be archived NOTICE: pg_stop_backup complete, all required WAL segments have been archived file_name | file_offset --------------------------+------------- 000000010000000000000003 | 272 (1 row) pg_xlog_location_diff(location text, location text) 描述:计算两个事务日志位置之间在字节上的区别。 返回值类型:numeric pg_cbm_start_tracked_location() 描述:用于查询cbm解析的起始lsn位置。 返回值类型:text pg_cbm_tracked_location() 描述:用于查询cbm解析到的lsn位置。 返回值类型:text pg_cbm_get_merged_file(startLSNArg text, endLSNArg text) 描述:用于将指定lsn范围之内的cbm文件合并成一个cbm文件,并返回合并完的cbm文件名。 返回值类型:text 备注:必须是系统管理员或运维管理员才能获取cbm合并文件。 pg_cbm_get_changed_block(startLSNArg text, endLSNArg text) 描述:用于将指定lsn范围之内的cbm文件合并成一个表,并返回表的各行记录。 返回值类型:records 备注:pg_cbm_get_changed_block返回的表字段包含:合并起始的lsn、合并截止的lsn、表空间oid、库oid、表的relfilenode、表的fork number、表是否为系统表、表是否被删除、表是否被创建、表是否被截断、表被截断后的页面数、有多少页被修改以及被修改的页号的列表。 pg_cbm_recycle_file(targetLSNArg text) 描述:删除不再使用的cbm文件,并返回删除后的第一条lsn。 返回值类型:text pg_cbm_force_track(targetLSNArg text,timeOut int) 描述:强制执行一次cbm追踪到指定的xlog位置,并返回实际追踪结束点的xlog位置。 返回值类型:text pg_enable_delay_ddl_recycle() 描述:开启延迟DDL功能,并返回开启点的xlog位置。需要管理员角色或运维管理员角色打开operation_mode。 返回值类型:text pg_disable_delay_ddl_recycle(barrierLSNArg text, isForce bool) 描述:关闭延迟DDL功能,并返回本次延迟DDL生效的xlog范围。需要管理员角色或运维管理员角色打开operation_mode。 返回值类型:records pg_enable_delay_xlog_recycle() 描述:开启延迟xlog回收功能,数据库主节点修复使用。需要管理员角色或运维管理员角色打开operation_mode。 返回值类型:void pg_disable_delay_xlog_recycle() 描述:关闭延迟xlog回收功能,数据库主节点修复使用。需要管理员角色或运维管理员角色打开operation_mode。 返回值类型:void pg_cbm_rotate_file(rotate_lsn text) 描述:等待cbm解析到rotate_lsn之后,强制切换文件,在build期间调用。 返回值类型:void gs_roach_stop_backup(backupid text) 描述:停止一个内部备份工具GaussRoach开启的备份。与pg_stop_backup系统函数类似,但更轻量。 返回值类型:text,内容为当前日志的插入位置。 gs_roach_enable_delay_ddl_recycle(backupid name) 描述:开启延迟DDL功能,并返回开启点的日志位置。与pg_enable_delay_ddl_recycle系统函数类似,但更轻量。并且,通过传入不同的backupid,可以支持并发打开延迟DDL。 返回值类型:text,内容为返回开启点的日志位置。 gs_roach_disable_delay_ddl_recycle(backupid text) 描述:关闭延迟DDL功能,并返回本次延迟DDL生效的日志范围。与pg_enable_delay_ddl_recycle系统函数类似,但更轻量。并且,通过传入不同的backupid,可以支持并发关闭延迟DDL功能。 返回值类型:records,内容为本次延迟DDL生效的日志范围。 gs_roach_switch_xlog(request_ckpt bool) 描述:切换当前使用的日志段文件,并且,如果request_ckpt为true,则触发一个全量检查点。 返回值类型:text,内容为切段日志的位置。 gs_block_dw_io(timeout int, identifier text) 描述:阻塞双写页面刷盘。 参数说明: timeout 阻塞时长。 取值范围:[0, 3600](秒),0为阻塞时长为0。 identifier 此次操作的标识。 取值范围:字符串,不支持除大小写字母、数字以及下划线(_)以外的字符。 返回值类型:Boolean 备注:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限,运维管理员角色须打开operation_mode。 gs_is_dw_io_blocked() 描述:查看当前双写页面刷盘是否被阻塞,如果处于阻塞中则返回true。 返回值类型:Boolean 备注:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限,运维管理员角色须打开operation_mode。 gs_pitr_advance_last_updated_barrier() 描述:在PITR模式下,强制推进上次上传到OBS/NAS介质中的全局最大已归档恢复点到当前点,无入参。 返回值类型:text 备注:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限,运维管理员角色须打开operation_mode。同时只能在集中式的主DN上使用才有效。返回值为当前推进到的最新本地最大已归档恢复点。 gs_pitr_clean_local_barrier_files('delete_timestamp') 描述:清理本地缓存的barrier记录文件。 参数范围:delete_timestamp参数类型为text,为linux时间戳,长度为10位。 返回值类型:text 备注:调用该函数的用户需要具有SYSADMIN权限或具有OPRADMIN权限,运维管理员角色须打开operation_mode。返回的结果是删除后本地最老barrier文件的开始时间戳。
  • 语法格式 查询数据 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [/*+ plan_hint */] [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] { * | {expression [ [ AS ] output_name ]} [, ...] } [ into_option ] [ FROM from_item [, ...] ] [ WHERE condition ] [ [ START WITH condition ] CONNECT BY [NOCYCLE] condition [ ORDER SIBLINGS BY expression ] ] [ GROUP BY grouping_element [, ...] ] [ HAVING condition [, ...] ] [ WINDOW {window_name AS ( window_definition )} [, ...] ] [ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ] [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] [ LIMIT { [offset,] count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] [ into_option ] [ {FOR { UPDATE | NO KEY UPDATE | SHARE | KEY SHARE } [ OF table_name [, ...] ] [ NOWAIT | WAIT n | SKIP LOCKED ]}[...] ] [into_option]; condition和expression中可以使用targetlist中表达式的别名。 只能同一层引用。 只能引用targetlist中的别名。 只能是后面的表达式引用前面的表达式。 不能包含volatile函数。 不能包含Window function函数。 不支持在JOIN ON条件中引用别名。 targetlist中有多个要应用的别名则报错。 缓存SELECT语句计划的场景下,WHERE IN候选子集不易过大,建议条件个数不要超过100,防止引发动态内存过高问题: WHERE IN 候选子集过大时,生成计划的内存占用会增大。 当拼接SQL构造的WHERE IN 子集不同,缓存计划的SQL模板无法复用。会生成大量不同的计划,且计划无法共享 ,占用大量内存。 其中子查询with_query为: with_query_name [ ( column_name [, ...] ) ] AS [ [ NOT ] MATERIALIZED ] ( {select | values | insert | update | delete} ) 其中into子句为: into_option: { INTO var_name [, var_name] ... | INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' } export_options: { [FIELDS [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char' ] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] } 其中指定查询源from_item为: {[ ONLY ] table_name [ * ] [ partition_clause ] [ [ AS ] alias [ ( column_alias [, ...] ) ] ] [ TABLESAMPLE sampling_method ( argument [, ...] ) [ REPEATABLE ( seed ) ] ] [ TIMECAPSULE {TIMESTAMP | CSN} expression ] |( select ) [ AS ] alias [ ( column_alias [, ...] ) ] |with_query_name [ [ AS ] alias [ ( column_alias [, ...] ) ] ] |function_name ( [ argument [, ...] ] ) [ AS ] alias [ ( column_alias [, ...] | column_definition [, ...] ) ] |function_name ( [ argument [, ...] ] ) AS ( column_definition [, ...] ) |xmltable_clause |from_item unpivot_clause |from_item pivot_clause |from_item [ NATURAL ] join_type from_item [ ON join_condition | USING ( join_column [, ...] ) ]} 其中group子句为: | expression | ( expression [, ...] ) | ROLLUP ( { expression | ( expression [, ...] ) } [, ...] ) | CUBE ( { expression | ( expression [, ...] ) } [, ...] ) | GROUPING SETS ( grouping_element [, ...] ) from_item中指定分区partition_clause为: PARTITION { ( { partition_name | subpartition_name } [, ...] ) | FOR ( partition_value [, ...] ) } | SUBPARTITION { ( subpartition_name ) | FOR ( subpartition_value [, ...] )} 指定分区只适合分区表。 PARTITION指定多个分区名时,一级分区名和二级分区名可同时存在,且可以存在相同的分区名,最终分区范围取其并集。 其中设置排序方式nlssort_expression_clause为: NLSSORT ( column_name, ' NLS_SORT = { SCHINESE_PINYIN_M | generic_m_ci } ' ) 第二个参数可选generic_m_ci,仅支持纯英文不区分大小写排序。 简化版查询语法,功能相当于SELECT * FROM table_name。 TABLE { ONLY {(table_name)| table_name} | table_name [ * ]};
  • 参数说明 pool_name 资源池名称。 资源池名称为已创建的资源池。 取值范围:字符串,要符合标识符命名规范。 group_name 控制组名称。 设置控制组名称时,语法可以使用双引号,也可以使用单引号。 group_name对大小写敏感。 若数据库管理员指定自定义Class组下的Workload控制组,如control_group的字符串为:"class1:workload1";代表此资源池指定到class1控制组下的workload1控制组。也可同时指定Workload控制组的层次,如control_group的字符串为:"class1:workload1:1"。 若数据库用户指定Timeshare控制组代表的字符串,即"Rush"、"High"、"Medium"或"Low"其中一种,如control_group的字符串为"High";代表资源池指定到DefaultClass控制组下的"High" Timeshare控制组。 取值范围:已创建的控制组。 stmt 资源池语句执行的最大并发数量,-1表示不限制并发数。 取值范围:数值型,-1~2147483647‬。 dop 资源池最大并发度,语句执行时能够创建的最多线程数量。 取值范围:数值型,1~2147483647‬。 memory_size 资源池最大使用内存。 取值范围:字符串,内容范围1KB~2047GB,单位大小写敏感。 mem_percent 资源池可用内存占全部内存或者组用户内存使用的比例。 在多租户场景下,组用户和业务用户的mem_percent范围为1-100的整数,默认为20。 在普通场景下,普通用户的mem_percent范围为0-100的整数,默认值为0。 mem_percent和memory_limit同时指定时,只有mem_percent起作用。 io_limits 资源池每秒可触发I/O次数上限,0表示不限制I/O次数。 以万次为单位计数。 取值范围:数值型,0-2147483647 io_priority I/O利用率高达90%时,重消耗I/O作业进行I/O资源管控时关联的优先级等级。 包括三档可选:Low、Medium和High。不控制时可设置为None,默认为None。 取值范围:枚举型,可选项为:None,Low、Medium和High。 io_limits和io_priority的设置都仅对复杂作业有效。包括批量导入(INSERT INTO SELECT、COPY FROM、CREATE TABLE AS等),单DN数据量超过500MB的复杂查询和VACUUM FULL等操作。 max_workers 只用于扩容的接口,表示扩容数据重分布时,表内插入并发度。 max_connections 最大连接数,用来限制资源池可使用的最大连接数。 所有资源池的最大连接数加起来不能超过整个gaussdb进程设置的guc参数max_connections指定的最大连接数。
  • max_cbm_retention_time 参数说明:用于控制何时触发备份CBM文件的强制回收,以避免由于备份操作过程中CBM文件无法回收导致磁盘满、实例只读等影响。该参数实际设置值建议按照全备的时间间隔设置。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:86400 ~ 2147483647 时间单位为秒。 最小值为1天。 默认值为2周。 默认值:1209600
  • max_size_for_xlog_retention 参数说明:用于控制何时触发备份复制槽或逻辑复制槽的强制推进,以避免由于备份操作或逻辑解码过程中日志无法回收导致磁盘满、实例只读等影响。该参数实际设置值建议比cm_server组件的datastorage_threshold_value_check略小一点,以避免实例进入只读状态。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:-100 ~ 2147483647 0表示关闭该功能。 负值表示按磁盘阈值触发,如-80,表示当磁盘阈值超过80%,且日志回收是由于备份操作或逻辑解码被阻塞,那么会触发备份复制槽或逻辑复制槽的强制推进。 正值表示按日志积压大小触发,如32,表示距离当前检查点redo位置,当备份复制槽落后了大于32段日志(每段日志大小为16MB)时,且日志回收是由于备份操作或逻辑解码被阻塞,那么会触发备份复制槽或逻辑复制槽的强制推进。 默认值:-80
  • 示例 修改物化视图所有者。 --创建表。 gaussdb=# CREATE TABLE my_table (c1 int, c2 int) WITH(STORAGE_TYPE=ASTORE); --创建全量物化视图。 gaussdb=# CREATE MATERIALIZED VIEW foo AS SELECT * FROM my_table; --创建用户。 gaussdb=# CREATE USER test PASSWORD '********'; --修改全量物化视图的所有者。 gaussdb=# ALTER MATERIALIZED VIEW foo OWNER TO test; --查看物化视图信息。 gaussdb=# \dm foo List of relations Schema | Name | Type | Owner | Storage --------+------+-------------------+-------+---------------------------------- public | foo | materialized view | test | {orientation=row,compression=no} (1 row) 重命名物化视图的列。 --查询物化视图的列。 gaussdb=# \d foo; Materialized view "public.foo" Column | Type | Modifiers --------+---------+----------- c1 | integer | c2 | integer | Rules: "_RETURN" AS ON SELECT TO foo DO INSTEAD SELECT my_table.c1, my_table.c2 FROM my_table Replica Identity: NOTHING --将物化视图foo的列c1修改为col1,c2修改为col2。 gaussdb=# ALTER MATERIALIZED VIEW foo RENAME c1 to col1; gaussdb=# ALTER MATERIALIZED VIEW foo RENAME c2 to col2; --通过SELECT查看该物化视图的列。 gaussdb=# SELECT * FROM foo WHERE 1=2; col1 | col2 ------+------ (0 rows) 重命名物化视图。 --将物化视图foo重命名为my_mview。 gaussdb=# ALTER MATERIALIZED VIEW foo RENAME TO my_mview; --查询信息。 gaussdb=# \dm my_mview List of relations Schema | Name | Type | Owner | Storage --------+----------+-------------------+-------+---------------------------------- public | my_mview | materialized view | test | {orientation=row,compression=no} (1 row) --删除。 gaussdb=# DROP MATERIALIZED VIEW my_mview; gaussdb=# DROP TABLE my_table ; gaussdb=# DROP USER test;
  • password_effect_time 参数说明:该字段决定账户密码的有效时间。 参数类型:浮点型 参数单位:天 取值范围:0~999。整数部分表示天数,小数部分可以换算成时、分、秒,如:password_lock_time=0.5,表示0天零12小时。 0表示不开启有效期限制功能。 1~999表示创建账户所指定的密码有效期,临近或超过有效期系统会提示用户修改密码。 默认值:0 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:出于安全考虑,建议设置为系统给定的默认值。
  • enable_innertool_cert 参数说明:用于控制内部工具使用证书认证。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on:表示内部工具使用证书认证。 off:表示内部工具不使用证书认证。 默认值:off 此参数必须与参数ssl开关同时打开才能生效。 此开关打开使用的证书默认配置的是$GAUSSHOME/share/sslcert/gsql目录下的证书,证书的Common Name必须与初始用户相同,否则认证失败。 此参数生效后,初始用户使用证书认证,其他用户则需要使用密码方式认证。 此参数打开,允许初始用户使用证书认证方式远程连接数据库。
  • plat_compat_allow_public_key_retrieval 参数说明:M-Compatibility模式数据库行为配置项。该参数是用来控制是否允许客户端RSA Public key的开关,默认关闭。 参数类型:布尔型 on表示内核允许客户端请求RSA Public key,支持密码通过RSA加密传输。 off表示不允许客户端请求RSA Public key。 参数单位:无 默认值:off 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:选择RSA连接时,参数设为on,并将SSL设置为off。
  • password_reuse_max 参数说明:在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用次数检查,仅sysadmin用户可以访问。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 修改密码时会检查配置参数password_reuse_time和password_reuse_max。 当password_reuse_time和password_reuse_max都为正数时,只要满足其中任一个,即可认为密码可以重用。 当password_reuse_time为0时,表示不限制密码重用天数,仅限制密码重用次数。 当password_reuse_max为0时,表示不限制密码重用次数,仅限制密码重用天数。 当password_reuse_time和password_reuse_max都为0时,表示不对密码重用进行限制。 取值范围:整型,最小值为0,最大值为1000。 0表示不检查密码可重用次数。 正整数表示新密码不能为该值指定的次数内使用过的密码。 默认值:0
  • password_encryption_type 参数说明:该参数决定采用何种加密方式对用户密码进行加密存储。修改此参数的配置不会自动触发已有用户密码加密方式的修改,只会对新创建用户的密码或已有用户修改的密码采用新的加密方式进行加密。 参数类型:枚举型 参数单位:无 取值范围:0、1、2、3 0:表示采用md5方式对密码加密。 1:表示采用sha256和md5两种方式分别对密码加密。 2:表示采用sha256方式对密码加密。 3:表示采用sm3方式对密码加密。 MD5加密算法安全性低,存在安全风险,不建议使用。 默认值:2 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:设置为默认值。
  • failed_login_attempts 参数说明:在任意时候,如果输入密码错误的次数达到failed_login_attempts参数所设定的值,则当前账户被锁定,在经过password_lock_time参数所设定的秒数后才会被自动解锁,其间仅sysadmin用户可以访问。例如,登录时输入密码失败,ALTER USER时修改密码失败等。 参数类型:整型 参数单位:次 failed_login_attempts和password_lock_time必须都为正数时锁定和解锁功能才能生效。 取值范围:0~1000。 0表示自动锁定功能不生效。 正整数表示当错误密码次数达到failed_login_attempts设定的值时,当前账户将被锁定。 默认值:10 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:建议设置为5~10。如果参数过大,密码错误次数输入过多(小于最大值1000)但不采取安全措施的话有安全风险,如果参数过小(大于0小于5)则可能会因为误输入导致账户被锁定影响正常使用。
  • password_lock_time 参数说明:该参数指定账户被锁定后自动解锁的时间。 参数类型:浮点型 参数单位:天 password_lock_time和failed_login_attempts必须都为正数时锁定和解锁功能才能生效。 取值范围:0~365。整数部分表示天数,小数部分可以换算成时、分、秒,如:password_lock_time=1.5,表示1天零12小时。 0表示密码验证失败时,自动锁定功能不生效。 正数表示账户被锁定后,当锁定时间超过password_lock_time设定的值时,账户将会被自行解锁。 默认值:1 设置方式:该参数属于SIGHUP类型参数,请参见表1中对应设置方法进行设置。 设置建议:设置为默认值。自动解锁时间不宜设置过长,需要同failed_login_attempts参数设置保持在合理范围内,如果failed_login_attempts参数设置过小,自动解锁时间设置过长,会导致因误输入导致账号长时间无法使用,影响用户正常使用。
  • password_reuse_time 参数说明:在使用ALTER USER或者ALTER ROLE修改用户密码时,该参数指定是否对新密码进行可重用天数检查。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 修改密码时会检查配置参数password_reuse_time和password_reuse_max。 当password_reuse_time和password_reuse_max都为正数时,只要满足其中任一个,即可认为密码可以重用。 当password_reuse_time为0时,表示不限制密码重用天数,仅限制密码重用次数。 当password_reuse_max为0时,表示不限制密码重用次数,仅限制密码重用天数。 当password_reuse_time和password_reuse_max都为0时,表示不对密码重用进行限制。 取值范围:浮点型(天),最小值为0,最大值为3650。 0表示不检查密码可重用的天数。 正数表示新密码不能为该值指定的天数内使用过的密码。 默认值:0
  • session_timeout 参数说明:表明与服务器建立链接后,不进行任何操作的最长时间。 参数类型:整型 参数单位:秒(s) 取值范围:0~86400(1d)。 0表示关闭超时设置。 正数表示与服务器建立链接后,不进行任何操作的最长时间。当超过设定的值后,会与服务器断开连接。 默认值:600s 设置方式:该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 设置建议:设置为默认值。 GaussDB gsql客户端中有自动重连机制,所以针对初始化用户本地连接,超时后gsql表现的现象为断开后重连。
  • modify_initial_password 参数说明:当 GaussDB安装 成功后,数据库中仅存在一个初始用户(UID为10的用户)。客户通过该账户初次登录数据库进行操作时,该参数决定是否要对该初始账户的密码进行修改。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 如果安装过程中未指定初始用户密码,则安装后初始用户密码默认为空,执行其他操作前需要先通过gsql客户端设置初始用户的密码。此参数功能不再生效,保留此参数仅为兼容升级场景。 取值范围:布尔型 on表示数据库安装成功后初始用户首次登录操作前需要修改初始密码。 off表示数据库安装成功后初始用户无需修改初始密码即可进行操作。 默认值:off
  • require_ssl 参数说明:设置服务器端是否强制要求SSL连接,该参数只有当参数ssl为on时才有效。请在使用这个选项之前阅读通过gsql连接实例章节。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示服务器端强制要求SSL连接。 off表示服务器端对是否通过SSL连接不作强制要求。 GaussDB目前支持SSL的场景为客户端连接数据库主节点场景,该参数目前建议只在数据库主节点中开启。 默认值:off
  • ssl_renegotiation_limit 参数说明:指定在会话密钥重新协商之前,通过SSL加密通道可以传输的流量。这个重新协商流量限制机制可以减少攻击者针对大量数据使用密码分析法破解密钥的几率,但是也带来较大的性能损失。流量是指发送和接受的流量总和。使用SSL重协商机制可能引入其他风险,因此已禁用SSL重协商机制,为保持版本兼容保留此参数,修改参数配置不再起作用。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,最小值为0,最大值为2147483647。单位为KB。其中0表示禁用重新协商机制。 默认值:0
  • ssl 参数说明:服务端开启SSL连接。请在使用这个选项之前阅读通过gsql连接实例章节。 该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示服务端开启SSL连接,实际通信过程中是否为SSL加密传输由客户端配置决定。 off表示服务端关闭SSL连接。 开启此参数需要同时配置ssl_cert_file、ssl_key_file和ssl_ca_file等参数及对应文件,如果使用国密认证,还需要确保ssl_enc_cert_file和ssl_enc_key_file参数配置正确,不正确的配置可能会导致数据库无法正常启动。 默认值:on
  • default_week_format 参数说明:用于week()函数的默认mode值,取值范围与表现如下表所示。 default_week_format 一周的第一天 范围 第1周定义 0 周日 0~53 今年第一个有周日的周。 1 周一 0~53 今年第一个有4天及以上的周。 2 周日 1~53 今年第一个有周日的周。 3 周一 1~53 今年第一个有4天及以上的周。 4 周日 0~53 今年第一个有4天及以上的周。 5 周一 0~53 今年第一个有周一的周。 6 周日 1~53 今年第一个有4天及以上的周。 7 周一 1~53 今年第一个有周一的周。 一年的第1周,其中的1代表序号值。根据week_format不同,如第三列所示,一年的第一个周序号可能为0。 参数类型:整型 参数单位:无 取值范围:[0, 7] 默认值:0 设置方式:该参数属于USERSET类型参数,请参考GUC参数设置中对应设置方法进行设置。 设置建议:根据业务需要,选择合适的mode。
  • lc_messages 参数说明:设置信息显示的语言。 可接受的值是与系统相关的。 在一些系统上,这个区域范畴并不存在,不过仍然允许设置这个变量,只是不会有任何效果。同样,也有可能是所期望的语言的翻译信息不存在。在这种情况下,用户仍然能看到英文信息。 该参数属于SUSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:字符串 使用命令locale -a查看当前系统支持的区域和相应的编码格式,并可以选择进行设置。 默认情况下,gs_initdb会根据当前的系统环境初始化此参数,通过locale命令可以查看当前的配置环境。 默认值:C
  • lc_monetary 参数说明:设置货币值的显示格式,影响to_char之类的函数的输出。可接受的值是系统相关的。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:字符串 使用命令locale -a查看当前系统支持的区域和相应的编码格式,并可以选择进行设置。 默认情况下,gs_initdb会根据当前的系统环境初始化此参数,通过locale命令可以查看当前的配置环境。 默认值:C
  • lc_time_names 参数说明:控制用于显示日期和月份名称及缩写的语言。影响DATE_FORMAT()、DAYNAME()以及MONTHNAME()函数输出结果。不影响STR_TO_DATE()和GET_FORMAT()的表现。 参数类型:字符串 参数单位:无 取值范围:参数应当为简易格式的IETF语言标记,例如en_US、zh_CN等。 默认值:en_US 设置方式:该参数属于USERSET类型参数,请参考GUC参数设置中对应设置方法进行设置。 设置建议:根据业务需要,切换合适的语言。
  • lc_numeric 参数说明:设置数值的显示格式,影响to_char之类的函数的输出。可接受的值是系统相关的。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:字符串 使用命令locale -a查看当前系统支持的区域和相应的编码格式,并可以选择进行设置。 默认情况下,gs_initdb会根据当前的系统环境初始化此参数,通过locale命令可以查看当前的配置环境。 默认值:C
  • lc_time 参数说明:设置时间和区域的显示格式,影响to_char之类的函数的输出。可接受的值是系统相关的。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:字符串 使用命令locale -a查看当前系统支持的区域和相应的编码格式,并可以选择进行设置。 默认情况下,gs_initdb会根据当前的系统环境初始化此参数,通过locale命令可以查看当前的配置环境。 默认值:C
  • client_encoding 参数说明:设置客户端的字符编码类型。 请根据前端业务的情况确定。尽量客户端编码和服务器端编码一致,提高效率。 该参数属于USERSET类型参数,请参见表1中对应设置方法进行设置。 取值范围:兼容PostgreSQL所有的字符编码类型。其中UTF8表示使用数据库的字符编码类型。 使用命令locale -a查看当前系统支持的区域和相应的编码格式,并可以选择进行设置;不同操作系统之间,或者相同操作系统的不同版本之间,排序规则可能存在差异和变化。当应用业务在上述这些操作系统之间进行逻辑迁移时,操作系统排序规则的差异和变化可能会导致索引、分区、排序算子等数据库功能行为的差异,如相同的范围查询语句返回的数据结果集不同、相同的排序查询语句返回的查询结果不同等。应用业务需要根据操作系统发布的locale差异,在业务上排查业务数据是否涉及相关的字符。 默认情况下,gs_initdb会根据当前的系统环境初始化此参数,通过locale命令可以查看当前的配置环境。 参数建议保持默认值,不建议通过gs_guc工具或其他方式直接在gaussdb.conf文件中设置client_encoding参数,即使设置也不会生效,以保证数据库内部通信编码格式一致。 client_encoding 支持设置为GB18030_2022字符编码,当client_encoding=gb18030_2022时,需要保证客户端操作系统支持的GB18030字符集已升级到2022版本。 当数据库字符集编码为UTF8,且当前系统支持的区域下相应的编码格式为GB18030时,若客户端操作系统支持的GB18030字符集已升级到2022版本,且数据库中存在客户端GB18030字符集升级前存入的历史数据,则存在以下情况: set client_encoding = gb18030时,UTF8数据库中的历史数据返回给客户端的字符编码与客户端字符集升级前保持一致,但字符集升级过程中发生映射关系改变的38个字符的字形显示与2022版本保持一致。 set client_encoding = gb18030_2022时,UTF8数据库中的历史数据返回给客户端的字符编码与客户端字符集升级后保持一致,字形与升级前保持一致。这是因为GB18030字符集自身的各版本间存在不完全兼容,可能导致数据的不一致性。因此,若客户端涉及GB18030字符集升级且存在历史数据的场景,在升级前应进行历史数据的升级转换。 client_encoding支持设置为ZHS16GBK字符编码,下表展示了ZHS16GBK、GB18030、GB18030_2022字符集所有转换关系对应的server_encoding与client_encoding设置方式: server_encoding client_encoding locale 设置方法 zhs16gbk utf8 utf8 数据库自动获取locale取值。 utf8 zhs16gbk gbk gsql通过用户手动执行:set client_encoding = zhs16gbk。 jdbc连接时通过url参数直接指定:characterEncoding=zhs16gbk zhs16gbk zhs16gbk gbk gsql连接时数据库自动获取locale取值,内部进行处理后自动设置client_encoding = zhs16gbk。 jdbc连接时通过url参数直接指定:characterEncoding=zhs16gbk。 zhs16gbk gb18030 gb18030 gsql连接时数据库自动获取locale取值。 jdbc连接时通过url参数直接指定:characterEncoding=gb18030。 gb18030 zhs16gbk gbk gsql不支持该设置。 jdbc连接时通过url参数直接指定characterEncoding=zhs16gbk。 zhs16gbk gb18030-2022 gb18030 gsql连接时,用户手动执行:set client_encoding = gb18030_2022。 jdbc连接时通过url参数直接指定:characterEncoding=gb18030_2022。 gb18030-2022 zhs16gbk gbk gsql不支持该设置。 jdbc连接时通过url参数直接指定characterEncoding=zhs16gbk。 gb18030 utf8 utf8 数据库自动获取locale取值。 utf8 gb18030 gb18030 数据库自动获取locale取值。 jdbc连接时通过url参数直接指定:characterEncoding=gb18030。 gb18030_2022 utf8 utf8 数据库自动获取locale取值。 utf8 gb18030_2022 gb18030 gsql连接时,用户手动执行:set client_encoding = gb18030_2022。 jdbc连接时通过url参数直接指定:characterEncoding=gb18030_2022。 gb18030 gb18030 gb18030 数据库自动获取locale取值。 jdbc连接时通过url参数直接指定:characterEncoding=gb18030。 gb18030_2022 gb18030_2022 gb18030 gsql连接时数据库自动获取locale取值,内部进行处理后自动设置client_encoding = gb18030_2022。 jdbc连接时通过url参数直接指定:characterEncoding=gb18030_2022。 默认值:UTF8 推荐值:SQL_ASCII/UTF8
  • FORALL批量查询语句 语法图 图5 forall::= label declaration ::= 变量index会自动定义为integer类型并且只在此循环里存在。index的取值介于low_bound和upper_bound之间。 如果声明了SAVE EXCEPTIONS,则会将循环体DML执行过程中每次遇到的异常保存在SQL&BULK_EXCEPTIONS中,并在执行结束后统一抛出一个异常,循环过程中没有异常的执行的结果在当前子事务内不会回滚。 示例 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 gaussdb=# CREATE TABLE hdfs_t1 ( title NUMBER(6), did VARCHAR2(20), data_period VARCHAR2(25), kind VARCHAR2(25), interval VARCHAR2(20), time DATE, isModified VARCHAR2(10) ); CREATE TABLE gaussdb=# INSERT INTO hdfs_t1 VALUES( 8, 'Donald', 'OConnell', 'DOCONNEL', '650.507.9833', to_date('21-06-1999', 'dd-mm-yyyy'), 'SH_CLERK' ); INSERT 0 1 gaussdb=# CREATE OR REPLACE PROCEDURE proc_forall() AS BEGIN FORALL i IN 100..120 update hdfs_t1 set title = title + 100*i; END; / CREATE PROCEDURE --调用存储过程 gaussdb=# CALL proc_forall(); proc_forall ------------- (1 row) --查询存储过程调用结果 gaussdb=# SELECT * FROM hdfs_t1; title | did | data_period | kind | interval | time | ismodified --------+--------+-------------+----------+--------------+---------------------+------------ 231008 | Donald | OConnell | DOCONNEL | 650.507.9833 | 1999-06-21 00:00:00 | SH_CLERK (1 row) --删除存储过程和表 gaussdb=# DROP PROCEDURE proc_forall; DROP PROCEDURE gaussdb=# DROP TABLE hdfs_t1; DROP TABLE
  • 示例 --创建模式ot。 gaussdb=# CREATE SCHEMA ot; --创建表ot.test_tbl1。 gaussdb=# CREATE TABLE ot.test_tbl1(c1 INT, c2 INT); gaussdb=# INSERT INTO ot.test_tbl1 values(1,1); --查看当前search_path。 gaussdb=# SHOW search_path; search_path ---------------- "$user",public (1 row) --因为当前search_path中不包含ot,并且当前用户不是ot,所以直接查看表名会报错。 gaussdb=# SELECT * FROM test_tbl1; ERROR: relation "test_tbl1" does not exist LINE 1: SELECT * FROM test_tbl1; --创建同义词。 gaussdb=# CREATE OR REPLACE SYNONYM test_tbl1 FOR ot.test_tbl1; --使用同义词。 gaussdb=# SELECT * FROM test_tbl1; c1 | c2 ----+---- 1 | 1 (1 row) gaussdb=# INSERT INTO test_tbl1 VALUES (2,2); --删除。 gaussdb=# DROP SYNONYM test_tbl1; gaussdb=# DROP TABLE ot.test_tbl1; gaussdb=# DROP SCHEMA ot CASCADE;
共100000条