云服务器内容精选

  • GS_ LOG ICAL_NAMESPACE GS_LOGICAL_NAMESPACE系统表存储名称空间相关的信息。 表1 GS_LOGICAL_NAMESPACE字段 字段名称 字段类型 说明 nspid oid 命名空间的OID。 nspname name 命名空间名称。 nspowner oid 命名空间所有者的OID。 nsptimeline bigint 命名空间的时间线标识符。 csnmin bigint 插入元组时的 CS N(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 dbnode oid 数据库OID。 父主题: 逻辑解码
  • GS_LOGICAL_DICTIONARY GS_LOGICAL_DICTIONARY系统表记录逻辑解码数据字典信息表。 表1 GS_LOGICAL_DICTIONARY字段 字段名称 字段类型 说明 status integer 表示逻辑解码数据字典是否有效可用。 restart_lsn bigint unsigned 预留字段。 restart_lsn_time timestamp with time zone 基线化完成时间。 dictionary_csn_min bigint unsigned 使用的最小版本号。 last_clean_time timestamp with time zone 数据字典表最后一次清理的时间。 last_clean_result bool 数据字典表最后一次清理的结果。 originid integer 元组的来源标识符。 last_flush_csn bigint unsigned 上一次元信息修改的CSN。 父主题: 逻辑解码
  • GS_LOGICAL_DATABASE GS_LOGICAL_DATABASE系统表存储关于可用数据库的信息。 表1 GS_LOGICAL_DATABASE字段 字段名称 字段类型 说明 datname name 数据库名称。 datid oid 数据库OID。 csnmin bigint 插入元组时的 CSN(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 datdba oid 数据库所有人,通常为其创建者。 encoding integer 数据库的字符编码方式。 datcollate name 数据库使用的排序顺序。 datctype name 数据库使用的字符分类。 dattablespace oid 数据库的缺省表空间。 datcompatibility name 数据库兼容模式,当前支持五种兼容模式:A、B、C、M、PG,分别表示兼容O、MY、TD、M-Compatibility和POSTGRES。 dattimezone name 数据库时区信息,默认为PRC时区。 父主题: 逻辑解码
  • GS_LOGICAL_CLASS GS_LOGICAL_CLASS系统表记录逻辑解码需要使用的数据库对象信息及其之间的关系。 表1 GS_LOGICAL_CLASS字段 字段名称 字段类型 说明 relname name 表名。 relnamespace oid 命名空间OID。 relpersistence "char" 表的持久性(例如,'p' 表示永久表)。 relkind "char" 表的类型(例如,'r' 表示关系)。 relnatts smallint 表中的列数。 relhaspkey bool 表是否有(或曾经有过)主键索引。 relcmprs tinyint 表的行的压缩属性。 relreplident "char" Replica identity复制方式。 spacenode oid 表空间OID。 dbnode oid 数据库OID。 relnode oid 表对应的物理存储文件的标识符。 createtime timestamp with time zone 插入元组的时间戳。 csnmin bigint 插入元组时的 CSN(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 originid integer 元组的来源标识符。 relid oid 关系标识符(表OID)。 relowner oid 表所有者的标识符。 reltoastrelid oid TOAST 表OID(如果存在)。 relhasoids boolean 指示表是否具有 OID(对象标识符)列。 relam oid 指示表使用的索引方法的标识符。 reloptions text[] 保存表的附加选项,以文本格式存储。 relbucket oid 指示表所属的哈希分区桶的标识符。 父主题: 逻辑解码
  • GS_LOGICAL_INDEX GS_LOGICAL_INDEX系统表存储了索引的部分信息,其他的信息存储在GS_LOGICAL_CLASS系统表中。 表1 GS_LOGICAL_INDEX字段 字段名称 字段类型 说明 indexrelid Oid 索引的OID。 indrelid Oid 它所引用的RELATION OID。 indnatts smallint 索引中的总列数。 indisunique boolean 是否是唯一索引。 indisprimary boolean 这个索引是否为主键。 csnmin bigint 插入元组时的 CSN(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 dbnode oid 数据库OID。 indimmediate boolean 是否立即执行唯一性约束。 indisvalid boolean 此索引是否可用于查询。 indisready boolean 此索引是否准备好接受插入。 indisusable boolean 此索引是否可用于插入和选择。 indkey int2vector 索引列的列编号。 indcollation oidvector 排序标识符。 indpred pg_node_tree 如果是部分索引,则为谓词的表达式树;否则为 NULL。 indisreplident boolean 索引是否被标识为复制标识索引。 父主题: 逻辑解码
  • GS_SQLAPPLY_SKIP GS_SQLAPPLY_SKIP系统表存储逻辑回放可跳过执行的规则,分布式场景暂无对应功能,仅作预留。 表1 GS_SQLAPPLY_SKIP字段 字段名称 字段类型 说明 createtime timestamp 新建时间戳。 originid int4 复制源标识。 skiptype int4 SKIP类型: 1:SKIP OBJ 2:SKIP TXN 3:SKIP ERR dumpcontext char 转储事务到文件: 'a':转储整个事务。 'n':不转储。 's':仅转储事务跳过的变更。 param1 text 参考表2表3中的字段说明。 param2 text 参考表2表3中的字段说明。 param3 text 参考表2中的字段说明。 param4 text 参考表2中的字段说明。 param5 text 预留字段。 表2 SKIP OBJ或SKIP ERR时,param1-4的字段 字段名称 字段类型 说明 db_name text 数据库名称。 schema_name text 模式名称。 object_name text 对象名称。 stmt_type text SQL语句类型。 表3 SKIP TXN时,param1-2字段 字段名称 字段类型 说明 csn text 事务序列号。 xid text 事务ID。 父主题: 逻辑解码
  • GS_LOGICAL_CLASS GS_LOGICAL_CLASS系统表记录逻辑解码需要使用的数据库对象信息及其之间的关系。 表1 GS_LOGICAL_CLASS字段 字段名称 字段类型 说明 relname name 表名。 relnamespace oid 命名空间OID。 relpersistence "char" 表的持久性(例如,'p' 表示永久表)。 relkind "char" 表的类型(例如,'r' 表示关系)。 relnatts smallint 表中的列数。 relhaspkey bool 表是否有(或曾经有过)主键索引。 relcmprs tinyint 表的行的压缩属性。 relreplident "char" Replica identity复制方式。 spacenode oid 表空间OID。 dbnode oid 数据库OID。 relnode oid 表对应的物理存储文件的标识符。 createtime timestamp with time zone 插入元组的时间戳。 csnmin bigint 插入元组时的 CSN(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 originid integer 元组的来源标识符。 relid oid 关系标识符(表OID)。 relowner oid 表所有者的标识符。 reltoastrelid oid TOAST 表OID(如果存在)。 relhasoids boolean 指示表是否具有 OID(对象标识符)列。 relam oid 指示表使用的索引方法的标识符。 reloptions text[] 保存表的附加选项,以文本格式存储。 relbucket oid 指示表所属的哈希分区桶的标识符。 父主题: 逻辑解码
  • GS_LOGICAL_INDEX GS_LOGICAL_INDEX系统表存储了索引的部分信息,其他的信息存储在GS_LOGICAL_CLASS系统表中。 表1 GS_LOGICAL_INDEX字段 字段名称 字段类型 说明 indexrelid Oid 索引的OID。 indrelid Oid 它所引用的RELATION OID。 indnatts smallint 索引中的总列数。 indisunique boolean 是否是唯一索引。 indisprimary boolean 这个索引是否为主键。 csnmin bigint 插入元组时的 CSN(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 dbnode oid 数据库OID。 indimmediate boolean 是否立即执行唯一性约束。 indisvalid boolean 此索引是否可用于查询。 indisready boolean 此索引是否准备好接受插入。 indisusable boolean 此索引是否可用于插入和选择。 indkey int2vector 索引列的列编号。 indcollation oidvector 排序标识符。 indpred pg_node_tree 如果是部分索引,则为谓词的表达式树;否则为 NULL。 indisreplident boolean 索引是否被标识为复制标识索引。 父主题: 逻辑解码
  • GS_LOGICAL_ATTRDEF GS_LOGICAL_ATTRDEF系统表记录逻辑解码需要使用的存储列的默认值。 表1 GS_LOGICAL_ATTRDEF字段 字段名称 字段类型 说明 adid oid 属性描述符的标识符。 adrelid oid 所属表的OID。 adnum smallint 属性号。 csnmin bigint 插入元组时的CSN(提交序列号)。 csnmax bigint 更新或删除元组时的CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 dbnode oid 数据库OID。 adbin pg_node_tree 默认值表达式。 adgencol "char" 是否为GENERATED列。 父主题: 逻辑解码
  • GS_LOGICAL_TYPE GS_LOGICAL_TYPE系统表存储数据类型的相关信息。 表1 GS_LOGICAL_TYPE字段 字段名称 字段类型 说明 typname name 类型名称。 typnamespace oid 包含此类型的命名空间的OID。 typlen smallint 该类型值所使用的字节数。 typbyval boolean 该类型的值是按值还是按引用传递。 typtype "char" 表示表的行类型。 typisdefined boolean 表示类型是否被完全定义。 typreceive regproc 二进制格式的接收函数。 typsend regproc 发送函数。 typmodin regproc 用于可选类型修饰符的输入函数。 typmodout regproc 输出函数。 typid oid 类型的OID。 dbnode oid 数据库OID。 originid integer 元组的来源标识符。 createtime timestamp with time zone 插入元组的时间戳。 csnmin bigint 插入元组时的 CSN(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 父主题: 逻辑解码
  • GS_LOGICAL_DATABASE GS_LOGICAL_DATABASE系统表存储关于可用数据库的信息。 表1 GS_LOGICAL_DATABASE字段 字段名称 字段类型 说明 datname name 数据库名称。 datid oid 数据库OID。 csnmin bigint 插入元组时的 CSN(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 datdba oid 数据库所有人,通常为其创建者。 encoding integer 数据库的字符编码方式。 datcollate name 数据库使用的字符分类。 datctype name 数据库使用的排序顺序。 dattablespace oid 数据库的缺省表空间。 datcompatibility name 数据库兼容模式,当前支持五种兼容模式:A、B、C、M、PG,分别表示兼容O、MY、TD、M-Compatibility和POSTGRES。 dattimezone name 数据库时区信息,默认为PRC时区。 父主题: 逻辑解码
  • GS_LOGICAL_PARTITION GS_LOGICAL_PARTITION系统表存储分区表相关的信息。 表1 GS_LOGICAL_PARTITION字段 字段名称 字段类型 说明 partitionid Oid 分区表OID。 relname name 分区表的名称。 parttype char 分区类型。 parentid oid 父表OID。 relfilenode oid 分区表relfilenode。 reltoastrelid oid TOAST 表的OID。 reltoastidxid oid TOAST索引的OID。 csnmin bigint 插入元组时的 CSN(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 originid integer 元组的来源标识符。 dbnode oid 数据库OID。 createtime timestamp with time zone 插入元组的时间戳。 reltablespace oid 表空间的OID。 dbnode oid 数据库OID。 父主题: 逻辑解码
  • GS_LOGICAL_AUTHID GS_LOGICAL_AUTHID系统表记录逻辑解码需要使用的用户信息。 表1 GS_LOGICAL_AUTHID字段 字段名称 字段类型 说明 rolid oid 用户ID。 rolname name 用户名称。 createtime timestamp with time zone 插入元组的时间戳。 csnmin bigint 插入元组时的CSN(提交序列号)。 csnmax bigint 更新或删除元组时的CSN。 originid integer 元组的来源标识符。 rolkind "char" 用户类型。 父主题: 逻辑解码
  • GS_LOGICAL_ATTRIBUTE GS_LOGICAL_ATTRIBUTE系统表记录逻辑解码需要使用的关于表字段的信息。 表1 GS_LOGICAL_ATTRIBUTE字段 字段名称 字段类型 说明 attrelid oid 包含该属性的RELATION OID。 attname name 属性名称。 atttypid oid 属性的数据类型的OID。 attlen smallint 属性的长度。 attnum smallint 表示属性的编号,用于唯一标识关系中的每个属性。 atthasdef boolean 属性是否有默认值。 csnmin bigint 插入元组时的CSN(提交序列号)。 csnmax bigint 更新或删除元组时的CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 dbnode oid 数据库OID。 attndims integer 如果是数组类型,则为声明的维数,否则为零。 attcacheoff integer 用于函数缓存属性在堆元组中的字节偏移。 attbyval boolean 表示属性是否是按值传递。 attstorage "char" 属性存储方式。 attalign "char" 表示属性的对齐方式。 attisdropped boolean 是否已删除(即逻辑上不可见)。 attinitdefval bytea 存储属性的默认值表达式。 attcollation oid 这个字段类型的PG_ATTRIBUTE中attcollation的复制。 atttypmod integer 这个字段类型的PG_ATTRIBUTE中atttypmod的复制。 父主题: 逻辑解码
  • 并行解码 以下配置选项仅限流式解码设置。 decode-style: 指定解码格式。 取值范围:char型的字符'j'、't'或'b',分别代表json格式,text格式及二进制格式。默认值为'b'即二进制格式解码。 对于json格式和text格式解码,开启批量发送选项时的解码结果中,每条解码语句的前4字节组成的uint32代表该条语句总字节数(不包含该uint32类型占用的4字节,0代表本批次解码结束),8字节uint64代表相应lsn(begin对应first_lsn,commit对应end_lsn,其他场景对应该条语句的lsn)。 二进制格式编码规则如下所示: 前4字节代表接下来到语句级别分隔符字母P(不含)或者该批次结束符F(不含)的解码结果的总字节数,该值如果为0代表本批次解码结束。 接下来8字节uint64代表相应lsn(begin对应first_lsn,commit对应end_lsn,其他场景对应该条语句的lsn)。 接下来1字节的字母有5种B/C/I/U/D,分别代表begin/commit/insert/update/delete。 第3步字母为B时。 接下来的8字节uint64代表CSN。 接下来的8字节uint64代表first_lsn。 【该部分为可选项】接下来的1字节字母如果为T,则代表后面4字节uint32表示该事务commit时间戳长度,再后面等同于该长度的字符为时间戳字符串。 【该部分为可选项】接下来的1字节字母如果为N,则代表后面4字节uint32表示该事务用户名的长度,再后面等同于该长度的字符为事务的用户名字。 因为之后仍可能有解码语句,接下来会有1字节字母P或F作为语句间的分隔符,P代表本批次仍有解码的语句,F代表本批次完成。 第3步字母为C时: 【该部分为可选项】接下来1字节字母如果为X,则代表后面的8字节uint64表示xid。 【该部分为可选项】接下来的1字节字母如果为T,则代表后面4字节uint32表示时间戳长度,再后面等同于该长度的字符为时间戳字符串。 因为批量发送日志时,一个COMMIT日志解码之后可能仍有其他事务的解码结果,接下来的1字节字母如果为P则表示该批次仍需解码,如果为F则表示该批次解码结束。 第3步字母为I/U/D时: 接下来的2字节uint16代表schema名的长度。 按照上述长度读取schema名。 接下来的2字节uint16代表table名的长度。 按照上述长度读取table名。 【该部分为可选项】接下来1字符字母如果为N代表为新元组,如果为O代表为旧元组,这里先发送新元组。 接下来的2字节uint16代表该元组需要解码的列数,记为attrnum。 以下流程重复attrnum次。 接下来2字节uint16代表列名的长度。 按照上述长度读取列名。 接下来4字节uint32代表当前列类型的Oid。 接下来4字节uint32代表当前列的值(以字符串格式存储)的长度,如果为0xFFFFFFFF则表示NULL,如果为0则表示长度为0的字符串。 按照上述长度读取列值。 因为之后仍可能有解码语句,接下来的1字节字母如果为P则表示该批次仍需解码,如果为F则表示该批次解码结束。 sending-batch: 指定是否批量发送。 取值范围:0或1的int型,默认值为0。 0:设为0时,表示逐条发送解码结果。 1:设为1时,表示解码结果累积到达1MB则批量发送解码结果。 开启批量发送的场景中,当解码格式为'j'或't'时,在原来的每条解码语句之前会附加一个uint32类型,表示本条解码结果长度(长度不包含当前的uint32类型),以及一个uint64类型,表示当前解码结果对应的lsn。 在CSN序解码(即output-order设置为1)场景下,批量发送仅限于单个事务内(即如果一个事务有多条较小的语句会采用批量发送),即不会使用批量发送功能在同一批次里发送多个事务,且BEGIN和COMMIT语句不会批量发送。 parallel-queue-size: 指定并行逻辑解码线程间进行交互的队列长度。 取值范围:2~1024的int型,且必须为2的整数幂,默认值为128。 队列长度和解码过程的内存使用量正相关。 logical-reader-bind-cpu: reader 线程绑定cpu核号的参数。 取值范围:-1~65535,不使用该参数则为不绑核。 默认-1,为不绑核。-1不可手动设置,核号应确保在机器总逻辑核数以内,不然会返回报错。多个线程绑定同一个核会导致该核负担加重,从而导致性能下降。 logical-decoder-bind-cpu-index: 逻辑解码线程绑定cpu核号的参数。 取值范围: -1~65535,不使用该参数则为不绑核。 默认 -1,不绑核。-1不可手动设置,核号应确保在机器总逻辑核数以内且小于 [cpu核数 - 并行逻辑解码数],不然会返回报错。 从给定的核号参数开始,新拉起的线程会依次递增加一。 多个线程绑定同一个核会导致该核负担加重,从而导致性能下降。 GaussDB 在进行逻辑解码和日志回放时,会占用大量的CPU资源,相关线程如Walwriter、WalSender、WALreceiver、pageredo就处于性能瓶颈,如果能将这些线程运行绑定在固定的CPU上运行,可以减少因操作系统调度线程频繁切换CPU,导致缓存未命中带来的性能开销,从而提高流程处理速度,如用户场景有性能需求,可根据以下的绑核样例进行配置优化。 参数样例: walwriter_cpu_bind=1 walwriteraux_bind_cpu=2 wal_receiver_bind_cpu=4 wal_rec_writer_bind_cpu=5 wal_sender_bind_cpu_attr='cpuorderbind:7-14' redo_bind_cpu_attr='cpuorderbind:16-19' logical-reader-bind-cpu=20 logical-decoder-bind-cpu-index=21 样例中1.2.3.4.5.6通过GUC工具设置,使用指令如 gs_guc set -Z datanode -N all -I all -c “walwriter_cpu_bind=1”。 样例中7.8通过JDBC客户端发起解码请求时添加。 样例中如walwriter_cpu_bind=1是限定该线程在1号CPU上运行。 cpuorderbind:7-14意为拉起的每个线程依次绑定7号到14号CPU,如果范围内的CPU用完,则新拉起的线程不参与绑核。 logical-decoder-bind-cpu-index意为拉起的线程从21号CPU依次开始绑定,后续拉起的线程分别绑定21、22、23,依次类推。 绑核的原则是一个线程占用一个CPU。 不恰当的绑核,例如将多个线程绑定在一个CPU上很有可能带来性能劣化。 可以通过lscpu指令查看“CPU(s):”得知自己环境的CPU逻辑核心数。 CPU逻辑核心数低于36则不建议使用此套绑核策略,此时建议使用默认配置(不进行参数设置)