华为云用户手册

  • PG_AGGREGATE PG_AGGREGATE系统表存储与聚集函数有关的信息。PG_AGGREGATE里的每条记录都是一条pg_proc里面的记录的扩展。PG_PROC记录承载该聚集的名字、输入和输出数据类型,以及其它一些和普通函数类似的信息。 表1 PG_AGGREGATE字段 名字 类型 引用 描述 aggfnoid regproc PG_PROC.oid 此聚集函数的PG_PROC OID。 aggtransfn regproc PG_PROC.oid 转换函数。 aggcollectfn regproc PG_PROC.oid 收集函数。 aggfinalfn regproc PG_PROC.oid 最终处理函数(如果没有则为0)。 aggsortop oid PG_OPERATOR.oid 关联排序操作符(如果没有则为0)。 aggtranstype oid PG_TYPE.oid 此聚集函数的内部转换(状态)数据的数据类型。 agginitval text - 转换状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则转换状态值从null开始。 agginitcollect text - 收集状态的初始值。这是一个文本数据域,它包含初始值的外部字符串表现形式。如果数据域是null,则收集状态值从null开始。 父主题: 系统表
  • 数据类型转换 数据库中允许有些数据类型进行隐式类型转换(赋值、函数调用的参数等),有些数据类型间不允许进行隐式数据类型转换,可尝试使用 GaussDB (DWS)提供的类型转换函数,例如CAST进行数据类型强转。 GaussDB(DWS)数据库常见的隐式类型转换,请参见表1。 GaussDB(DWS)支持的DATE的效限范围是:公元前4713年到公元294276年。 表1 隐式类型转换表 原始数据类型 目标数据类型 备注 CHAR VARCHAR2 - CHAR NUMBER 原数据必须由数字组成。 CHAR DATE 原数据不能超出合法日期范围。 CHAR RAW - CHAR CLOB - VARCHAR2 CHAR - VARCHAR2 NUMBER 原数据必须由数字组成。 VARCHAR2 DATE 原数据不能超出合法日期范围。 VARCHAR2 CLOB - NUMBER CHAR - NUMBER VARCHAR2 - DATE CHAR - DATE VARCHAR2 - RAW CHAR - RAW VARCHAR2 - CLOB CHAR - CLOB VARCHAR2 - CLOB NUMBER 原数据必须由数字组成。 INT4 CHAR - 父主题: 存储过程
  • PGXC_WORKLOAD_TRANSACTION PGXC_WORKLOAD_TRANSACTION视图提供查询所有CN上Workload控制组相关的事务信息。需要有系统管理员权限或预置角色gs_role_read_all_stats权限才可以访问此视图。该视图仅在资源实时监控功能开启,即enable_resource_track为on时有效。 表1 PGXC_WORKLOAD_TRANSACTION字段 名称 类型 描述 node_name name 节点名称 workload name Workload控制组名称 commit_counter bigint 提交次数 rollback_counter bigint 回滚次数 resp_min bigint 最小响应时间,单位微秒 resp_max bigint 最大响应时间,单位微秒 resp_avg bigint 平均响应时间,单位微秒 resp_total bigint 响应时间总和,单位微秒 父主题: 系统视图
  • 参数 表1 SQLSetStmtAttr参数 关键字 参数说明 StatementtHandle 语句句柄。 Attribute 需设置的属性。 ValuePtr 指向对应Attribute的值。依赖于Attribute的值,ValuePtr可能是32位无符号整型值,或指向以空结束的字符串,二进制缓冲区,或者驱动定义值。注意,如果ValuePtr参数是驱动程序指定值。ValuePtr可能是有符号的整数。 StringLength 如果ValuePtr指向字符串或二进制缓冲区,这个参数是*ValuePtr长度,如果ValuePtr指向整型,忽略StringLength。
  • 原型 1 2 3 4 SQLRETURN SQLSetStmtAttr(SQLHSTMT StatementHandle SQLINTEGER Attribute, SQLPOINTER ValuePtr, SQLINTEGER StringLength);
  • 应用示例 查看分区表的分区信息: 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 CREATE TABLE web_returns_p1 ( wr_returned_date_sk integer, wr_returned_time_sk integer, wr_item_sk integer NOT NULL, wr_refunded_customer_sk integer ) WITH (orientation = column) DISTRIBUTE BY HASH (wr_item_sk) PARTITION BY RANGE (wr_returned_date_sk) ( PARTITION p2016 VALUES LESS THAN(20161231), PARTITION p2017 VALUES LESS THAN(20171231), PARTITION p2018 VALUES LESS THAN(20181231), PARTITION p2019 VALUES LESS THAN(20191231), PARTITION p2020 VALUES LESS THAN(maxvalue) ); SELECT * FROM dba_tab_partitions where table_name='web_returns_p1'; table_owner | schema | table_name | partition_name | high_value | pretty_high_value | tablespace_name -------------+--------+----------------+----------------+------------+-------------------+-------------------- dbadmin | public | web_returns_p1 | p2016 | 20161231 | 20161231 | DEFAULT TABLESPACE dbadmin | public | web_returns_p1 | p2017 | 20171231 | 20171231 | DEFAULT TABLESPACE dbadmin | public | web_returns_p1 | p2018 | 20181231 | 20181231 | DEFAULT TABLESPACE dbadmin | public | web_returns_p1 | p2019 | 20191231 | 20191231 | DEFAULT TABLESPACE dbadmin | public | web_returns_p1 | p2020 | MAXVALUE | MAXVALUE | DEFAULT TABLESPACE (5 rows)
  • 性能视图快照系统表 设置enable_wdr_snapshot为on后,后台快照线程会创建并维护以“SNAP_+视图名称”方式命名的系统表,用以记录各性能视图的快照结果。需要有系统管理员权限才可以访问下列系统表。 SNAP_PGXC_OS_RUN_INFO SNAP_PGXC_WAIT_EVENTS SNAP_PGXC_INSTR_UNIQUE_SQL SNAP_PGXC_STAT_BAD_BLOCK SNAP_PGXC_STAT_BGWRITER SNAP_PGXC_STAT_REPLICATION SNAP_PGXC_REPLICATION_SLOTS SNAP_PGXC_SETTINGS SNAP_PGXC_INSTANCE_TIME SNAP_GLOBAL_WORKLOAD_TRANSACTION SNAP_PGXC_WORKLOAD_SQL_COUNT SNAP_PGXC_STAT_DATABASE SNAP_GLOBAL_STAT_DATABASE SNAP_PGXC_REDO_STAT SNAP_GLOBAL_REDO_STAT SNAP_PGXC_REL_IOSTAT SNAP_GLOBAL_REL_IOSTAT SNAP_PGXC_TOTAL_MEMORY_DETAIL SNAP_PGXC_NODE_STAT_RESET_TIME SNAP_PGXC_SQL_COUNT SNAP_GLOBAL_TABLE_STAT SNAP_GLOBAL_TABLE_CHANGE_STAT SNAP_GLOBAL_COLUMN_TABLE_IO_STAT SNAP_GLOBAL_ROW_TABLE_IO_STAT 此类系统表除增加snapshot_id字段(bigint类型)外,其余的字段定义与对应视图相同,且各表的分布键均为snapshot_id。 例如,SNAP_PGXC_OS_RUN_INFO,用于存储PGXC_OS_RUN_INFO视图的快照,其字段新增了snapshot_id,其余字段含义均与PGXC_OS_RUN_INFO视图相同。 以上系统表的schema都是dbms_om。 禁止从外部修改或删除以上系统表,否则可能引起视图快照相关功能异常。 父主题: 系统表
  • 应用示例 查询指定表的索引信息。 1 2 3 4 5 SELECT * FROM pg_indexes WHERE tablename = 'mytable'; schemaname | tablename | indexname | tablespace | indexdef ------------+-----------+----------------+------------+------------------------------------------------------------------------------- public | mytable | idx_mytable_id | | CREATE INDEX idx_mytable_id ON mytable USING btree (id) TABLESPACE pg_default (1 row) 查询当前数据库指定模式下所有表的索引信息。 1 2 3 4 5 6 7 8 9 10 SELECT tablename, indexname, indexdef FROM pg_indexes WHERE schemaname = 'public' ORDER BY tablename,indexname; tablename | indexname | indexdef -----------+--------------------+----------------------------------------------------------------------------------------------------- books | books_pkey | CREATE UNIQUE INDEX books_pkey ON books USING btree (id) TABLESPACE pg_default books | idx_books_tags_gin | CREATE INDEX idx_books_tags_gin ON books USING gin (tags) TABLESPACE pg_default customer | c_custkey_key | CREATE UNIQUE INDEX c_custkey_key ON customer USING btree (c_custkey, c_name) TABLESPACE pg_default mytable | idx_mytable_id | CREATE INDEX idx_mytable_id ON mytable USING btree (id) TABLESPACE pg_default test1 | idx_test_id | CREATE INDEX idx_test_id ON test1 USING btree (id) TABLESPACE pg_default v0 | v0_pkey | CREATE UNIQUE INDEX v0_pkey ON v0 USING btree (c) TABLESPACE pg_default (6 rows)
  • PG_STATIO_SYS_INDEXES PG_STATIO_SYS_INDEXES视图显示命名空间中所有系统表索引的IO状态信息。 表1 PG_STATIO_SYS_INDEXES字段 名称 类型 描述 relid oid 此索引表的OID indexrelid oid 索引的OID schemaname name 索引的模式名 relname name 索引的表名 indexrelname name 索引名 idx_blks_read bigint 从索引中读取的磁盘块数 idx_blks_hit bigint 索引缓冲区命中数量 父主题: 系统视图
  • USER_INDEXES USER_INDEXES视图存储关于本模式下的索引信息。 名称 类型 描述 owner character varying(64) 索引的所有者 index_name character varying(64) 索引名 table_name character varying(64) 索引对应的表名 uniqueness text 表示索引是否为唯一索引 generated character varying(1) 表示索引名称是否为系统生成 partitioned character(3) 表示索引是否具有分区表的性质 父主题: 系统视图
  • PG_GET_INVALID_BACKENDS PG_GET_INVALID_BACKENDS视图提供显示CN上连接到当前DN备机的后端线程信息。 表1 PG_GET_INVALID_BACKENDS字段 名称 类型 描述 pid bigint 线程ID node_name text 后端线程中连接的节点信息 dbname name 当前连接的数据库 backend_start timestamp with time zone 后端线程启动的时间 query text 后端线程正在执行的查询语句 父主题: 系统视图
  • security_enable_options 参数说明:该参数决定是否允许安全模式下使用grant_to_public、grant_with_grant_option和foreign_table_options三种功能,可根据实际需求进行配置。该参数仅8.2.0及以上集群版本支持。 参数类型:SIGHUP 取值范围:字符串 grant_to_public,表示允许安全模式下使用grant to public功能。 grant_with_grant_option,表示允许安全模式下使用with grant option功能。 foreign_table_options,表示允许安全模式下使用外表操作功能,不需要显式赋予用户useft权限。 默认值:空 新安装集群场景下,该参数默认值为空,表示安全模式下不允许使用grant_to_public、grant_with_grant_option和foreign_table_options中任何一种功能。 升级场景下,该参数的默认值保持前向兼容,若用户升级前原版本中GUC参数enable_grant_public和enable_grant_option默认为ON,那么升级后security_enable_options参数的默认值为“grant_to_public, grant_with_grant_option”。
  • audit_operation_error 参数说明:该参数决定是否审计GaussDB(DWS)中各类执行失败的操作,由用户根据实际需求进行配置。 参数类型:SIGHUP 取值范围:字符串 none:表示未配置审计项,如果同时配置了其他任何审计项,则none失效。 syn_success:表示同步audit_operation_exec的配置,即配置了某操作执行成功场景的审计,则对应的执行失败场景也记入审计。需注意,配置了syn_success后,仍可以继续配置其他操作执行失败场景的审计;如果audit_operation_exec配置为all,则所有的失败场景均记入审计;如果audit_operation_exec配置为none,则syn_success等同于none,即未配置审计项。 parse:表示对用户输入命令解析失败场景进行审计,包含等待命令超时的失败场景。 login:表示对用户登录失败的场景进行审计。 user_lock:表示对用户锁定和解锁失败的场景进行审计。 violation:表示对用户访问存在越权的场景进行审计。 grant_revoke:表示对用户权限授予和回收失败的场景进行审计。 ddl:表示对DDL操作失败的场景进行审计,因为DDL操作由会根据操作对象进行更细粒度控制,仍然需要结合audit_system_object的配置情况,所以此处配置ddl后,将对audit_system_object指定类型的DDL失败场景进行审计。 select:表示对SELECT操作失败的场景进行审计。 copy:表示对COPY操作失败的场景进行审计。 userfunc:表示对用户自定义函数、存储过程、匿名块操作失败的场景进行审计。 set:表示对set操作失败的场景进行审计。 transaction:表示对事务操作失败的场景进行审计。 vacuum:表示对VACUUM操作失败的场景进行审计。 analyze:表示对ANALYZE操作失败的场景进行审计。 explain:表示对EXPLAIN操作失败的场景进行审计。 specialfunc:表示对特殊函数调用操作失败的场景进行审计,特殊函数包括:pg_terminate_backend、pg_cancel_backend。 insert:表示对INSERT操作失败的场景进行审计。 update:表示对UPDATE操作失败的场景进行审计。 delete:表示对DELETE操作失败的场景进行审计。 merge:表示对MERGE操作失败的场景进行审计。 show:表示对SHOW操作失败的场景进行审计。 checkpoint:表示对CHECKPOINT操作失败的场景进行审计。 barrier:表示对BARRIER操作失败的场景进行审计。 cluster:表示对CLUSTER操作失败的场景进行审计。 comment:表示对COMMENT操作失败的场景进行审计。 cleanconn:表示对CLEANCONNECTION操作失败的场景进行审计。 prepare:表示对PREPARE、EXECUTE、DEALLOCATE操作失败的场景进行审计。 constraints:表示对CONSTRAINTS操作失败的场景进行审计。 cursor:表示对游标操作失败的场景进行审计。 blacklist:表示对黑名单执行失败进行审计。 discard:表示对清理当前会话的全局临时表信息执行失败的场景进行审计。 默认值:login
  • audit_system_object 参数说明:该参数决定是否对GaussDB(DWS)数据库对象的CREATE、DROP、ALTER操作进行审计。GaussDB(DWS)数据库对象包括DATABASE、USER、schema、TABLE等。通过修改该配置参数的值,可以只审计需要的数据库对象的操作。 参数类型:SIGHUP 取值范围:整型,0~4194303 0代表关闭GaussDB(DWS)数据库对象的CREATE、DROP、ALTER操作审计功能。 非0代表只审计GaussDB(DWS)的某类或者某些数据库对象的CREATE、DROP、ALTER操作。 取值说明: 该参数的值由22个二进制位的组合求出,这22个二进制位分别代表GaussDB(DWS)的22类数据库对象。如果对应的二进制位取值为0,表示不审计对应的数据库对象的CREATE、DROP、ALTER操作;取值为1,表示审计对应的数据库对象的CREATE、DROP、ALTER操作。这22个二进制位代表的具体审计内容请参见表1。 默认值:12303 表1 audit_system_object取值含义说明 二进制位 含义 取值说明 第0位 是否审计DATABASE对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第1位 是否审计SCHEMA对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第2位 是否审计USER对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第3位 是否审计TABLE对象的CREATE、DROP、ALTER、TRUNCATE操作。 0表示不审计该对象的CREATE、DROP、ALTER、TRUNCATE操作; 1表示审计该对象的CREATE、DROP、ALTER、TRUNCATE操作。 第4位 是否审计INDEX对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第5位 是否审计VIEW对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第6位 是否审计TRIGGER对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第7位 是否审计PROCEDURE/FUNCTION对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第8位 是否审计TABLESPACE对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第9位 是否审计RESOURCE POOL对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作 第10位 是否审计WORKLOAD对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作 第11位 是否审计SERVER FOR HADOOP对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作 第12位 是否审计DATA SOURCE对象的CRAETE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第13位 是否审计NODE GROUP对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第14位 是否审计ROW LEVEL SECURITY对象的CREATE、DROP、ALTER操作。 0表示不审计该对象的CREATE、DROP、ALTER操作; 1表示审计该对象的CREATE、DROP、ALTER操作。 第15位 是否审计TYPE对象的CREATE、DROP、ALTER操作。 0表示不审计TYPE对象的CREATE、DROP、ALTER操作; 1表示审计TYPE对象的CREATE、DROP、ALTER操作。 第16位 是否审计TEXT SEARCH对象(CONFIGURATION和DICTIONARY)的CREATE、DROP、ALTER操作。 0表示不审计TEXT SEARCH对象的CREATE、DROP、ALTER操作; 1表示审计TEXT SEARCH对象的CREATE、DROP、ALTER操作。 第17位 是否审计DIRECTORY对象的CREATE、DROP、ALTER操作。 0表示不审计DIRECTORY对象的CREATE、DROP、ALTER操作; 1表示审计DIRECTORY对象的CREATE、DROP、ALTER操作。 第18位 是否审计SYNONYM对象的CREATE、DROP、ALTER操作。 0表示不审计SYNONYM对象的CREATE、DROP、ALTER操作; 1表示审计SYNONYM对象的CREATE、DROP、ALTER操作。 第19位 是否审计REDACTION POLICY对象的CREATE、DROP、ALTER操作。 0表示不审计REDACTION POLICY对象的CREATE、DROP、ALTER操作; 1表示审计REDACTION POLICY对象的CREATE、DROP、ALTER操作。 第20位 是否审计SEQUENCE对象的CREATE、DROP、ALTER操作。 0表示不审计SEQUENCE对象的CREATE、DROP、ALTER操作; 1表示审计SEQUENCE对象的CREATE、DROP、ALTER操作。 第21位 是否审计NODE对象的CREATE、DROP、ALTER操作。 0表示不审计NODE对象的CREATE、DROP、ALTER操作; 1表示审计NODE对象的CREATE、DROP、ALTER操作。
  • audit_operation_exec 参数说明:该参数决定是否审计GaussDB(DWS)中各类执行成功的操作,由用户根据实际需求进行配置。 参数类型:SIGHUP 取值范围:字符串 none:表示未配置审计项,如果同时配置了其他任何审计项,则none失效。 all:表示对所有操作成功的场景进行审计。如果同时配置了其他任何审计项,则覆盖所有其他审计项的配置。注意,即使配置为all,也不表示对所有的DDL操作进行审计,仍然需要结合audit_system_object,对DDL操作的对象级别进行控制。 login:表示对用户登录成功的场景进行审计。 logout:表示对用户退出进行审计。 database_process:表示对数据库启动、停止、切换、恢复操作进行审计。 user_lock:表示对用户锁定和解锁成功的场景进行审计。 grant_revoke:表示对用户权限授予和回收成功的场景进行审计。 ddl:表示对DDL操作成功的场景进行审计,因为DDL操作由会根据操作对象进行更细粒度控制,仍然沿用审计开关audit_system_object,即由audit_system_object控制对哪些对象的DDL操作进行审计(此处不配置ddl,只要配置了audit_system_object,审计也会生效)。 select:表示对select操作成功的场景进行审计。 copy:表示对copy操作成功的场景进行审计。 userfunc:表示对用户自定义函数、存储过程、匿名块操作成功的场景进行审计。 set:表示对set操作成功的场景进行审计。 transaction:表示对事务操作成功的场景进行审计。 vacuum:表示对vacuum操作成功的场景进行审计。 analyze:表示对analyze操作成功的场景进行审计。 explain:表示对explain操作成功的场景进行审计。 specialfunc:表示对特殊函数调用操作成功的场景进行审计,特殊函数包括:pg_terminate_backend、pg_cancel_backend。 insert:表示对insert操作成功的场景进行审计。 update:表示对update操作成功的场景进行审计。 delete:表示对delete操作成功的场景进行审计。 merge:表示对merge操作成功的场景进行审计。 show:表示对show操作成功的场景进行审计。 checkpoint:表示对checkpoint操作成功的场景进行审计。 barrier:表示对barrier操作成功的场景进行审计。 cluster:表示对cluster操作成功的场景进行审计。 comment:表示对comment操作成功的场景进行审计。 cleanconn:表示对cleanconnection操作成功的场景进行审计。 prepare:表示对PREPARE、EXECUTE、DEALLOCATE操作成功的场景进行审计。 constraints:表示对constraints操作成功的场景进行审计。 cursor:表示对游标操作成功的场景进行审计。 discard:表示对清理当前会话的全局临时表信息操作成功的场景进行审计。 默认值:login, logout, database_process, user_lock, grant_revoke, set, transaction, cursor 建议transaction审计项保留,否则事务内语句都不会被审计。 建议cursor审计项保留,否则cursor内select语句不会被审计。 需注意Data Studio客户端会自动给select语句封装cursor。 如果自定义函数、存储过程中有fetch语句,则审计fetch语句时,其中common_text字段记录的为其对应的CURSOR内容。
  • shared_buffers 参数说明:设置GaussDB(DWS)使用的共享内存大小。增加此参数的值会使GaussDB(DWS)比系统默认设置需要更多的System V共享内存。 参数类型:POSTMASTER 取值范围:整型,128~INT_MAX,单位为8KB。 改变BLCKSZ的值会改变最小值。 默认值:CN节点为DN节点值的1/2,DN节点取公式计算:POWER(2,ROUND( LOG (2,max_process_memory/18),0))。如果操作系统支持的共享内存小于32MB,则在初始化数据存储区时会自动调整为操作系统支持的最大值。 设置建议: 由于GaussDB(DWS)大部分查询下推,建议DN中此参数设置比CN大。 建议设置shared_buffers值为内存的40%以内。行存列存分开对待。行存设大,列存设小。列存:(单服务器内存/单服务器DN个数)*0.4*0.25。 如果设置较大的shared_buffers需要同时增加checkpoint_segments的值,因为写入大量新增、修改数据需要消耗更多的时间周期。
  • temp_buffers 参数说明:设置每个数据库会话使用的LOCAL临时缓冲区的大小。 参数类型:USERSET 取值范围:整型,800~INT_MAX/2,单位为8KB。 默认值:8MB 在每个会话的第一次使用临时表之前可以改变temp_buffers的值,之后的设置将是无效的。 一个会话将按照temp_buffers给出的限制,根据需要分配临时缓冲区。如果在一个并不需要大量临时缓冲区的会话里设置一个大的数值,其开销只是一个缓冲区描述符的大小。当缓冲区被使用,就会额外消耗8192字节。
  • maintenance_work_mem 参数说明:设置在维护性操作(比如VACUUM、CREATE INDEX、ALTER TABLE ADD FOREIGN KEY等)中可使用的最大的内存。该参数的设置会影响VACUUM、VACUUM FULL、CLUSTER、CREATE INDEX的执行效率。 参数类型:USERSET 取值范围:整型,1024~INT_MAX,单位为KB。 默认值:小规格内存为512MB, 大规格内存为2GB(max_process_memory大于等于30GB为大规格内存,否则为小规格内存)。 设置建议: 建议设置此参数的值等于work_mem,可以改进清理和恢复数据库转储的速度。因为在一个数据库会话里,任意时刻只有一个维护性操作可以执行,并且在执行维护性操作时不会有太多的会话。 当自动清理进程运行时,autovacuum_max_workers倍数的内存将会被分配,所以此时设置maintenance_work_mem的值应该不小于work_mem。 如果进行大数据量的cluster等,可以在session中调大该值。
  • cstore_buffers 参数说明:设置列存和OBS、HDFS外表列存格式(orc、parquet、carbondata)所使用的共享缓冲区的大小。 参数类型:POSTMASTER 取值范围:整型,16384~INT_MAX,单位为KB。 默认值:CN为32MB,DN取公式计算:POWER(2,ROUND(LOG(2,max_process_memory/18),0)) 设置建议: 列存表使用cstore_buffers设置的共享缓冲区,几乎不用shared_buffers。因此在列存表为主的场景中,应减少shared_buffers,增加cstore_buffers。 OBS、HDFS外表使用cstore_buffers设置ORC、Parquet、Carbondata的元数据和数据的缓存,元数据缓存大小为cstore_buffers的1/4,最大不超过2GB,其余缓存空间为列存数据和外表列存格式数据共享使用。
  • work_mem 参数说明:设置内部排序操作和Hash表在开始写入临时磁盘文件之前使用的内存大小。ORDER BY,DISTINCT和merge joins都要用到排序操作。Hash表在散列连接、散列为基础的聚集、散列为基础的IN子查询处理中都要用到。 对于复杂的查询,可能会同时并发运行好几个排序或者散列操作,每个都可以使用此参数所声明的内存量,不足时会使用临时文件。同样,好几个正在运行的会话可能会同时进行排序操作。因此使用的总内存可能是work_mem的好几倍。 参数类型:USERSET 取值范围:整型,64~INT_MAX,单位为KB。 默认值:小规格内存为512MB, 大规格内存为2GB(max_process_memory大于等于30GB为大规格内存,否则为小规格内存)。 设置建议: 依据查询特点和并发来确定,一旦work_mem限定的物理内存不够,算子运算数据将写入临时表空间,带来5-10倍的性能下降,查询响应时间从秒级下降到分钟级。 对于串行无并发的复杂查询场景,平均每个查询有5-10关联操作,建议work_mem=50%内存/10。 对于串行无并发的简单查询场景,平均每个查询有2-5个关联操作,建议work_mem=50%内存/5。 对于并发场景,建议work_mem=串行下的work_mem/物理并发数。
  • query_max_mem 参数说明:设置执行作业所能够使用的最大内存。如果设置的query_max_mem值大于0,在生成执行计划时,优化器会根据该值来设置算子的可用内存。当作业执行时所使用内存超过该值时,将报错退出。 参数类型:USERSET 取值范围:整型,0,或大于32MB的整型,单位为KB。如果设置值为小于32MB,系统会自动将该参数设置为默认值0,此时优化器不会根据该值限制作业的内存使用。 默认值:0
  • max_process_memory_auto_adjust 参数说明:设置是否开启max_process_memory参数的自动调整功能(该参数仅8.2.0及以上集群版本支持)。对于单机器单DN部署形态的集群,开启情况下,CM会在主备切换情况下,动态调整对应DN节点上的max_process_memory参数值。 参数类型:SIGHUP 取值范围:布尔型 默认值:on 设置建议:建议设置为on,对于单机器单DN部署形态的集群,为提高内存资源利用率,max_process_memory参数的初始值在8.2.0集群版本开始进行了提升,但在主备切换场景下,两个主DN节点会同时在一个机器上,如果仍然使用max_process_memory初始值,机器可能出现OOM报错的情况,因此,需要CM介入来动态调整max_process_memory。
  • max_prepared_transactions 参数说明:设置可以同时处于"预备"状态的事务的最大数目。增加此参数的值会使GaussDB(DWS)比系统默认设置需要更多的System V共享内存。 当GaussDB(DWS)部署为主备双机时,在备机上此参数的设置必须要高于或等于主机上的,否则无法在备机上进行查询操作。 参数类型:POSTMASTER 取值范围:整型,0~536870911,其中CN取值为0表示关闭预备事务的特性。 默认值:CN节点为800, DN节点为800 为避免在准备步骤失败,此参数的值不能小于max_connections。
  • agg_max_mem 参数说明:设置执行作业中的Agg算子的聚集列超过5列时,该Agg算子所能够使用的最大内存。当agg_max_mem大于0时生效。(该参数仅8.1.3.200及以上集群版本支持) 参数类型:USERSET 取值范围:整型,0,或大于32MB的整型,单位为KB。如果设置值小于32MB,系统会自动将该参数设置为默认值0,此时不会根据该值限制Agg算子的内存使用。 默认值: 若当前集群为低版本升级到8.1.3及以上版本,继承升级前参数,默认值为INT_MAX。 若当前集群为新装的8.1.3及以上版本,默认值为2GB。
  • psort_work_mem 参数说明:设置列存表在进行局部排序中在开始写入临时磁盘文件之前使用的内存大小。带partial cluster key的表、带索引的表插入,创建表索引,删除表和更新表都会用到。 参数类型:USERSET 多个正在运行的会话可能会同时进行表的局部排序操作,因此使用的总内存可能是psort_work_mem的好几倍。 取值范围:整型,64~INT_MAX,单位为KB。 默认值:512MB
  • max_stack_depth 参数说明:设置GaussDB(DWS)执行堆栈的最大安全深度。需要这个安全界限是因为在服务器里,并非所有程序都检查了堆栈深度,只是在可能递规的过程,比如表达式计算这样的过程里面才进行检查。 参数类型:SUSET 设置原则: 此参数的最佳设置是等于操作系统内核允许的最大值(就是ulimit -s的设置)。 如果设置此参数的值大于实际的内核限制,则一个正在运行的递归函数可能会导致一个独立的服务器进程崩溃。在GaussDB(DWS)能够检测内核限制的操作系统上(SLES上),将自动限制设置为一个不安全的值。 因为并非所有的操作都能够检测,所以建议用户在此设置一个明确的值。 取值范围:整型,100~INT_MAX,单位为KB。 默认值:2MB 默认值2MB,这个值相对比较小,不容易导致系统崩溃。但是可能会因为该值较小,导致无法执行复杂的函数。
  • buffer_ring_ratio 参数说明:设置并行导出时使用环形缓冲区的阈值大小。 参数类型:USERSET 取值范围:整型,1~1000 默认值:250 默认值表示阈值为shared_buffers的250/1000即1/4。 最小为shared_buffers的1/1000。 最大为shared_buffers的大小。 设置建议:导出时出现缓存命中率不符合预期的场景建议在DN中设置此参数。
  • max_process_memory 参数说明:设置一个数据库节点可用的最大物理内存。 参数类型:SIGHUP 取值范围:整型,2*1024*1024~INT_MAX/2,单位为KB。 默认值:非从备DN节点自动适配,一个机器部署多个DN情况下,公式为(物理内存大小)* 0.8 / (1+主DN个数);一个机器部署单个DN情况下,公式为(物理内存大小)* 0.6;当结果不足2GB时,默认取2GB。从备DN默认为12GB。 设置建议: DN上该数值需要根据系统物理内存及单节点部署主DN个数决定的。一个机器部署多个DN情况下,max_process_memory计算公式如下:(物理内存大小 – vm.min_free_kbytes)* 0.8 / (n+主DN个数);一个机器部署单个DN情况下,max_process_memory计算公式如下:(物理内存大小 – vm.min_free_kbytes)* 0.6。该参数目的是尽可能保证系统的可靠性,不会因数据库内存膨胀导致节点OOM。这个公式中提到vm.min_free_kbytes,其含义是预留操作系统内存供内核使用,通常用作操作系统内核中通信收发内存分配,至少为5%内存。即, max_process_memory=物理内存*0.8/(n+主DN个数),其中,当集群规模小于256时, n=1;当集群规模大于256且小于512时, n=2;当集群规模超过512时,n=3。 不推荐设置为最小阈值。 CN上该数值内存可设置与DN数值一样。 RAM :集群规划时分配给集群的最大使用内存。 GaussDB(DWS)从8.2.0版本开始,为了提升内存资源利用率,增大了单机器单DN部署形态的max_process_memory初始值,但当出现集群状态不均衡的情况下,两个主DN节点会同时在一个机器上,如果仍然使用max_process_memory初始值,机器可能出现OOM报错的情况。为此,8.2.0版本开始,max_process_memory参数更改为SIGHUP类型,可以通过手动设置的方式来动态调整;同时,新增max_process_memory_auto_adjust参数,当出现集群状态不均衡的情况下,CM会根据集群状态来动态调整max_process_memory,调整max_process_memory的计算公式为:(物理内存大小 – vm.min_free_kbytes)* 0.8 / 主DN个数。 GaussDB(DWS)从8.2.1版本开始,扩大了max_process_memory动态内存调整的适用范围,由原先仅支持一个机器部署单个DN的集群形态,变更为支持所有部署形态。 max_process_memory_auto_adjust为on时,max_process_memory将会在上限和下限两值之间动态调整;其中,max_process_memory下限值的计算公示为:(物理内存大小)* 0.8 / (1+主DN个数);max_process_memory上限值由GUC参数max_process_memory_balanced设置(max_process_memory_balanced参数设置请联系技术支持工程师)。 集群在均衡模式下,max_process_memory将使用上限值,提高节点整体的内存资源利用率,相对之前版本,内存利用率会提升。 集群在非均衡模式下,max_process_memory将使用下限值,节点整体的内存资源利用率和8.2.1集群之前的版本一致。 升级场景下,该参数为保持前向兼容,系统不会设置max_process_memory_balanced,max_process_memory默认使用升级前设置的值。
  • enable_memory_limit 参数说明:启用逻辑内存管理模块。 参数类型:POSTMASTER 取值范围:布尔型 on表示启用逻辑内存管理模块。 off表示不启用逻辑内存管理模块。 默认值:on 若max_process_memory-max_shared_memory-cstore buffers少于2G,GaussDB(DWS)强制把enable_memory_limit设置为off。 max_shared_memory参数与shared_buffer、max_connections以及max_prepared_transactions参数强相关,如果max_shared_memory过大,可以通过调整这三个参数减小。 动态负载管理功能依赖内存管理功能,当关闭参数enable_memory_limit后,动态负载管理和TopSQL功能会失效。
  • 游标概述 为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。 当游标作为存储过程的返回值时,如果使用JDBC调用该存储过程,返回的游标将不可用。 游标的使用分为显式游标和隐式游标。对于不同的SQL语句,游标的使用情况不同,详细信息请参见表1。 表1 游标使用情况 SQL语句 游标 非查询语句 隐式的 结果是单行的查询语句 隐式的或显式的 结果是多行的查询语句 显式的 父主题: 游标
共100000条