华为云用户手册

  • 高可靠事务处理 GaussDB (DWS)提供集群事务管理功能,此功能是集群HA、集群故障切换的基础,负责保证集群所有节点间事务的ACID特性,保证故障可恢复,以及恢复后满足数据的ACID(Atomicity,Consistency,Isolation,Durability)特性,并负责节点的并发控制。 故障恢复 为了在集群出现故障时尽可能地不中断服务,GaussDB(DWS)提供了高可靠机制。通过保护关键用户程序对外不间断提供服务,把因为硬件、软件和人为造成的故障对业务的影响程度降到最低,以保证业务的持续性。 硬件级高可靠:磁盘Raid、交换机堆叠及网卡bond、不间断电源UPS(Uninterruptible Power Supply)。 软件级高可靠:GaussDB(DWS)集群CN、GTM、DN等全方位HA。 事务管理 支持事务块,用户可以通过start transaction命令显式启动一个事务块。 支持单语句事务,用户不显式启动事务,则单条语句就是一个事务。 分布式事务管理。支持全局事务信息管理,包括gxid、snapshot、timestamp的管理,分布式事务状态管理,gxid溢出的处理。 分布式事务支持ACID特性。 支持分布式死锁预防,保证在出现死锁时自动解锁或者预防死锁。 父主题: 系统概述
  • PG_STAT_REPLICATION PG_STAT_REPLICATION视图用于描述日志同步状态信息,如发起端发送日志位置,收端接收日志位置等。 表1 PG_STAT_REPLICATION字段 名称 类型 描述 pid bigint 线程的PID。 usesysid oid 用户系统ID。 usename name 用户名。 application_name text 程序名称。 client_addr inet 客户端地址。 client_hostname text 客户端名。 client_port integer 客户端端口号。 backend_start timestamp with time zone 程序启动时间。 state text 日志复制的状态(追赶状态,还是一致的流状态)。 sender_sent_location text 发送端发送日志位置。 receiver_write_location text 接收端write日志位置。 receiver_flush_location text 接收端flush日志位置。 receiver_replay_location text 接收端replay日志位置。 sync_priority integer 同步复制的优先级(0表示异步)。 sync_state text 同步状态(异步复制,同步复制,还是潜在同步)。 父主题: 系统视图
  • 接口介绍 高级功能包DBMS_OUTPUT支持的所有接口请参见表1。 表1 DBMS_OUTPUT 接口名称 描述 DBMS_OUTPUT.PUT_LINE 输出指定的文本,文本长度不能超过32767字节。 DBMS_OUTPUT.PUT 将指定的文本输出到指定文本的前面,不添加换行符,文本长度不能超过32767字节。 DBMS_OUTPUT.ENABLE 设置输出缓冲区的大小。若不指定,缓冲区最大只能容纳20000字节,缓冲区最小可设置为2000字节,若设置小于2000字节将按2000字节处理。 DBMS_OUTPUT.PUT_LINE 存储过程PUT_LINE向消息缓冲区写入一行带有行结束符的文本。DBMS_OUTPUT.PUT_LINE函数原型为: 1 2 DBMS_OUTPUT.PUT_LINE ( item IN VARCHAR2); 表2 DBMS_OUTPUT.PUT_LINE接口参数说明 参数 描述 item 写入消息缓冲区的文本。 DBMS_OUTPUT.PUT 存储过程PUT将指定的文本输出到指定文本的前面,不添加换行符。DBMS_OUTPUT.PUT函数原型为: 1 2 DBMS_OUTPUT.PUT ( item IN VARCHAR2); 表3 DBMS_OUTPUT.PUT接口参数说明 参数 描述 item 写入指定文本前的文本。 DBMS_OUTPUT.ENABLE 存储过程ENABLE设置输出缓冲区的大小,如果不指定的话缓冲区最大只能容纳20000字节。DBMS_OUTPUT.ENABLE函数原型为: 1 2 DBMS_OUTPUT.ENABLE ( buf IN INTEGER); 表4 DBMS_OUTPUT.ENABLE接口参数说明 参数 描述 buf 设置输出缓冲区的大小。
  • PG_COMM_QUERY_SPEED PG_COMM_QUERY_SPEED视图展示单个节点上所有query对应的流量信息。 表1 PG_COMM_QUERY_SPEED字段 名称 类型 描述 node_name text 节点名称。 query_id bigint 通信流对应的debug_query_id编号。 rxkB/s bigint 查询对应的通信流接收速率,单位Byte/s。 txkB/s bigint 查询对应的通信流发送速率,单位Byte/s。 rxkB bigint 查询对应的通信流接收数据总量,单位Byte。 txkB bigint 查询对应的通信流发送数据总量,单位Byte。 rxpck/s bigint 查询对应的通信包接收速率,单位packages/s。 txpck/s bigint 查询对应的通信包发送速率,单位packages/s。 rxpck bigint 查询对应的通信包接收总量,单位packages。 txpck bigint 查询对应的通信包发送总量,单位packages。 父主题: 系统视图
  • PG_STAT_USER_FUNCTIONS PG_STAT_USER_FUNCTIONS视图显示命名空间中用户自定义函数(函数语言为非内部语言)的状态信息。 表1 PG_STAT_USER_FUNCTIONS字段 名称 类型 描述 funcid oid 函数OID。 schemaname name 模式名。 funcname name 函数名。 calls bigint 函数被调用的次数。 total_time double precision 函数的总执行时长。 self_time double precision 当前线程调用函数的总的时长。 父主题: 系统视图
  • PG_TS_CONFIG_MAP PG_TS_CONFIG_MAP系统表包含为每个文本搜索配置的解析器的每种输出符号类型,显示有哪些文本搜索字典可供查询以及以哪种顺序搜索。 表1 PG_TS_CONFIG_MAP字段 名字 类型 引用 描述 mapcfg oid PG_TS_CONFIG.oid 拥有此映射记录的PG_TS_CONFIG的OID。 maptokentype integer - 由配置的解析器发出的一个符号类型。 mapseqno integer - 查询该项的顺序。 mapdict oid PG_TS_DICT.oid 查询的文本搜索字典的OID。 父主题: 系统表
  • PG_STATIO_ALL_TABLES PG_STATIO_ALL_TABLES视图显示当前数据库中所有表的I/O的统计信息(包括TOAST表)。 表1 PG_STATIO_ALL_TABLES字段 名称 类型 描述 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表索引命中缓冲区数(如果存在)。 父主题: 系统视图
  • USER_PART_INDEXES USER_PART_INDEXES视图存储当前用户下分区表索引的信息。 名称 类型 描述 index_owner character varying(64) 分区表索引的所有者名称。 schema character varying(64) 分区表索引的模式。 index_name character varying(64) 分区表索引的名称。 table_name character varying(64) 分区表索引所属的分区表名称。 partitioning_type text 分区表的分区策略。 说明: 当前分区表策略仅支持范围分区(Range Partitioning)和列表分区(List Partitioning)。 partition_count bigint 分区表索引的索引分区的个数。 def_tablespace_name name 分区表索引的表空间名称。 partitioning_key_count integer 分区表的分区键个数。 父主题: 系统视图
  • TABLES_SNAP_TIMESTAMP TABLES_SNAP_TIMESTAMP系统表记录每次对每个性能视图创建快照的起止时间,设置enable_wdr_snapshot为on后,该表由后台快照线程创建并维护。需要有系统管理员权限才可以访问此系统表。 表1 dbms_om.tables_snap_timestamp字段 名称 类型 描述 snapshot_id name 快照ID(此字段为主键和分布键)。 db_name text 视图所属数据库名称。 tablename text 视图名称。 start_ts timestamp with time zone 快照开始时间。 end_ts timestamp with time zone 快照结束时间。 此系统表的schema是dbms_om。 禁止从外部修改或删除此表,否则可能引起视图快照相关功能异常。 父主题: 系统表
  • GS_TABLE_STAT GS_TABLE_STAT视图显示当前数据库中所有表格(不包括外表)在当前节点上的统计信息。除live_tuples和dead_tuples为当前实时值外,其余各统计字段为实例启动以来的累计值。 表1 GS_TABLE_STAT字段 名称 类型 描述 schemaname name 表的命名空间。 relname name 表的名称。 seq_scan bigint 顺序扫描的次数。如果是分区表,显示各个分区扫描次数的和。 seq_tuple_read bigint 顺序扫描的行数。 index_scan bigint 索引扫描的次数。 index_tuple_read bigint 索引扫描的行数。 tuple_inserted bigint 插入的行数。 tuple_updated bigint 更新的行数。 tuple_deleted bigint 删除的行数。 tuple_hot_updated bigint 热更新的行数。 live_tuples bigint 活元组数量。CN上查询该视图,analyze后显示该表格总的活元组数量,未analyze的情况下显示0。只适用行存表。 dead_tuples bigint 死元组数量。CN上查询该视图,analyze后显示该表格总的死元组数量,未analyze的情况下显示0。只适用行存表。 父主题: 系统视图
  • GS_OBSSCANINFO GS_OBSSCANINFO系统表定义了在云上加速场景中,使用加速集群时扫描OBS数据的运行时信息,每条记录对应一个query中单个OBS外表的运行时信息。 表1 GS_OBSSCANINFO字段 名字 类型 引用 描述 query_id bigint - 查询标识。 user_id text - 执行该查询的数据库用户。 table_name text - OBS外表的表名。 file_type text - 底层数据保存的文件格式。 time_stamp time_stam - 扫描操作开始的时间。 actual_time double - 扫描操作执行时间,单位为秒。 file_scanned bigint - 扫描的文件数量。 data_size double - 扫描的数据量,单位为字节。 billing_info text - 保留字段。 父主题: 系统表
  • PG_NODE_ENV PG_NODE_ENV视图提供获取当前节点的环境变量信息。 表1 PG_NODE_ENV字段 名称 类型 描述 node_name text 当前节点名称。 host text 当前节点的主机名称。 process integer 当前节点的进程号。 port integer 当前节点的端口号。 installpath text 当前节点的安装目录。 datapath text 当前节点的数据目录。 log_directory text 当前节点的日志目录。 父主题: 系统视图
  • PG_AM PG_AM系统表存储有关索引访问方法的信息。系统支持的每种索引访问方法都有一行。 表1 PG_AM字段 名字 类型 引用 描述 oid oid - 行标识符(隐藏属性,必须明确选择才会显示)。 amname name - 访问方法的名称。 amstrategies smallint - 访问方法的操作符策略个数,或者如果访问方法没有一个固定的操作符策略集则为0。 amsupport smallint - 访问方法的支持过程个数。 amcanorder boolean - 这种访问方式是否支持通过索引字段值的命令扫描排序。 amcanorderbyop boolean - 这种访问方式是否支持通过索引字段上操作符的结果的命令扫描排序。 amcanbackward boolean - 访问方式是否支持向后扫描。 amcanunique boolean - 访问方式是否支持唯一索引。 amcanmulticol boolean - 访问方式是否支持多字段索引。 amoptionalkey boolean - 访问方式是否支持第一个索引字段上没有任何约束的扫描。 amsearcharray boolean - 访问方式是否支持ScalarArrayOpExpr搜索。 amsearchnulls boolean - 访问方式是否支持IS NULL/NOT NULL搜索。 amstorage boolean - 允许索引存储的数据类型与列的数据类型是否不同。 amclusterable boolean - 是否允许在一个这种类型的索引上集群。 ampredlocks boolean - 是否允许这种类型的一个索引管理细粒度的谓词锁定。 amkeytype oid PG_TYPE.oid 存储在索引里数据的类型,如果不是一个固定的类型则为0。 aminsert regproc PG_PROC.oid “插入此行”函数。 ambeginscan regproc PG_PROC.oid “准备索引扫描” 函数。 amgettuple regproc PG_PROC.oid “下一个有效行”函数,如果没有则为0。 amgetbitmap regproc PG_PROC.oid “抓取所有的有效行” 函数,如果没有则为0。 amrescan regproc PG_PROC.oid “(重新)开始索引扫描”函数。 amendscan regproc PG_PROC.oid “索引扫描后清理” 函数。 ammarkpos regproc PG_PROC.oid “标记当前扫描位置”函数。 amrestrpos regproc PG_PROC.oid “恢复已标记的扫描位置”函数。 ammerge regproc PG_PROC.oid “归并多个索引对象”函数。 ambuild regproc PG_PROC.oid “建立新索引”函数。 ambuildempty regproc PG_PROC.oid “建立空索引”函数。 ambulkdelete regproc PG_PROC.oid 批量删除函数。 amvacuumcleanup regproc PG_PROC.oid VACUUM后的清理函数。 amcanreturn regproc PG_PROC.oid 检查是否索引支持唯一索引扫描的函数,如果没有则为0。 amcostestimate regproc PG_PROC.oid 估计一个索引扫描开销的函数。 amoptions regproc PG_PROC.oid 用于分析和验证索引的reloptions函数。 父主题: 系统表
  • USER_TABLES USER_TABLES视图存储关于当前模式下的表信息。 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表名。 tablespace_name character varying(64) 表所在的表空间的名称。 status character varying(8) 当前记录是否有效。 temporary character(1) 是否为临时表。 Y表示是临时表。 N表示不是临时表。 dropped character varying 当前记录是否已删除。 YES表示已删除。 NO表示未删除。 num_rows numeric 表的估计行数。 父主题: 系统视图
  • GLOBAL_TABLE_STAT GLOBAL_TABLE_STAT视图显示当前数据库中所有表格(不包括外表)的统计信息。除live_tuples和dead_tuples为当前实时值外,其余各统计字段为实例启动以来的累计值。 表1 GLOBAL_TABLE_STAT字段 名称 类型 描述 schemaname name 表的命名空间。 relname name 表的名称。 distribute_mode char 表的分布方式,与系统表pgxc_class中的pclocatortype字段含义相同。 seq_scan bigint 顺序扫描的次数。如果是分区表,显示各个分区扫描次数的和。 seq_tuple_read bigint 顺序扫描的行数。 index_scan bigint 索引扫描的次数。 index_tuple_read bigint 索引扫描的行数。 tuple_inserted bigint 插入的行数。如果是复制表,显示各节点最大值;如果是分布表,显示各节点之和。 tuple_updated bigint 更新的行数。如果是复制表,显示各节点最大值;如果是分布表,显示各节点之和。 tuple_deleted bigint 删除的行数。如果是复制表,显示各节点最大值;如果是分布表,显示各节点之和。 tuple_hot_updated bigint 热更新的行数。如果是复制表,显示各节点最大值;如果是分布表,显示各节点之和。 live_tuples bigint 活元组数量。显示各节点最大值;如果是分布表,显示各节点之和。 只适用行存表。 dead_tuples bigint 死元组数量。显示各节点最大值;如果是分布表,显示各节点之和。 只适用行存表。 父主题: 系统视图
  • %TYPE属性 %TYPE主要用于声明某个与其他变量类型(例如,表中某列的类型)相同的变量。假如想定义一个my_name变量,它的变量类型与employee的firstname类型相同,可使用如下定义: my_name employee.firstname%TYPE 这样定义可以带来两个好处,首先,不用预先知道employee 表的firstname类型具体是什么。其次,即使之后firstname类型有了变化,也不需要再次修改my_name的类型。
  • 变量声明 变量声明语法请参见图1。 图1 declare_variable::= 对以上语法格式的解释如下: variable_name,为变量名。 type,为变量类型。 value,是该变量的初始值(如果不给定初始值,则初始为NULL)。value也可以是表达式。 示例 1 2 3 4 5 6 DECLARE emp_id INTEGER := 7788; --定义变量并赋值 BEGIN emp_id := 5*7784; --变量赋值 END; /
  • 变量作用域 变量的作用域表示变量在代码块中的可访问性和可用性。只有在它的作用域内,变量才有效。 变量必须在declare部分声明,即必须建立BEGIN-END块。块结构也强制变量必须先声明后使用,即变量在过程内有不同作用域、不同的生存期。 同一变量可以在不同的作用域内定义多次,内层的定义会覆盖外层的定义。 在外部块定义的变量,可以在嵌套块中使用。但外部块不能访问嵌套块中的变量。 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 DECLARE emp_id INTEGER :=7788; --定义变量并赋值 outer_var INTEGER :=6688; --定义变量并赋值 BEGIN DECLARE emp_id INTEGER :=7799; --定义变量并赋值 inner_var INTEGER :=6688; --定义变量并赋值 BEGIN dbms_output.put_line('inner emp_id ='||emp_id); --显示值为7799 dbms_output.put_line('outer_var ='||outer_var); --引用外部块的变量 END; dbms_output.put_line('outer emp_id ='||emp_id); --显示值为7788 END; /
  • SHOW_ALL_TSC_INFO 查询所有节点TSC信息。该视图仅8.2.1及以上集群版本支持。 表1 返回值字段 名称 类型 描述 node_name text 节点名称。 tsc_mult bigint TSC换算乘数。 tsc_shift bigint TSC换算位移数。 tsc_frequency float8 TSC频率。 tsc_use_freqency boolean 是否使用TSC频率进行时间换算。 tsc_ready boolean 是否可以使用TSC频率进行时间换算。 tsc_scalar_error_info text 获取TSC换算信息的错误信息。 tsc_freq_error_info text 获取TSC频率的错误信息。 父主题: 系统视图
  • ODBC接口参考 ODBC接口是一套提供给用户的API函数,本节将对部分常用接口做具体描述,若涉及其他接口可参考msdn(网址:https://msdn.microsoft.com/en-us/library/windows/desktop/ms714177(v=vs.85).aspx)中ODBC Programmer's Reference项的相关内容。 SQLAllocEnv SQLAllocConnect SQLAllocHandle SQLAllocStmt SQLBindCol SQLBindParameter SQLColAttribute SQLConnect SQLDisconnect SQLExecDirect SQLExecute SQLFetch SQLFreeStmt SQLFreeConnect SQLFreeHandle SQLFreeEnv SQLPrepare SQLGetData SQLGetDiagRec SQLSetConnectAttr SQLSetEnvAttr SQLSetStmtAttr 父主题: 基于ODBC开发
  • PG_STAT_ACTIVITY PG_STAT_ACTIVITY视图显示和当前用户查询相关的信息。若有管理员权限或预置角色权限可以显示和所有用户查询相关的信息。 表1 PG_STAT_ACTIVITY字段 名称 类型 描述 datid oid 用户会话在后端连接到的数据库OID。 datname name 用户会话在后端连接到的数据库名称。 pid bigint 后端线程ID。 lwtid integer 轻量级线程ID。 usesysid oid 登录该后端的用户OID。 usename name 登录该后端的用户名。 application_name text 连接到该后端的应用名。 client_addr inet 连接到该后端的客户端的IP地址。 如果此字段是null,则表示通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。 client_hostname text 客户端的主机名,此字段是通过client_addr的反向DNS查找得到。此字段只有在启动log_hostname且使用IP连接时才非空。 client_port integer 客户端用于与后端通讯的TCP端口号,如果使用Unix套接字,则为-1。 backend_start timestamp with time zone 后端进程启动时间,即客户端连接服务器的时间。 xact_start timestamp with time zone 当前事务的启动时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。 query_start timestamp with time zone 开始当前活跃查询的时间, 如果state的值不是active,则这个值是上一个查询的开始时间。 state_change timestamp with time zone 状态最后一次改变的时间。 waiting boolean 如果后端当前正等待锁或者等待节点则为t,否则为f。 enqueue text 语句当前排队状态。可能值是: waiting in global queue:表示语句在全局并发队列排队中,主要包含并发数超过单CN配置的max_active_statements。 waiting in respool queue:表示语句在资源池排队中,简单作业并发受限,主要是简单作业并发超过快车道并发上限max_dop。 waiting in ccn queue:表示作业在CCN排队中,包含全局内存排队和慢车道内存和并发排队,包含以下场景: 全局可用内存超过上限,进行全局内存队列排队。 资源池慢车道并发上限,即资源池并发超过active_statements上限。 资源池慢车道内存上限,即资源池并发作业估算内存超过mem_percent计算的上限。 空或no waiting queue:表示语句正在运行。 state text 后端当前总体状态。可能值是: active:后台正在执行查询。 idle:后台正在等待新的客户端命令。 idle in transaction:后端在事务中,但事务中没有语句在执行。 idle in transaction (aborted):后端在事务中,但事务中有语句执行失败。 fastpath function call:后端正在执行一个fast-path函数。 disabled:如果后端禁用track_activities,则报告此状态。 说明: 普通用户只能查看到自己账户所对应的会话状态。即其他账户的state信息为空。 resource_pool name 用户使用的资源池。 stmt_type text 语句类型。 query_id bigint 查询语句的ID。 query text 此后端的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。其他情况表示上一个查询。 connection_info text json格式字符串,记录当前连接数据库的驱动类型、驱动版本号、当前驱动的部署路径、进程属主用户等信息(参见connection_info)。 父主题: 系统视图
  • max_connections 参数说明:允许和数据库连接的最大并发连接数。此参数会影响集群的并发能力。 参数类型:POSTMASTER 取值范围:整型。CN最小值为100,最大值为16384;DN最小值为100, 最大值为262143,由于集群内部存在着各种连接,设置时通常达不到最大值,若日志中出现'invalid value for parameter "max_connections"',需要调小DN的max_connections值。 默认值:CN节点为800,DN节点为5000,如果该默认值超过内核支持的最大值(在执行gs_initdb的时候判断),系统会提示错误。 设置建议: CN中此参数建议保持默认值。DN中此参数按照如下公式计算: dop_limit * 20 * 6 + 24,公式中的dop_limit为集群中每个DN对应的CPU数,计算公式为:dop_limit = 单机器的CPU逻辑核数 / 单机器的DN数。 最小值5000。 增大这个参数可能导致GaussDB(DWS)要求更多的SystemV共享内存或者信号量,可能超过操作系统缺省配置的最大值。这种情况下,请酌情对数值加以调整。 max_connections取值的设置受max_prepared_transactions的影响,在设置max_connections之前,应确保max_prepared_transactions的值大于或等于max_connections的值,这样可确保每个会话都有一个等待中的预备事务。
  • connection_info 参数说明:连接数据库的驱动类型、驱动版本号、当前驱动的部署路径和进程属主用户。(运维类参数,不建议用户设置) 参数类型:USERSET 取值范围:字符串 默认值:空字符串 空字符串,表示当前连接数据库的驱动不支持自动设置connection_info参数或应用程序未设置。 驱动连接数据库的时候自行拼接的connection_info参数格式如下: 1 {"driver_name":"ODBC","driver_version": "(GaussDB x.x.x build 39137c2d) compiled at 2022-09-23 15:43:11 commit 3629 last mr 5138 debug","driver_path":"/usr/local/lib/psqlodbcw.so","os_user":"omm"} ODBC,JDBC,gsql连接默认显示driver_name和driver_version,driver_path,os_user,其他接口连接默认显示driver_name和driver_version,driver_path和os_user的显示由用户控制。
  • PG_STAT_BGWRITER PG_STAT_BGWRITER视图显示关于后端写进程活动的统计信息。 表1 PG_STAT_BGWRITER字段 名称 类型 描述 checkpoints_timed bigint 定期执行的检查点数量。 checkpoints_req bigint 请求执行的检查点数量。 checkpoint_write_time double precision 检查点期间将文件写入磁盘花费的时间,以毫秒为单位。 checkpoint_sync_time double precision 检查点期间数据同步到磁盘花费的时间,以毫秒为单位。 buffers_checkpoint bigint 检查点期间写入缓冲区的数量。 buffers_clean bigint 后端写进程写的缓冲区数量。 maxwritten_clean bigint 由于写入缓冲区太多,后端写进程停止清理扫描的次数。 buffers_backend bigint 后端直接写入的缓冲区数量。 buffers_backend_fsync bigint 后端需要fsync的次数。 buffers_alloc bigint 分配的缓冲区数量。 stats_reset timestamp with time zone 统计重置的时间。 父主题: 系统视图
  • partition_lock_upgrade_timeout 参数说明:分区上的锁级别由允许读的ExclusiveLock升级到读写阻塞的AccessExclusiveLock时,会进行尝试性的锁升级,partition_lock_upgrade_timeout指示了尝试锁升级的超时时间。 在分区表上进行MERGE PARTITION和CLUSTER PARTITION操作时,都利用了临时表进行数据重排和文件交换,为了最大程度提高分区上的操作并发度,在数据重排阶段给相关分区加锁ExclusiveLock,在文件交换阶段加锁AccessExclusiveLock。 常规加锁方式是等待加锁,直到加锁成功,或者等待时间超过lockwait_timeout发生超时失败。 在分区表上进行MERGE PARTITION或CLUSTER PARTITION操作时,进入文件交换阶段需要申请加锁AccessExclusiveLock,加锁方式是尝试性加锁,加锁成功了则立即返回,不成功则等待50ms后继续下次尝试,加锁超时时间使用会话级设置参数partition_lock_upgrade_timeout。 特殊值:若partition_lock_upgrade_timeout取值-1,表示无限等待,即不停的尝试锁升级,直到加锁成功。 参数类型:USERSET 取值范围:整型,-1 ~ 3000,单位为秒(s)。 默认值:1800
  • enable_global_deadlock_detector 参数说明:控制分布式死锁检测功能模块是否开启,该参数仅8.3.0及以上集群版本支持。 参数类型:SIGHUP 取值范围:布尔型 on表示开启。 off表示关闭。 默认值:off 开启分布式死锁检测功能模块后若出现分布式死锁场景,预期会在一定时间内检测到后并做自动解锁,挑选最新事务进行cancel,用户会收到报错"cancelled by global deadlock detector"。
  • max_pred_locks_per_transaction 参数说明:控制每个事务允许断定锁的最大数量,是一个平均值。 共享的断定锁表的大小是以假设任意时刻最多只有max_pred_locks_per_transaction*(max_connections+max_prepared_transactions) 个独立的对象需要被锁住为基础进行计算的。不超过设定数量的多个对象可以在任一时刻同时被锁定。当在一个事务里面修改很多不同的表时,可能需要提高这个默认数值。只能在服务器启动的时候设置。 增大这个参数可能导致GaussDB(DWS)请求更多的System V共享内存,有可能超过操作系统的缺省配置。 参数类型:POSTMASTER 取值范围:整型,10 ~ INT_MAX 默认值:64
  • ddl_lock_timeout 参数说明:通过该参数单独指定阻塞DDL语句锁等待的时间,当申请的锁等待时间超过设定值时,系统会报错。该参数仅8.1.3.200及以上版本支持。 参数类型:SUSET 取值范围:整型,0 ~ INT_MAX,单位为毫秒(ms)。 如果该参数的值等于0,表示该参数不生效。 如果该参数的值大于0,DDL锁阻塞时间为该参数的值,其它锁等待时间为lockwait_timeout参数值。 默认值:0 该参数优先级高于lockwait_timeout,只针对AccessExclusiveLock生效。
  • deadlock_timeout 参数说明:设置死锁超时检测时间,以毫秒为单位。当申请的锁超过设定值时,系统会检查是否产生了死锁。 死锁的检查代价是比较高的,服务器不会在每次等待锁的时候都运行这个过程。在系统运行过程中死锁是不经常出现的,因此在检查死锁前只需等待一个相对较短的时间。增加这个值就减少了无用的死锁检查浪费的时间,但是会减慢真正的死锁错误报告的速度。在一个负载过重的服务器上,用户可能需要增大它。这个值的设置应该超过事务持续时间,这样就可以减少在锁释放之前就开始死锁检查的问题。 设置log_lock_waits时,这个选项也决定了在一个日志消息发出关于锁等待以前要等待的时间。当需要调查锁延迟时,请设置比正常deadlock_timeout更小的值。 参数类型:SUSET 取值范围:整型,1~2147483647,单位为毫秒(ms)。 默认值:1s
  • max_locks_per_transaction 参数说明:控制每个事务能够得到的平均的对象锁的数量。 共享的锁表的大小是以假设任意时刻最多只有max_locks_per_transaction*(max_connections+max_prepared_transactions) 个独立的对象需要被锁住为基础进行计算的。不超过设定数量的多个对象可以在任一时刻同时被锁定。当在一个事务里面修改很多不同的表时,可能需要提高这个默认数值。只能在数据库启动的时候设置。 增大这个参数可能导致GaussDB(DWS)请求更多的System V共享内存,有可能超过操作系统的缺省配置。 当运行备机时,请将此参数设置不小于主机上的值,否则,在备机上查询操作不会被允许。 参数类型:POSTMASTER 取值范围:整型,10 ~ INT_MAX 默认值:256
共100000条