华为云用户手册

  • 参数 表1 PQexecParamsBatch参数 关键字 参数说明 conn 连接句柄。 command SQL文本串。 nParams 绑定参数的个数。 nBatch 批量操作数。 paramTypes 绑定参数的类型。 paramValues 绑定参数的值。 paramLengths 参数长度。 须知: 下列情况中,参数长度强制使用paramLengths中对应的值: 参数格式为二进制。 参数格式为文本且连接参数force_no_truncation的值为1。 此时paramLengths不允许为空,并且参数长度的正确性须由调用者自行保证。 paramFormats 参数格式(文本或二进制)。 resultFormat 返回结果格式(文本或二进制)。
  • 示例 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 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 --创建安全标签sec_label。 gaussdb=# CREATE SECURITY LABEL sec_label 'L1:G4'; --创建安全标签sec_label,安全标签内容为'L1:G2,G4'。 gaussdb=# CREATE SECURITY LABEL sec_label 'L1:G2,G4'; ERROR: security label "sec_label" already exists --创建安全标签sec_label1,安全标签内容为'L1:G2,G4'。 gaussdb=# CREATE SECURITY LABEL sec_label1 'L1:G2,G4'; --创建安全标签sec_label2,安全标签内容为'L3:G1-G5'。 gaussdb=# CREATE SECURITY LABEL sec_label2 'L3:G1-G5'; --查看系统中已创建好的安全标签。 gaussdb=# SELECT * FROM gs_security_label; label_name | label_content ------------+--------------- sec_label | L1:G4 sec_label1 | L1:G2,G4 sec_label2 | L3:G1-G5 (3 rows) --删除已存在的安全标签sec_label、sec_label1、sec_label2。 gaussdb=# DROP SECURITY LABEL sec_label; gaussdb=# DROP SECURITY LABEL sec_label1; gaussdb=# DROP SECURITY LABEL sec_label2; --再次查看系统中已创建好的安全标签。 gaussdb=# SELECT * FROM gs_security_label; label_name | label_content ------------+--------------- (0 rows)
  • 参数说明 label_name 安全标签名称,需在数据库内唯一。 取值范围:字符串,要符合标识符命名规范,且最大长度不超过63个字符。若超过63个字符,数据库会截断并保留前63个字符当作安全标签名称。当安全标签名称中包含大写字母时数据库会自动转换为小写字母,如果需要创建包含大写字母的安全标签名称则需要使用双引号括起来。 标识符需要为小写字母(a~z)、大写字母(A~Z)、下划线(_)、数字(0~9)或美元符号($),且必须以字母或下划线开头。 label_content 安全标签内容,要求如下: 安全标签由等级和范围两部分组成,两者中间用冒号分隔,形式如:等级类别:范围类别,其中等级类别有且仅由一个等级组成,范围类别可由多个范围组成,但至少需要有一个范围,例如“L1:G2,G41,G6-G27”。 等级分类中有1024个等级,命名为Li,其中1≤i≤1024,等级满足偏序关系(若i ≤ j,则Li ≤ Lj),例如等级L1小于等级L3. 范围分类中有1024个范围,命名为Gi,其中1≤i≤1024,范围之间无法比较大小,但可以进行集合运算,多个范围之间用逗号分隔,连字符表示区间,例如{G2-G5}表示{G2,G3,G4,G5},集合{G1}是集合{G1,G6}的子集。 等级和范围的首字母L和G均为大写;L和G之后至少要有一个数字字符,且第一位非零,不允许出现其他非数字字符;{Gxxx-Gyyy}形式中数字yyy必须大于等于xxx。 不符合要求的等级和范围均为非法输入,系统会报错。 例子: gaussdb=# CREATE SECURITY LABEL sec_label3 'L3:'; //标签内容范围类别至少要有一个才行。 ERROR: in label text "L3:", there at least have one level and one group
  • PG_JOB PG_JOB系统表存储用户创建的定时任务的详细信息,定时任务线程定时轮询PG_JOB系统表中的时间,当任务到期会触发任务的执行,并更新PG_JOB表中的任务状态。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。普通用户需授权后才能访问。 表1 PG_JOB字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 job_id bigint 作业id,主键,是唯一的(有唯一索引)。 current_postgres_pid bigint 如果当前任务已被执行,那么此处记录运行此任务的线程ID。默认为-1,表示此任务未被执行过。 log_user name 创建者的UserName。 priv_user name 作业执行者的UserName。 dbname name 标识作业要在哪一个数据库执行的数据库名称。 node_name name 标识当前作业是在哪一个CN上创建和执行。 job_status "char" 当前任务的执行状态,默认为's',各取值含义: 'r':running 's':successfully finished 'f':job failed 'd':disable 当job连续执行失败16次,会将job_status自动设置为失效状态'd',后续不再执行该job。 注:当用户将定时任务关闭(即:GUC参数job_queue_processes为0时),由于监控job执行的线程不会启动,所以该状态不会根据job的实时状态进行设置,用户不需要关注此状态。只有当开启定时任务功能(即:GUC参数job_queue_processes为非0时),系统才会根据当前job的实时状态刷新该字段值。 start_date timestamp without time zone 作业第一次开始执行时间,时间精确到毫秒。 next_run_date timestamp without time zone 定时任务下次执行的时间,时间精确到毫秒。 failure_count smallint 失败计数,作业连续执行失败16次,不再继续执行。 interval text 作业执行的重复时间间隔。 last_start_date timestamp without time zone 上次运行开始时间,时间精确到毫秒。 last_end_date timestamp without time zone 上次运行的结束时间,时间精确到毫秒。 last_suc_date timestamp without time zone 上次成功运行的开始时间,时间精确到毫秒。 this_run_date timestamp without time zone 正在运行任务的开始时间,时间精确到毫秒。 nspname name 标识作业执行时的schema的名称。 job_name text DBE_SCHEDULER定时任务专用,定时任务名称。 end_date timestamp without time zone DBE_SCHEDULER定时任务专用,定时任务失效时间,时间精确到毫秒。 enable boolean DBE_SCHEDULER定时任务专用,定时任务启用状态: true:启用。 false:未启用。 failure_msg text 最新一次执行任务报错信息。 父主题: 其他系统表
  • 数据表膨胀可能的原因 为了保证数据库的业务性能,删除操作不会立即释放历史版本行的空间,而是将其标记为删除,之后异步回收这些空间。如果回收操作出现阻塞或逻辑缺陷,就会导致删除的空间无法复用,新插入的行不断扩展文件,从而导致数据表空间膨胀。空间膨胀可能出现在数据库的索引、堆表以及许多日志文件中。在此,我们重点讨论堆表空间膨胀的原理。 对于Astore存储引擎,多版本机制将历史版本存放在堆表上,形成版本链。当元组被删除或更新时,原来的元组变为死亡元组,只有当这些操作事务的事务号小于oldestxmin时,才能触发回收。因此,Astore很容易出现空间膨胀问题。 Ustore存储引擎采用多版本管理机制,将历史版本统一存放在Undo中,事务提交后即可清理。此外,Ustore使用原位更新替代Astore的追加更新方式,更新操作不会引起堆表空间膨胀。因此,在频繁更新的场景中,Ustore的空间稳定性远优于Astore存储引擎。然而,这并不意味着Ustore不会发生空间膨胀。通过回溯总结历史问题,我们将导致堆表空间膨胀的主要原因归结为以下几类: 长事务存在,导致oldestxmin未正常推进,删除事务提交后空间无法正常复用。 AUTOVACUUM清理效率低,无法跟上业务生成死亡元组的效率。 FSM错误或不准确,导致空间膨胀。 长事务导致oldestxmin卡住 AUTOVACUUM清理效率低 FSM出现损坏 父主题: 常见问题
  • GLOBAL_SESSION_MEMORY 统计各节点的Session级别的内存使用情况,包含执行作业在数据节点上 GaussDB 线程和Stream线程分配的所有内存,单位为MB,如表1所示。 表1 GLOBAL_SESSION_MEMORY字段 名称 类型 描述 node_name name 节点名称。 sessid text 线程启动时间+线程标识。 init_mem integer 当前正在执行作业进入执行器前已分配的内存。 used_mem integer 当前正在执行作业已分配的内存。 peak_mem integer 当前正在执行作业已分配的内存峰值。 父主题: Session/Thread
  • 算子说明 InitPlan是GaussDB的子计划的一部分。GaussDB中子查询计划可分为相关子计划和非相关子计划,相关子计划是指子查询依赖外部查询的行,不可独立于外部查询执行,非相关子计划则相反。在GaussDB中,SubPlan或InitPlan都可以叫做子计划,是相对于整个计划而言可以相对独立执行的部分,一般由不能提升的子计划生成。SubPlan主要是相关子计划生成的,InitPlan则是非相关子计划生成的。SubPlan是在主查询执行期间运行的,在主查询的每一行上重新执行一次,而InitPlan是在主查询执行之前运行的,结果是一次性的,它们在查询开始时计算一次,然后缓存起来在整个查询执行期间重用,所以InitPlan效率会更高。
  • MY_JOBS MY_JOBS视图显示当前用户拥有的定时任务的详细信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。具体字段信息如表1所示。 表1 MY_JOBS字段 名称 类型 描述 job bigint 作业id。 log_user name 创建者的UserName。 priv_user name 作业执行者的UserName。 dbname name 创建作业的数据库名称。 schema_user name 定时任务的默认模式名。 start_date timestamp without time zone 作业第一次开始执行的时间。 start_suc text 作业第一次成功执行对应的开始时间。 last_date timestamp without time zone 上次运行的开始时间。 last_suc text 上次成功运行的开始时间。 last_sec text 上次成功运行的开始时间,提供兼容性支持。 this_date timestamp without time zone 正在运行任务的开始时间。 this_suc text 正在运行任务的开始时间。 this_sec text 正在运行任务的开始时间,提供兼容性支持。 next_date timestamp without time zone 任务下次执行时间。 next_suc text 任务下次执行时间。 next_sec text 任务下次执行时间,提供兼容性支持。 total_time numeric 任务最近一次的执行时长。 broken text 如果status字段取值为d,broken则为'y',否则broken为n。 status "char" 本步骤的执行状态,取值范围:(r、s、f、d),默认为r,取值含义: r:运行中。 s:执行成功。 f:执行失败。 d:取消执行。 interval text 用来计算下次运行时间的时间表达式,如果为null则表示定时任务只执行一次。 failures smallint 失败计数,若作业连续执行失败16次,则不再继续执行。 what text 可执行的作业。 nls_env character varying(4000) 暂不支持,值为NULL。 misc_env raw 暂不支持,值为NULL。 instance numeric 暂不支持,值为NULL。 父主题: 其他系统视图
  • PG_STAT_REPLICATION PG_STAT_REPLICATION视图显示日志同步线程的信息,如发起端发送日志位置,接收端接收日志位置等。具体字段信息如表1所示。 表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 日志同步线程的状态。 startup:线程正在启动。 catchup:线程正在建立备用服务器和主服务器的连接。 streaming:线程已建立备用服务器和主服务器的连接,正在进行数据的流复制。 backup:线程正在发送备份。 stopping:线程正在停止。 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 同步状态: async:异步复制。 sync:同步复制。 potential:该备用服务器现在是异步的,但假如一个当前的同步服务器发生故障,该服务器会变成同步的。 quorum:在同步与异步之间切换,保证备机中有大于一定数量的同步备机,同步备机数量一般为(n+1)/2-1,n为总副本个数。是否为同步备机取决于是否先接到了日志。详情可参考synchronous_standby_names参数描述。 父主题: 其他系统视图
  • PG_GTT_STATS PG_GTT_STATS视图可用来查看当前会话所有全局临时表的单列统计信息,调用pg_get_gtt_statistics()函数。继承自集中式全局临时表,使用时,需先对表进行ANALYZE。 表1 PG_GTT_STATS字段 名称 类型 描述 schemaname name schema名称。 tablename name 全局临时表名称。 attname name 属性名称。 inherited boolean 是否统计有继承关系的对象。 null_frac real 该字段中为NULL的记录的比率。 avg_width integer 非NULL记录的平均存储宽度,以字节计算。 n_distinct real 标识全局统计信息中字段里唯一的非NULL数据值的数目。 most_common_vals text[] 高频值列表,按照出现的频率排序。 most_common_freqs real[] 高频值的频率。 histogram_bounds text[] 等频直方图描述列中的数据分布(不包含高频值)。 correlation real 相关系数。 most_common_elems text[] 类型高频值列表,用于数组类型或一些其他类型。 most_common_elem_freqs real[] 类型高频值的频率。 elem_count_histogram real[] 数组类型直方图。 父主题: 其他系统视图
  • ChainedStreamBuilder的继承关系 ChainedStreamBuilder是逻辑复制的接口,实现类是ReplicationStreamBuilder,该类位于com.huawei.gaussdb.jdbc.replication.fluent Package中,该类的声明如下: public class ReplicationStreamBuilder implements ChainedStreamBuilder
  • 问题规避 如果发现AUTOVACUUM清理死行过慢,跟不上业务死行生成的速度,导致死行持续堆积,则需要人工介入处理,具体策略如下: 调整AUTOVACUUM参数:在系统I/O资源充足的情况下,可以通过减小autovacuum_vacuum_cost_delay来加快VACUUM的清理速度。该参数默认值为20ms,即扫描约20-50个页面时会触发一次强制睡眠,每次睡眠时间为20ms。建议将该参数调整为1ms,以极大地提高后台线程的清理效率。 手动执行VACUUM:如果调整参数后仍无法立即回收死行,可以通过视图获取死行较多的数据表,并对这些表进行手动VACUUM。手动VACUUM不使用I/O管控,会以最大效率清理死行,从而快速减少死行数量。
  • ADM_TAB_PRIVS ADM_TAB_PRIVS视图显示数据库中所有对象的授权信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TAB_PRIVS字段 名称 类型 描述 grantee character varying(128) 被授予权限的用户或角色的名称。 owner character varying(128) 对象的所有者。 table_name character varying(128) 对象的名称。 grantor character varying(128) 执行授权的用户名。 privilege character varying(40) 对象上的权限,包括USAGE、UPDATE、DELETE、INSERT、CONNECT、SELECT、EXECUTE。 grantable character varying(3) 该授权是否包含GRANT选项。 YES:包含GRANT选项。 NO:不包含GRANT选项。 type character varying(24) 对象的类型。包括NODE GROUP、COLUMN_ENCRYPTION_KEY、PACKAGE、COLUMN、TABLE、VIEW、SEQUENCE、TYPE、INDEX、DATABASE、DIRECTORY、FOREIGN DATA WRAPPER、FOREIGN SERVER、LANGUAGE、SCHEMA、TEMPLATE、FUNCTION、PROCEDURE、TABLESPACE。 hierarchy character varying(3) 暂不支持,值为NULL。 common character varying(3) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 父主题: 用户和权限管理
  • GS_COMM_LISTEN_ADDRESS_EXT_INFO GS_COMM_LISTEN_ADDRESS_EXT_INFO描述了查询连接当前DN扩展IP的相关线程、会话以及socket等DFX信息。使用场景参见系统函数描述gs_comm_listen_address_ext_info()。 表1 GS_COMM_LISTEN_ADDRESS_EXT_INFO字段 名称 类型 描述 node_name text 当前实例名。 app text 当前连接DN的客户端。 tid bigint 当前线程的线程号。 lwtid integer 当前线程的轻量级线程号。 query_id bigint 当前线程的查询ID。 socket integer 当前物理连接的socket fd。 remote_ip text 当前连接对端IP。 remote_port text 当前连接对端port。 local_ip text 当前连接本端IP。 local_port text 当前连接本端port。 父主题: 通信
  • GS_AUDITING_POLICY_PRIVILEGES GS_AUDITING_POLICY_PRIVILEGES系统表记录统一审计DDL数据库相关操作信息,每条记录对应一个设计策略。需要有系统管理员或安全策略管理员权限才可以访问此系统表。 表1 GS_AUDITING_POLICY_PRIVI字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 privilegetype name DDL数据库操作相关类型。例如CREATE、ALTER、DROP等。 labelname name 资源标签名称。对应系统表12.2.9.1 GS_AUDITING_POLICY中的polname字段。 policyoid oid 对应审计策略系统表12.2.9.1 GS_AUDITING_POLICY中的oid。 modifydate timestamp without time zone 创建或修改的最新时间戳。 父主题: 审计
  • GLOBAL_WLM_WORKLOAD_RUNTIME 显示当前用户在每个CN上执行作业时在CN上的状态信息,如表1所示。需要有监控管理员权限才可以访问。 表1 GLOBAL_WAL_WORKLOAD_RUNTIME字段 名称 类型 描述 node_name text 作业执行所在的CN的名称。 thread_id bigint 后端线程ID。 processid integer 线程的lwpid。 time_stamp bigint 语句执行的开始时间。 username name 登录到该后端的用户名。 memory integer 语句所需的内存大小。 active_points integer 语句在资源池上消耗的资源点数。 max_points integer 资源在资源池上的最大资源数。 priority integer 作业的优先级。 resource_pool text 作业所在资源池。 status text 作业执行的状态,包括: pending:阻塞状态。 running:执行状态。 finished:结束状态。 aborted:终止状态。 unknown:未知状态。 control_group name 作业所使用的Cgroups。 enqueue text 作业的排队信息,包括: GLOBAL:全局排队。 RESPOOL:资源池排队。 ACTIVE:不排队。 query text 正在执行的语句。 node_group text node group名称。 父主题: Workload Manager
  • 注意事项 只有拥有表INSERT权限的用户,才可以向表中插入数据。用户被授予INSERT ANY TABLE权限,即用户对除系统模式之外的任何模式具有USAGE权限,并且拥有这些模式下表的INSERT权限。 如果使用QUERY子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的SELECT权限。 生成列不能被直接写入。在INSERT命令中不能为生成列指定值,但可以指定关键字DEFAULT。 仅支持在ORA兼容模式下执行该语法。
  • 语法格式 INSERT [/*+ plan_hint */] [ ALL | FIRST ] { [ WHEN condition THEN ] { INTO table_name [ { [alias_name] [ ( column_name [, ...] ) ] } | { [partition_clause] [ AS alias ] [ ( column_name [, ...] ) ] } ] [ VALUES {( { expression | DEFAULT } [, ...] ) } ] }[, ...] }[, ...] { subquery };
  • 参数说明 plan_hint子句 以/*+ */的形式在INSERT关键字后,目前仅适配了语法格式,并未实现具体功能。 ALL/FIRST 如果不带条件子句(WHEN condition THEN),此关键字不可省略,且只能为ALL。如果含有条件子句,此关键字可以省略,默认为ALL,此时ALL和FIRST的含义分别为: ALL:遍历所有匹配条件的分支,只要满足条件就会将数据插入对应的表。 FIRST:查询到第一个满足条件的分支后,将数据插入该分支对应的表,不再继续检查剩余分支。 WHEN condition THEN 插入表时的条件判断,只有满足条件才会进行插入操作,condition中可以引用子查询(SUBQUERY)中的列。 table_name 要插入数据的目标表名。 取值范围:已存在的表名。 alias_name INSERT语句不包含AS alias语法时的表别名。 INTO子句不包含AS alias语法时的表别名不能为关键字(如SELECT、VALUE)或者表达式,表别名要求符合标识符命名规范。 INTO子句不包含AS alias语法时的表别名不支持INTO table_name alias_name(alias_name.col1,...,alias_name.coln) VALUES(xxx);的语法格式。 INTO子句的分区表不包含AS alias语法时的表别名不支持指定分区插入操作。 partition_clause 指定分区插入操作。 PARTITION { ( partition_name ) | FOR ( partition_value [, ...] ) } | SUBPARTITION { ( subpartition_name ) | FOR ( subpartition_value [, ...] ) } 关键字具体信息请参见SELECT。 如果VALUE子句的值和指定分区不一致,结果会提示异常。 column_name 目标表中的字段名称。 字段名可以由子字段名或者数组下标修饰。 没有在字段列表中出现的每个字段,将由系统默认值或者声明时的默认值进行填充,若无默认值或未声明时则使用NULL填充。例如,向一个复合类型中的某些字段插入数据,其他字段使用NULL进行填充。 目标字段(column_name)按顺序排列。如果没有列出任何字段,则默认全部字段,且顺序为表声明时的顺序。 如果VALUE子句和QUERY中只提供了N个字段,则目标字段为前N个字段。 VALUE子句和QUERY提供的值在表中从左到右关联到对应列。 取值范围:已存在的字段名。 VALUES 不可跟多行。 expression 赋予对应column的一个有效表达式或值。 向表中字段插入单引号(')时需要使用单引号对自身进行转义。 如果插入行的表达式不是正确的数据类型,系统将自动进行类型转换,若转换失败,则插入数据失败,系统返回错误信息。 不支持聚集函数。 不支持子查询。 DEFAULT 对应字段名的缺省值。如果没有缺省值,则为NULL。 subquery 一个查询语句(SELECT语句),将查询结果作为插入的数据,不可省略,如果没有子查询可以使用SELECT * FROM DUAL。 如果子查询带表别名,不可在CONDITION子句和INTO子句中引用该别名。
  • hadr_primary_cluster_name 参数说明:标识容灾中当前主集群的集群名称。用于1个主集群连接两个备集群的异地流式容灾部署下的主集群识别。 当流式容灾备集群的首备的hadr_primary_cluster_name配置为“invalid_cluster_uuid”时,将不再启动与主集群的日志同步,备集群将持续处于断连状态。 参数类型:字符串 参数单位:无 取值范围:合法的集群名称。 默认值:"" 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:容灾集群的识别参数,容灾流程使用,用户可读,不建议用户修改。 设置不当的风险与影响:手动修改可能造成容灾功能异常。
  • cluster_name 参数说明:标识当前集群的集群名称。 集群名称cluster_name不可设置为“invalid_cluster_uuid”。 参数类型:字符串 参数单位:无 取值范围:合法的集群名称。 默认值:"" 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:该参数在容灾流程使用,容灾集群依赖该参数进行集群识别,用户可读,不建议用户修改。 设置不当的风险与影响:手动修改可能造成容灾功能异常。
  • RepOriginId 参数说明:该参数是一个会话级别的GUC参数,在双向逻辑复制的场景下,为避免数据循环复制,需要设置为一个非0的值。 参数类型:整型 参数单位:无 取值范围:0 ~ 2147483647‬ 默认值:0 设置方式:该参数属于USERSET类型参数,请参考表2中的方式三进行设置。 设置建议:在双向逻辑复制的场景下,需要设置为一个非0的值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • auto_csn_barrier 参数说明:流式容灾的主集群和GTM LITE集群是否开启barrier打点功能。 参数类型:布尔型 参数单位:无 取值范围: on:表示开启。 off:表示关闭。 默认值:off 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:容灾流程中会自动设置开启,不建议用户手动关闭。GTM LITE集群开启备机读功能,需要设置该参数为ON。 设置不当的风险与影响:关闭后,影响灾备集群和GTM LITE集群备机读数据一致性。
  • enable_roach_standby_cluster 参数说明:设置双集群中备集群的各个实例是否为只读模式,仅sysadmin用户可以访问。 参数类型:布尔型 参数单位:无 取值范围: on:表示备集群开启只读模式。 off:表示备集群关闭只读模式。此情况下,备集群可读可写。 默认值:off 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:备份恢复使用,不建议用户修改。 设置不当的风险与影响:修改该参数取值可能导致集群出现意料之外的结果,请保持默认值。
  • hadr_process_type 参数说明:基于流式复制异地容灾解决方案或者同城双中心高可用方案的流程标识。 参数类型:枚举类型 参数单位:无 取值范围: none:表示当前无流程。 failover:表示当前处于灾备集群升主流程。 switchover_promote:表示主备集群倒换流程中灾备集群升主流程。 switchover_demote:表示主备集群倒换流程中主集群降为灾备集群流程。 dorado_failover:表示dorado灾备集群升主流程。 dorado_switchover_demote:表示dorado主备集群倒换流程中主集群降为灾备集群流程。 dorado_failover_abnormal:表示dorado主集群共享盘故障时,灾备集群升主流程。 dorado_failover_in_standby_stream:表示同城双中心高可用支持基于流式复制异地容灾解决方案中异地集群为容灾主集群时,dorado备集群升为dorado主集群(同时为异地容灾-灾备集群)流程。 dorado_failover_abnormal_in_standby_stream:表示同城双中心高可用支持基于流式复制异地容灾解决方案中异地集群为异地容灾主集群且dorado主集群(同时为异地容灾-灾备集群)共享盘故障时,dorado备集群升为dorado主集群(同时为异地容灾-灾备集群)流程。 默认值:none 设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 设置建议:容灾集群的状态参数,内部流程使用,用户可读,不建议用户修改。 设置不当的风险与影响:手动修改会造成灾备集群异常。
  • stream_cluster_run_mode 参数说明:流式容灾双集群容灾场景,标识CN/DN节点属于主集群还是备集群。 参数类型:枚举类型 参数单位:无 取值范围: cluster_primary:表示节点是主集群的节点。 cluster_standby:表示节点是备集群的节点。 默认值:cluster_primary 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:此参数为容灾集群的状态参数,内部流程使用,用户可读,不建议用户修改。 设置不当的风险与影响:手动修改会造成灾备集群异常。
  • 分区剪枝相关信息 Partition Iterator 分区迭代器,通常代表子查询是对分区的操作。 Iterations 分区迭代算子对一级分区的迭代次数。如果显示PART则为动态剪枝场景。 例如:Iterations: 4表示迭代算子需要遍历4个一级分区。Iterations: PART表示遍历一级分区个数需要由分区键上的参数条件决定。 Selected Partitions 一级分区剪枝的结果,m..n表示m到n号分区被剪枝选中,多个不连续的分区由逗号连接。 例如:Selected Partitions: 2..4,7 表示2、3、4、7四个分区被选中。 Sub Iterations 分区迭代算子对二级分区的迭代次数。如果显示PART则为动态剪枝场景。 例如:Sub Iterations: 4表示迭代算子需要遍历4个二级分区。Iterations: PART表示遍历二级分区个数需要由分区键上的参数条件决定。 Selected Subpartitions 二级分区被剪枝的结果,由一级分区序号:二级分区序号的格式展示。 例如:Selected Subpartitions: 2:1 3:2 表示第二个一级分区的1号二级分区和第三个一级分区的2号二级分区被选中。Selected Subpartitions: ALL表示所有二级分区均被选中。
  • 表访问方式 Seq Scan 全表顺序扫描。 Index Scan 索引扫描,优化器决定使用两步的规划:最底层的规划节点访问一个索引,找出匹配索引条件的行的位置,然后上层规划节点真实地从表中抓取出那些行。独立地抓取数据行比顺序地读取它们的开销高很多,但是因为并非所有表的页面都被访问了,这么做实际上仍然比一次顺序扫描开销要少。使用两层规划的原因是,上层规划节点在读取索引标识出来的行位置之前,会先将它们按照物理位置排序,这样可以最小化独立抓取的开销。 如果在WHERE里面使用的好几个字段上都有索引,那么优化器可能会使用索引的AND或OR的组合。但是这么做要求访问两个索引,因此与只使用一个索引,而把另外一个条件只当作过滤器相比,这个方法未必是更优。 索引扫描可以分为以下几类,它们之间的差异在于索引的排序机制。 Bitmap Index Scan 使用位图索引抓取数据页。 Index Scan using index_name 使用简单索引搜索,该方式按照索引键的顺序在索引表中抓取数据。该方式最常用于在大数据量表中只抓取少量数据的情况,或者通过ORDER BY条件匹配索引顺序的查询,以减少排序时间。 Index-Only Scan 当需要的所有信息都包含在索引中时,仅索引扫描便可获取所有数据,不需要引用表。 Bitmap Heap Scan 从其他操作创建的位图中读取页面,过滤掉不符合条件的行。位图堆扫描可避免随机I/O,加快读取速度。 TID Scan 通过TupleID扫描表。 Index Ctid Scan 通过Ctid上的索引对表进行扫描。 CTE Scan CTE对子查询的操作进行评估并将查询结果临时存储,相当于一个临时表。CTE Scan算子对该临时表进行扫描。 Foreign Scan 从远程数据源读取数据。 Function Scan 获取函数返回的结果集,将它们作为从表中读取的行并返回。 Sample Scan 查询并返回采样数据。 Subquery Scan 读取子查询的结果。 Values Scan 作为VALUES命令的一部分读取常量。 WorkTable Scan 工作表扫描。在操作中间阶段读取,通常是使用WITH RECURSIVE声明的递归操作。
  • 表连接方式 Nested Loop 嵌套循环,适用于被连接的数据子集较小的查询。在嵌套循环中,外表驱动内表,外表返回的每一行都要在内表中检索找到它匹配的行,因此整个查询返回的结果集不能太大(不能大于10000),要把返回子集较小的表作为外表,而且在内表的连接字段上建议要有索引。 (Sonic) Hash Join 哈希连接,适用于数据量大的表的连接方式。优化器使用两个表中较小的表,利用连接键在内存中建立hash表,然后扫描较大的表并探测散列,找到与散列匹配的行。Sonic和非Sonic的Hash Join的区别在于所使用hash表结构不同,不影响执行的结果集。 Merge Join 归并连接,通常情况下执行性能差于哈希连接。如果源数据已经被排序过,在执行归并连接时,并不需要再排序,此时归并连接的性能优于哈希连接。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全