华为云用户手册

  • 选择分布列 Hash分布表的分布列选取至关重要,需要满足以下原则: 列值应比较离散,以便数据能够均匀分布到各个DN。例如,考虑选择表的主键为分布列,如在人员信息表中选择身份证号码为分布列。 在满足上述条件的情况下,考虑选择查询中的连接条件为分布列,以便Join任务能够下推到DN中执行,且减少DN之间的通信数据量。 对于Hash分表策略,如果分布列选择不当,可能导致数据倾斜,查询时出现部分DN的I/O短板,从而影响整体查询性能。因此在采用Hash分表策略之后需对表的数据进行数据倾斜性检查,以确保数据在各个DN上是均匀分布的。可以使用以下SQL检查数据倾斜性。 1 2 3 4 5 select xc_node_id, count(1) from tablename group by xc_node_id order by xc_node_id desc; 示例如下: CREATE TABLE t1(c1 int) distribute by hash(c1); INSERT INTO t1 values(generate_series(1,100)); select xc_node_id, count(1) from t1 group by xc_node_id order by xc_node_id desc; DROP TABLE t1; 其中xc_node_id对应DN,一般来说,不同DN的数据量相差5%以上即可视为倾斜,如果相差10%以上就必须要调整分布列。 GaussDB支持多分布列特性,可以更好地满足数据分布的均匀性要求。 Range/List分布表的分布列由用户根据实际需要进行选择。除了需选择合适的分布列,还需要注意分布规则对数据分布的影响。
  • 使用分区表 分区表是把逻辑上的一张表根据某种方案分成几张物理块进行存储。这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。分区表和普通表相比具有以下优点: 改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索效率。 增强可用性:如果分区表的某个分区出现故障,表在其他分区的数据仍然可用。 方便维护:如果分区表的某个分区出现故障,需要修复数据,只修复该分区即可。 GaussDB支持的分区表为范围分区表,列表分区表,哈希分区表。 范围分区表:将数据基于范围映射到每一个分区。这个范围是由创建分区表时指定的分区键决定的。分区键经常采用日期,例如将销售数据按照月份进行分区。 列表分区表:将数据中包含的键值分别存储在不同的分区中,依次将数据映射到每一个分区,分区中包含的键值由创建分区表时指定。 哈希分区表:将数据根据内部哈希算法依次映射到每一个分区中,包含的分区个数由创建分区表时指定。
  • SUMMARY_WORKLOAD_TRANSACTION 显示集群内汇聚的负载事务信息,如表1所示。 表1 SUMMARY_WORKLOAD_TRANSACTION字段 名称 类型 描述 workload name 负载的名称。 commit_counter numeric 用户事务commit数量。 rollback_counter numeric 用户事务rollback数量。 resp_min bigint 用户事务最小响应时间(单位:微秒)。 resp_max bigint 用户事务最大响应时间(单位:微秒)。 resp_avg bigint 用户事务平均响应时间(单位:微秒)。 resp_total numeric 用户事务总响应时间(单位:微秒)。 bg_commit_counter numeric 后台事务commit数量。 bg_rollback_counter numeric 后台事务rollback数量。 bg_resp_min bigint 后台事务最小响应时间(单位:微秒)。 bg_resp_max bigint 后台事务最大响应时间(单位:微秒)。 bg_resp_avg bigint 后台事务平均响应时间(单位:微秒)。 bg_resp_total numeric 后台事务总响应时间(单位:微秒)。 父主题: Workload
  • 示例 byteawithoutorderwithequalcolin、byteawithoutorderwithequalcolout等密态等值函数为数据库内核中数据类型byteawithoutorderwithequalcol指定的in、out、send、recv等读写格式转换函数,具体可参考bytea类型的byteain、byteaout等函数,但会对本地的cek进行验证,需要密文字段中有本地存在的cekoid才能执行成功。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -- 例如存在加密表int_type,int_col2为其加密列。 -- 使用非密态客户端连接数据库,查询加密列密文。 gaussdb=# SELECT int_col2 FROM int_type; int_col2 ------------------------------------------------------------------------------------------------------------------------------------------------------ \x01c35301bf421c8edf38c34704bcc82838742917778ccb402a1b7452ad4a6ac7371acc0ac33100000035fe3424919854c86194f1aa5bb4e1ca656e8fc6d05324a1419b69f488bdc3c6 (1 row) -- 将加密列密文当做byteawithoutorderwithequalcolin入参,格式从cstring输入转码转化成内部byteawithoutorderwithequalcol形式。 gaussdb=# SELECT byteawithoutorderwithequalcolin('\x01c35301bf421c8edf38c34704bcc82838742917778ccb402a1b7452ad4a6ac7371acc0ac33100000035fe3424919854c86194f1aa5bb4e1ca656e8fc6d05324a1419b69f488bdc3c6'); byteawithoutorderwithequalcolin ------------------------------------------------------------------------------------------------------------------------------------------------------ \x01c35301bf421c8edf38c34704bcc82838742917778ccb402a1b7452ad4a6ac7371acc0ac33100000035fe3424919854c86194f1aa5bb4e1ca656e8fc6d05324a1419b69f488bdc3c6 (1 row) 由于byteawithoutorderwithequalcolin等的实现会对cek进行查找,并且判断是否为正常加密后的数据类型。 因此如果用户输入数据的格式不是加密后的数据格式,并且在本地不存在对应cek的情况下,会返回错误。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 gaussdb=# SELECT * FROM byteawithoutorderwithequalcolsend('\x907219912381298461289346129'::byteawithoutorderwithequalcol); ERROR: cek with OID 596711794 not found LINE 1: SELECT * FROM byteawithoutorderwithequalcolsend('\x907219912... ^ gaussdb=# SELECT * FROM byteawithoutordercolout('\x90721901999999999999912381298461289346129'); ERROR: cek with OID 2566986098 not found LINE 1: SELECT * FROM byteawithoutordercolout('\x9072190199999999999... gaussdb=# SELECT * FROM byteawithoutorderwithequalcolrecv('\x90721901999999999999912381298461289346129'::byteawithoutorderwithequalcol); ERROR: cek with OID 2566986098 not found ^ gaussdb=# SELECT * FROM byteawithoutorderwithequalcolsend('\x90721901999999999999912381298461289346129'::byteawithoutorderwithequalcol); ERROR: cek with OID 2566986098 not found LINE 1: SELECT * FROM byteawithoutorderwithequalcolsend('\x907219019... ^
  • 参数 表1 psycopg2.connect参数 关键字 参数说明 dbname 数据库名称。 user 用户名。 password 密码。 host 数据库IP地址,可指定多IP,IP间以逗号隔开,默认为UNIX socket类型。 port 连接端口号,默认为5432。host为多IP时,如端口号相同,指定一个端口号。否则,端口号与IP一一对应,以逗号隔开。 sslmode ssl模式,ssl连接时用。 sslcert 客户端证书路径,ssl连接时用。 sslkey 客户端密钥路径,ssl连接时用。 sslrootcert 根证书路径,ssl连接时用。 hostaddr 数据库IP地址。 connect_timeout 客户端连接超时时间。 client_encoding 客户端编码格式。 application_name application_name的参数值。 fallback_application_name application_name参数的回退值。 keepalives 控制是否客户端TCP保持连接,默认为1,表示打开;值为0时,表示关闭。若UNIX域套接字连接,则忽略。 options 连接开始时发送给服务器的命令行选项。 keepalives_idle 控制向服务器发送keepalive消息之前不活动的描述,若keepalive被禁用,则忽略此参数。 keepalives_interval 控制未得到服务器确认的keepalive消息应重新传输的描述,若keepalive被禁用,则忽略此参数。 keepalives_count 控制客户端与服务端连接断开之前可能丢失的tcp保持连接的数量。 replication 确认连接使用的是复制协议而不是普通协议。 requiressl 支持sslmode设置。 sslcompression ssl压缩。设置为1,则通过ssl连接发送的数据将被压缩;设置为0,则禁用压缩。若没有建立ssl的连接,则忽略此参数。 sslcrl 证书吊销列表文件路径,验证ssl服务端证书是否可用。 requirepeer 指定服务器的操作系统用户名。 target_session_attrs 设定连接的主机的类型。主机的类型和设定的值一致时才能连接成功。指定多IP时才会校验此参数。target_session_attrs的设置规则如下: any:可以对所有类型的主机进行连接。 read-write:当连接的主机允许可读可写时,才进行连接。 read-only:仅对可读的主机进行连接。 primary(默认值):仅对主备系统中的主机能进行连接。 standby:仅对主备系统中的备机进行连接。 prefer-standby:首先尝试找到一个备机进行连接。如果对hosts列表的所有机器都连接失败,那么尝试“any”模式进行连接。
  • audit_thread_num 参数说明:该参数表明用于审计的线程个数。 参数类型:整型 参数单位:个(表示线程数量) 取值范围:1~48 默认值:1 设置方式:该参数属于POSTMASTER类型参数,请参见表1中对应设置方法进行设置。 设置建议:设置为默认值。 对性能的影响:线程数量设置越多,对系统性能的影响越大。 对资源占用的影响:线程数量设置越多,占用的系统CPU和I/O越多。 当audit_dml_state开关打开且在高性能场景下,建议增大此参数保证审计消息可以被及时处理和记录。
  • audit_file_remain_threshold 参数说明:审计目录下审计文件个数的最大值。 参数类型:整型 参数单位:个 取值范围:100 ~ 1048576 默认值:1048576 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:建议设置为默认值。详情请参考以下须知。 请尽量保证此参数为1048576,并不要随意调整此参数,否则可能会导致audit_resource_policy无法生效,如果需要控制审计日志的存储空间和时间,请使用audit_resource_policy、audit_space_limit和audit_file_remain_time参数进行控制。 多审计线程场景下不建议调整此参数,请保证此参数不小于审计线程个数audit_thread_num,否则会导致审计功能无法正常使用与数据库异常。
  • audit_directory 参数说明:审计文件的存储目录。可以是相对于数据目录data的相对路径,也可以是绝对路径,仅sysadmin用户可以访问。 该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串 默认值:pg_audit。如果使用om工具部署集群,则审计日志路径为“$GAUSSLOG/pg_audit/实例名称”。 不同的CN或DN实例需要设置不同的审计文件存储目录,否则会导致审计日志异常。 当配置文件中audit_directory的值为非法路径时,会导致审计功能无法使用。
  • audit_space_limit 参数说明:审计文件占用的磁盘空间总量。 参数类型:整型 参数单位:KB 取值范围:1024KB~1024GB 默认值:1GB 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 此参数的生效范围是pg_audit目录下的单个进程实例文件夹。即默认情况下,每一个CN、DN目录审计文件占用磁盘空间总量是1GB。 多审计线程场景下,审计文件占用的磁盘空间最小值是audit_thread_num与audit_rotation_size的乘积,请保证audit_space_limit的值大于audit_thread_num与audit_rotation_size的乘积。
  • audit_rotation_interval 参数说明:指定创建一个新审计日志文件的时间间隔。当现在的时间减去上次创建一个审计日志的时间超过了此参数值时,服务器将生成一个新的审计日志文件。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,1~35791394,单位为min。 默认值:1d 请不要随意调整此参数,否侧可能会导致audit_resource_policy无法生效,如果需要控制审计日志的存储空间和时间,请使用audit_resource_policy、audit_space_limit和audit_file_remain_time参数进行控制。
  • audit_rotation_size 参数说明:指定审计日志文件的最大容量。当审计日志消息的总量超过此参数值时,服务器将生成一个新的审计日志文件。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,1024~1048576,单位为KB。 默认值:10MB 请不要随意调整此参数,否侧可能会导致audit_resource_policy无法生效,如果需要控制审计日志的存储空间和时间,请使用audit_resource_policy、audit_space_limit和audit_file_remain_time参数进行控制。 审计日志文件中记录的单条日志占用空间大小超过此参数值时会被作为无效日志文件。
  • 开发流程中涉及的API 表1 相关API说明 功能 API 申请句柄资源 SQLAllocHandle:申请句柄资源,可替代如下函数: SQLAllocEnv:申请环境句柄 SQLAllocConnect:申请连接句柄 SQLAllocStmt:申请语句句柄 设置环境属性 SQLSetEnvAttr 设置连接属性 SQLSetConnectAttr 设置语句属性 SQLSetStmtAttr 连接数据源 SQLConnect 绑定缓冲区到结果集的列中 SQLBindCol 绑定SQL语句的参数标志和缓冲区 SQLBindParameter 查看最近一次操作错误信息 SQLGetDiagRec 为执行SQL语句做准备 SQLPrepare 执行一条准备好的SQL语句 SQLExecute 直接执行SQL语句 SQLExecDirect 结果集中取行集 SQLFetch 返回结果集中某一列的数据 SQLGetData 获取结果集中列的描述信息 SQLColAttribute 断开与数据源的连接 SQLDisconnect 释放句柄资源 SQLFreeHandle:释放句柄资源,可替代如下函数: SQLFreeEnv:释放环境句柄 SQLFreeConnect:释放连接句柄 SQLFreeStmt:释放语句句柄 ODBC为应用程序与数据库的中心层,负责把应用程序发出的SQL指令传到数据库当中,自身并不解析SQL语法。故在应用程序中写入带有保密信息的SQL语句时,保密信息会被暴露在驱动日志中。 数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,如果其中有一个语句失败,那么整个请求都将会被回滚。
  • SUMMARY_STATIO_SYS_INDEXES SUMMARY_STATIO_SYS_INDEXES视图显示集群内汇聚的命名空间中所有系统表索引的I/O状态信息,如表1所示。 表1 SUMMARY_STATIO_SYS_INDEXES字段 名称 类型 描述 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read numeric 从索引中读取的磁盘块数。 idx_blks_hit numeric 索引命中缓存数。 父主题: Cache/IO
  • PG_AVAILABLE_EXTENSION_VERSIONS PG_AVAILABLE_EXTENSION_VERSIONS视图显示数据库中某些特性的扩展版本信息。该视图为内部使用,不建议用户使用。具体字段信息如表1所示。 表1 PG_AVAILABLE_EXTENSION_VERSIONS字段 名称 类型 描述 name name 扩展名。 version text 版本名。 installed boolean 如果这个扩展的版本是当前已经安装了的则为真。否则为假。 superuser boolean 如果只允许系统管理员安装这个扩展则为真。否则为假。 relocatable boolean 如果扩展可以重新加载到另一个模式则为真。否则为假。 schema name 扩展必须安装到的模式名,如果部分或全部可重新定位则为NULL。 requires name[] 先决条件扩展的名称,如果没有则为NULL。 comment text 扩展的控制文件中的评论。 父主题: 其他系统视图
  • GS_MY_ILMEVALUATIONDETAILS GS_MY_ILMEVALUATIONDETAILS视图描述ADO Task的评估详情信息,包含Task ID,策略信息、对象信息、评估结果以及ADO JOB名称。 表1 GS_MY_ILMEVALUATIONDETAILS字段 名称 类型 描述 task_id bigint ADO Task的ID。 policy_name character varying(128) ADO策略名称,系统自动生成,规则为:p+策略ID。 object_owner character varying(128) 数据对象Schema名称。 object_name character varying(128) 数据对象名称。 subobject_name character varying(128) 数据对象分区名称。 object_type character varying(18) 数据对象类型: r:表。 p:分区。 s:二级分区。 selected_for_execution character varying(42) 评估结果: SELECTED FOR EXECUTION:评估通过。 PRECONDITION NOT SATISFIED:评估不通过。 JOB ALREADY EXISTS:任务已存在。 job_name character varying(128) 执行具体ADO Job的任务名称,当评估结果为评估通过时,此处有值。 comments character varying(4000) 预留字段。 node_name name 数据来源节点的名称。 父主题: OLTP表压缩
  • ADM_AUDIT_OBJECT ADM_AUDIT_OBJECT显示数据库中所有对象的审计跟踪记录,该视图同时存在于pg_catalog和sys schema下。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。 表1 ADM_AUDIT_OBJECT字段 名称 类型 描述 os_username character varying(255) 暂不支持,值为NULL。 username character varying(128) 操作被审计的用户的名称,不是用户ID。 userhost character varying(128) 暂不支持,值为NULL。 terminal character varying(255) 暂不支持,值为NULL。 timestamp date 在本地数据库会话时区中创建审计跟踪条目的日期和时间(审计会话创建条目的用户登录日期和时间)。 owner character varying(128) 受操作影响的对象的创建者。 obj_name character varying(128) 受操作影响的对象的名称。 action_name character varying(28) DBA_AUDIT_TRAIL中的“操作”列中的数字代码对应的动作类型名称。 说明: GaussDB的action_name字段与ORA数据库审计动作不一致。 new_owner character varying(128) 暂不支持,值为NULL。 new_name character varying(128) 暂不支持,值为NULL。 ses_actions character varying(19) 暂不支持,值为NULL。 comment_text character varying(4000) 暂不支持,值为NULL。 sessionid numeric 暂不支持,值为NULL。 entryid numeric 暂不支持,值为NULL。 statementid numeric 暂不支持,值为NULL。 returncode numeric 暂不支持,值为NULL。 priv_used character varying(40) 暂不支持,值为NULL。 client_id character varying(128) 暂不支持,值为NULL。 econtext_id character varying(64) 暂不支持,值为NULL。 session_cpu numeric 暂不支持,值为NULL。 extended_timestamp timestamp(6) with time zone 在UTC(协调世界时)时区创建审计跟踪条目的时间戳(审计会话创建条目的用户的登录时间戳)。 proxy_sessionid numeric 暂不支持,值为NULL。 global_uid character varying(32) 暂不支持,值为NULL。 instance_number numeric 暂不支持,值为NULL。 os_process character varying(16) 暂不支持,值为NULL。 transactionid text 访问或修改对象的事务的事务标识符。 说明: GaussDB的transactionid字段与ORA数据库中transactionid数据的类型保持一致。 scn numeric 暂不支持,值为NULL。 sql_bind nvarchar2(2000) 暂不支持,值为NULL。 sql_text character varying 查询的SQL文本。 说明: GaussDB的sql_text字段为解析后sql描述语句,不完全与执行的sql语句相同。 obj_edition_name character varying(128) 暂不支持,值为NULL。 父主题: 审计
  • 注意事项 清除(PURGE)操作支持:表(PURGE TABLE)、索引(PURGE INDEX)、回收站(PURGE RECYCLEBIN)。 执行PURGE操作的权限要求如下: PURGE TABLE:用户必须是表的所有者,且用户必须拥有表所在模式的USAGE权限,当三权分立开关关闭时,系统管理员默认拥有此权限。 PURGE INDEX:用户必须是索引的所有者,用户必须拥有索引所在模式的USAGE权限,当三权分立开关关闭时,系统管理员默认拥有此权限。 PURGE RECYCLEBIN:普通用户只能清理回收站中当前用户拥有的对象,且用户必须拥有对象所在模式的USAGE权限,当三权分立开关关闭时,系统管理员默认可以清理回收站所有对象。
  • 示例 --创建表reason_t1。 gaussdb=# CREATE TABLE reason_t1( r_reason_sk integer, r_reason_id character(16), r_reason_desc character(100) ) WITH(STORAGE_TYPE = ustore); --创建表reason_t2。 gaussdb=# CREATE TABLE reason_t2( r_reason_sk integer, r_reason_id character(16), r_reason_desc character(100) ) WITH(STORAGE_TYPE = ustore); -- 对表reason_t1和reason_t2添加索引。 gaussdb=# CREATE INDEX idx_t1 on reason_t1(r_reason_id); gaussdb=# CREATE INDEX idx_t2 on reason_t2(r_reason_id); gaussdb=# DROP TABLE reason_t1; gaussdb=# DROP TABLE reason_t2; --查看回收站。 gaussdb=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN; rcyname | rcyoriginname | rcytablespace ----------------------------+---------------+--------------- BIN$31C94EB4207$8001$0==$0 | reason_t1 | 0 BIN$31C94EB420D$8001$0==$0 | idx_t1 | 0 BIN$31C94EB420A$8004$0==$0 | reason_t2 | 0 BIN$31C94EB420E$8004$0==$0 | idx_t2 | 0 (4 rows) --PURGE清除表。 gaussdb=# PURGE TABLE reason_t1; gaussdb=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN; rcyname | rcyoriginname | rcytablespace ----------------------------+---------------+--------------- BIN$31C94EB420A$8004$0==$0 | reason_t2 | 0 BIN$31C94EB420E$8004$0==$0 | idx_t2 | 0 (2 rows) --PURG清除索引。 gaussdb=# PURGE INDEX idx_t2; gaussdb=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN; rcyname | rcyoriginname | rcytablespace ----------------------------+---------------+--------------- BIN$31C94EB420A$8004$0==$0 | reason_t2 | 0 (1 row) --PURGE清除回收站所有对象。 gaussdb=# PURGE recyclebin; gaussdb=# SELECT rcyname,rcyoriginname,rcytablespace FROM GS_RECYCLEBIN; rcyname | rcyoriginname | rcytablespace -----------------------+---------------+--------------- (0 rows)
  • sqlca 嵌入式SQL接口提供了sqlca(SQL通信区)的全局变量。sqlca包含告警和错误信息。如果在语句执行期间发生多个告警和错误,那么sqlca将只保存最后一个信息。在一个多线程的程序中,每一个线程会自动得到它的sqlca副本。 数据结构如下: struct { char sqlcaid[8]; long sqlabc; long sqlcode; struct { int sqlerrml; char sqlerrmc[SQLERRMC_LEN]; } sqlerrm; char sqlerrp[8]; long sqlerrd[6]; char sqlwarn[8]; char sqlstate[5]; } sqlca; 如果SQL语句没有发生错误,则sqlca.sqlcode为0,sqlca.sqlstate为"00000"。如果发生了告警或者错误,那么sqlca.sqlcode是负数并且sqlca.sqlstate不同于"00000"。SQLSTATE与SQLCODE的具体值请参见SQLSTATE与SQLCODE章节。 如果SQL语句正确执行,那么sqlca.sqlerrd[1]包含被处理行的OID,并且sqlca.sqlerrd[2]包含被处理或返回的行数。 在发生错误或告警时,sqlca.sqlerrm.sqlerrmc将包含描述该错误的字符串。sqlca.sqlerrm.sqlerrml包含存储在sqlca.sqlerrm.sqlerrmc中错误消息的长度(strlen()的结果)。注意:一些消息可能无法适应定长的sqlerrmc数组,它们将被截断。 在发生告警时,sqlca.sqlwarn[2]被设置为W。 sqlcaid、sqlabc、sqlerrp、sqlwarn以及sqlerrd的剩余元素目前未包含有用的信息。 示例如下: /* 整合WHENEVER和sqlca实现错误处理 */ EXEC SQL WHENEVER SQLERROR SQLCALL print_sqlca(); void print_sqlca() { fprintf(stderr, "==== sqlca ====\n"); fprintf(stderr, "sqlcode: %ld\n", sqlca.sqlcode); fprintf(stderr, "sqlerrm.sqlerrml: %d\n", sqlca.sqlerrm.sqlerrml); fprintf(stderr, "sqlerrm.sqlerrmc: %s\n", sqlca.sqlerrm.sqlerrmc); fprintf(stderr, "sqlerrd: %ld %ld %ld %ld %ld %ld\n", sqlca.sqlerrd[0],sqlca.sqlerrd[1],sqlca.sqlerrd[2], sqlca.sqlerrd[3],sqlca.sqlerrd[4],sqlca.sqlerrd[5]); fprintf(stderr, "sqlwarn: %d %d %d %d %d %d %d %d\n", sqlca.sqlwarn[0], sqlca.sqlwarn[1], sqlca.sqlwarn[2], sqlca.sqlwarn[3], sqlca.sqlwarn[4], sqlca.sqlwarn[5], sqlca.sqlwarn[6], sqlca.sqlwarn[7]); fprintf(stderr, "sqlstate: %5s\n", sqlca.sqlstate); fprintf(stderr, "===============\n"); } 输出结果形如(此处是一个拼写表名错误): ==== sqlca ==== sqlcode: -400 sqlerrm.sqlerrml: 49 sqlerrm.sqlerrmc: relation "pg_databasep" does not exist on line 38 sqlerrd: 0 0 0 0 0 0 sqlwarn: 0 0 0 0 0 0 0 0 sqlstate: 42P01 =============== 父主题: 错误处理
  • GLOBAL_PARALLEL_DECODE_THREAD_INFO GLOBAL_PARALLEL_DECODE_THREAD_INFO视图用于查看集群各主DN节点上的进行并行解码的线程信息,如表1所示。该视图需在CN上查询,在DN上查询报错。 表1 GLOBAL_PARALLEL_DECODE_THREAD_INFO字段 名称 类型 描述 node_name name 节点名称。 thread_id bigint 线程id。 slot_name text 复制槽名。 thread_type text 线程种类(共三种,sender代表发送线程,reader代表读取线程,decoder代表解码线程)。 seq_number integer 当前复制槽中同种线程的序号(从1开始)。 父主题: Utility
  • PG_TABLESPACE PG_TABLESPACE系统表存储表空间信息。 表1 PG_TABLESPACE字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 spcname name 表空间名称。 spcowner oid 表空间的所有者,通常是创建它的人。 spcacl aclitem[] 访问权限。具体请参见GRANT和REVOKE。 spcoptions text[] 表空间的选项。 spcmaxsize text 可使用的最大磁盘空间大小,单位Byte。 relative boolean 标识表空间指定的存储路径是否为相对路径。 t(true):表示是。 f(false):表示不是。 父主题: 其他系统表
  • 示例 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 --插入内容。 gaussdb=# ALTER GLOBAL CONFIGURATION with(redis_is_ok = true); --查询。 gaussdb=# SELECT * FROM gs_global_config; name | value -----------------+------- buckets_len | 16384 undostoragetype | page redis_is_ok | true (3 rows) --修改内容。 gaussdb=# ALTER GLOBAL CONFIGURATION with(redis_is_ok = false); --查询。 gaussdb=# SELECT * FROM gs_global_config; name | value -----------------+------- buckets_len | 16384 undostoragetype | page redis_is_ok | false (3 rows) --删除内容。 gaussdb=# DROP GLOBAL CONFIGURATION redis_is_ok; --查询。 gaussdb=# SELECT * FROM gs_global_config; name | value -----------------+------- buckets_len | 16384 undostoragetype | page (2 rows)
  • LOCAL_REL_IOSTAT 获取当前节点中数据文件I/O状态的累计值,显示为所有数据文件I/O状态的总和,如表1所示。 表1 LOCAL_REL_IOSTAT字段 名称 类型 描述 phyrds bigint 读物理文件的数目。 phywrts bigint 写物理文件的数目。 phyblkrd bigint 读物理文件的块的数目。 phyblkwrt bigint 写物理文件的块的数目。 父主题: File
  • check_sync_standby 参数说明:打开备机检查开关,主备场景下配置了正确的synchronous_standby_names参数后,当同步备故障时,主机写业务直接报错写失败。该参数属于USERSET类型参数,请参考表2中对应设置方法进行设置。 取值范围:on/off on表示开启备机检查。 off表示关闭备机检查。 默认值:off 该参数不支持在job work和自治事务中同步,有可能导致检查不生效。 若指定用户或session中未设置备机检查,开启强同步提交模式下备机故障,执行一个表的写操作会导致另一个用户或session中的同一个表的查询hang,此时需要备机恢复或者手动terminate hang住的客户端。 不支持非写操作中触发写日志的场景中(vacuum analyze,gs_clean等)开启备机检查开关。若备机不满足同步备配置,则该场景会导致业务hang,需要手动terminate。
  • sync_config_strategy 参数说明:主机和备机、备机和级联备之间配置文件的同步策略。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:枚举类型 all_node: 主机配置为all_node时,表示允许主机向所有备机主动同步配置文件;备机配置为all_node时,表示允许当前备机向其主机发送同步请求,允许当前备机向其所有级联备主动同步配置文件;级联备配置为all_node时,表示允许当前级联备向其备机发送同步请求。 only_sync_node: 主机配置为only_sync_node时,表示仅允许主机向所有同步备机主动同步配置文件;备机配置为only_sync_node时,表示允许当前备机向其主机发送同步请求,不允许当前备机向其所有级联备主动同步配置文件;级联备配置为only_sync_node时,表示允许当前级联备向其备机发送同步请求。 none_node: 主机配置为none_node时,表示不允许主机向任何备机主动同步配置文件;备机配置为none_node时,表示不允许当前备机向其主机发送同步请求,不允许当前备机向其所有级联备主动同步配置文件;级联备配置为none_node时,表示不允许当前级联备向其备机发送同步请求。 默认值:all_node 注意:在低于503.0.0版本升级到503.0.0版本后配置了该参数,回滚后该参数将无法识别。请勿在升级503.0.0版本期间配置该参数。
  • enable_data_replicate 参数说明:当数据库在数据导入行存表时,主机与备机的数据同步方式可以进行选择。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:布尔型 on表示导入数据行存表时主备数据采用数据页的方式进行同步。当replication_type参数为1时,不允许设置为on,如果此时用guc工具设置成on,会强制改为off。 off表示导入数据行存表时主备数据采用日志(xLog)方式进行同步。 默认值:off
  • catchup2normal_wait_time 参数说明:单同步备机情况下,控制备机数据追赶(catchup)阻塞主机的最长时间。 该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,范围-1~10000,单位为毫秒。 -1表示主机阻塞直到备机数据追赶完成。 0表示备机数据追赶时始终不阻塞主机。 其余值表示备机数据追赶时阻塞主机的最长时间。例如,取值5000,表示当备机数据追赶完成时间还剩5s时,阻塞主机等待其完成。 默认值:-1
  • hadr_recovery_time_target 参数说明:在流式容灾模式下设置hadr_recovery_time_target能够让备数据库实例完成日志写入和回放。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0~3600 (秒) 0是指不开启日志流控,1~3600是指备机能够在hadr_recovery_time_target时间内完成日志的写入和回放,可以保证主数据库实例与备数据库实例切换时能够在hadr_recovery_time_target秒完成日志写入和回放,保证备数据库实例能够快速升主。hadr_recovery_time_target设置时间过小会影响主机的性能,设置过大会失去流控效果。 默认值:60(金融版(数据计算型))
  • hadr_recovery_point_target 参数说明:在流式容灾模式下设置hadr_recovery_point_target能够让备数据库实例完成日志刷盘的rpo时间。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0~3600 (秒) 0是指不开启日志流控,1~3600是指备机能够在hadr_recovery_point_target时间内完成日志的刷盘,可以保证主数据库实例与备数据库实例切换时日志差距能够在hadr_recovery_point_target秒内,保障备数据库实例升主日志量。hadr_recovery_point_target设置时间过小会影响主机的性能,设置过大会失去流控效果。 默认值:10(金融版(数据计算型))
  • vacuum_defer_cleanup_age 参数说明:指定VACUUM使用的事务数,VACUUM会延迟清除无效的行存表记录,延迟的事务个数通过vacuum_defer_cleanup_age进行设置。即VACUUM和VACUUM FULL操作不会立即清理刚刚被删除元组。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0~1000000,值为0表示不延迟。 默认值:0
共100000条