华为云用户手册

  • pdb_transaction_read_only 参数说明:设置当前PDB事务是否为只读事务。 参数类型:布尔型 参数单位:无 取值范围: on:表示当前PDB事务为只读状态。 off:表示当前PDB事务为非只读状态。 默认值:off 设置方式:该参数属于PDB_SIGHUP类型参数,请参考16.2-表 GUC参数分类中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:该参数设为on后,无法执行dml操作和写事务。
  • backend_resource_attr 参数说明:用于控制后台线程CPU功能的详细属性,修改后台线程cgroup的share和quota的值,该参数仅在enable_mtd打开后生效,仅sysadmin用户可以访问。 参数类型:字符串 参数单位:无 取值范围:该参数分为四个部分,'backend_total_share, backend_total_quota, backend_share,vacuum_share',这四个部分的具体含义如下: backend_total_share:后台线程占整个实例的百分比。 取值范围:1~99。默认值40,代表后台线程总占比是40%。 后台线程占比大小推荐根据硬件配置设置。后台线程比例和租户比例之和保持100%。 根据计算公式 backend_total_share = 100*x/(x+ceil(集群的CPU核数*1.1)),得出的x*1024就是配置到Backend控制组的share值。 举例:backend_total_share=40,cpu核数16U,通过上述公式计算得出share值是12288。 backend_total_quota:后台线程总体可以使用的CPU个数。 取值范围:0~数据库实例CPU核数。其中0表示后台线程没有CPU上限控制;如果参数值大于0,表示后台线程可以使用的CPU核数不能超过这个值。 backend_share:后台线程中除了vacuum线程之外线程的权重。举例:backend_share=80,在DefaultBackend控制组里面share生效值就是80*1024。 取值范围:1~99。 vacuum_share:vacuum的线程权重。举例:vacuum_share=20,在Vacuum控制组里面share生效值就是20*1024。 取值范围:1~99。 默认值:"40, 0, 80, 20" 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,64核CPU/512G内存,60核CPU/480G内存,32核CPU/256G内存)"40.round(核数*0.05).80.20";(16核CPU/128G内存)"40.1.80.20"。 设置不当的风险与影响:设置share或者quota过低,会减少后台线程的cpu使用的时间片,导致后台线程业务处理不及时造成租户的公共业务等待。设置过高的话,租户的可以用CPU资源会减少。
  • 语法格式 更改操作符的所有者。 ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) OWNER TO new_owner; 更改操作符的模式。 ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) SET SCHEMA new_schema;
  • 示例 --创建函数。 gaussdb=# CREATE FUNCTION func_add(num1 integer, num2 integer) RETURN INTEGER AS BEGIN RETURN num1+num2; END; / --创建操作符。 gaussdb=# CREATE OPERATOR @@@ (PROCEDURE = func_add,LEFTARG = int,RIGHTARG = int); --创建用户。 gaussdb=# CREATE USER user1 PASSWORD '********'; --修改操作符。 gaussdb=# ALTER OPERATOR @@@ (int,int) OWNER to user1; --创建SCHEMA。 gaussdb=# CREATE SCHEMA oper_sch; --修改操作符。 gaussdb=# ALTER OPERATOR @@@ (int,int) SET SCHEMA oper_sch; --删除。 gaussdb=# DROP OPERATOR oper_sch.@@@(int,int); gaussdb=# DROP SCHEMA oper_sch; gaussdb=# DROP USER user1; gaussdb=# DROP FUNCTION func_add;
  • 参数说明 PUBLIC 指定公共以创建对所有用户可见的公共数据库链接。如果省略此子句,则数据库链接是私有的,仅对当前用户可用。 dblink 要创建的DATABASE LINK的名字。 user 创建的DATABASE LINK连接远端使用的用户名。 password 创建的DATABASE LINK连接远端使用的用户对应的密码。 CURRENT_USER 使用当前数据库初始用户名和空密码连接。 USING ( option 'value' [, ... ] ) USING可选择指定要连接的数据库的IP地址、端口号、远端的database name等参数 ,支持的options包括: host:指定连接的地址。支持以 ‘,’分割的字符串来指定多个IP地址,当前不支持密态数据库,不指定默认为空。 port:指定连接的端口号,不指定默认为5432。 dbname:指定连接的数据库名称,不指定默认为连接远端使用的用户名。 fetch_size:从远端每次获取数据量大小,fetch_size取值为0到2147483647,默认为100。 USING后的括号可以只选择上述关键字中的一部分去写。 USING关键字也可以不写,同时之后的括号也不要再写。 DATABASE LINK创建的时候不会去验证是否能连接成功,如果缺乏相关的关键字,可能会在使用时报错。
  • 示例 --创建拥有系统管理员权限的用户。 gaussdb=# CREATE USER user1 WITH SYSADMIN PASSWORD '********'; gaussdb=# SET ROLE user1 PASSWORD '********'; --创建私有dblink,host也可以是IPv6地址。 gaussdb=# CREATE DATABASE LINK private_dblink CONNECT TO 'user1' IDENTIFIED BY '********' USING (host '192.168.11.11',port '54399',dbname 'db01'); --删除私有dblink。 gaussdb=# DROP DATABASE LINK private_dblink; --创建公共dblink,host也可以是IPv6地址。 gaussdb=# CREATE PUBLIC DATABASE LINK public_dblink CONNECT TO 'user1' IDENTIFIED BY '********' USING (host '192.168.11.11',port '54399',dbname 'db01'); --删除公共dblink。 gaussdb=# DROP PUBLIC DATABASE LINK public_dblink; --删除创建出的用户。 gaussdb=# RESET ROLE; gaussdb=# DROP USER user1;
  • 注意事项 DATABASE LINK特性只能在A兼容版本下使用。 禁止使用DATABASE LINK连接初始用户。 禁止初始用户创建、修改和删除DATABASE LINK对象。 升级未提交情况下无法创建使用DATABASE LINK。 当使用CURRENT_USER或CONNECT TO连接串省略时,使用当前数据库初始用户名和空密码连接,使用时会连接失败。 连接 GaussDB 时使用localhost、127.0.0.1或本机ip及对应端口可连接当前实例数据库。
  • MY_VIEWS MY_VIEWS视图显示当前用户的所有视图信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 MY_VIEWS字段 名称 类型 描述 owner character varying(64) 视图的所有者。 view_name character varying(64) 视图名称。 text text 视图文本。 text_length integer 视图文本长度。 text_vc character varying(4000) 视图创建语句。此列可能会截断视图文本。BEQUEATH子句将不会作为此视图中的TEXT_VC列的一部分出现。 type_text_length numeric 暂不支持,值为NULL。 type_text character varying(4000) 暂不支持,值为NULL。 oid_text_length numeric 暂不支持,值为NULL。 oid_text character varying(4000) 暂不支持,值为NULL。 view_type_owner character varying(128) 暂不支持,值为NULL。 view_type character varying(128) 暂不支持,值为NULL。 superview_name character varying(128) 暂不支持,值为NULL。 editioning_view character varying(1) 暂不支持,值为NULL。 read_only character varying(1) 暂不支持,值为NULL。 container_data character varying(1) 暂不支持,值为NULL。 bequeath character varying(12) 暂不支持,值为NULL。 origin_con_id character varying(256) 暂不支持,值为NULL。 default_collation character varying(100) 暂不支持,值为NULL。 containers_default character varying(3) 暂不支持,值为NULL。 container_map character varying(3) 暂不支持,值为NULL。 extended_data_link character varying(3) 暂不支持,值为NULL。 extended_data_link_map character varying(3) 暂不支持,值为NULL。 has_sensitive_column character varying(3) 暂不支持,值为NULL。 admit_null character varying(3) 暂不支持,值为NULL。 pdb_local_only character varying(3) 暂不支持,值为NULL。 父主题: 其他系统视图
  • GS_ILM_POLICY GS_ILM_POLICY系统表提供了记录策略动作类型、判定条件等。 表1 GS_ILM_POLICY字段 名称 类型 描述 pidx integer 策略序号。 action "char" 策略动作:仅支持压缩(‘c’)。 ctype "char" 压缩类型:仅支持高级行压缩(‘a’)。 condition "char" 判定条件类型:仅支持LAST MODIFICATION(‘m’)。 days smallint 判定天数量。 scope "char" 策略作用域:仅支持Row(‘r’)。 predicate pg_node_tree 策略行级表达式。 父主题: OLTP表压缩
  • 示例 前置条件。 请参见CREATE PLUGGABLE DATABASE章节的示例完成PDB的创建。 删除PDB。 --如果PDB状态是open时,无法进行删除,需要先关闭该PDB。 gaussdb=# alter pluggable database my_pdb close immediate; ALTER PLUGGABLE DATABASE --使用系统管理员连接postgres数据库,删除已经关闭的PDB。 gaussdb=# drop pluggable database my_pdb including datafiles; DROP PLUGGABLE DATABASE
  • 注意事项 只能在GUC参数enable_mtd为on的状态下使用。 只能在非PDB中进行该操作。不可在M兼容数据库中执行该命令。 操作用户需要为PDB属主(见系统表pg_database.datdba)或拥有sysadmin权限。 需要先使用ALTER PLUGGABLE DATABASE语句将PDB进行关闭后,方可进行删除操作。 无法使用该语句删除模板PDB(template_pdb)。 删除PDB时,不会删除与其关联的资源计划指令(Resource Plan Directive)对象。
  • DB_TAB_COL_STATIS TICS DB_TAB_COL_STATISTI CS 视图显示从DB_TAB_COLUMNS中提取的列统计信息和直方图信息。所有用户都可以访问该视图。该视图同时存在于PG_CATALOG和SYS Schema下。该视图在LOW_VALUE、HIGH_VALUE字段,由于底层表结构不同原因,与A数据库取值有差异,当LOW_VALUE为高频值时,GaussDB的LOW_VALUE为次小值。当HIGH_VALUE为高频值时,GaussDB的HIGH_VALUE为次高值。HISTOG RAM 字段,由于统计方式不同原因,与A数据库取值有差异,GaussDB只支持两种类型直方图frequency,equi-width。SCOPE字段,由于GaussDB不支持全局临时表统计原因,与A数据库取值有差异,GaussDB只支持本地临时表信息统计,默认置SHARED。 表1 DB_TAB_COL_STATISTICS字段 名称 类型 描述 owner character varying(128) 表的所有者。 table_name character varying(128) 表名。 column_name character varying(128) 列名。 num_distinct numeric 列中不同值的数量。 low_value raw 列中的低值。 high_value raw 列中的高值。 density numeric 如果COLUMN_NAME上有直方图,则此列将显示直方图中跨越少于2个端点的值的选择性。它不代表跨越2个或更多端点的值的选择性。 如果COLUMN_NAME上没有可用的直方图,则该列的值为1/NUM_DISTINCT。 num_nulls numeric 列中空值数。 num_buckets numeric 列的直方图中的桶数。 sample_size numeric 用于分析此列的样本量。 last_analyzed timestamp(0) without time zone 最近分析此列的日期,数据库重启后,数据会丢失。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 notes character varying(99) 暂不支持,值为NULL。 avg_col_len numeric 列的平均长度(以字节为单位)。 histogram character varying(15) 表示直方图是否存在以及存在的类型: NONE:表示不存在直方图。 FREQUENCY:表示频率直方图。 EQUI-W IDT H:表示等宽直方图。 scope character varying(7) 对于在除全局临时表之外的任何表上收集的统计信息,该值是SHARED(表示统计信息在所有会话之间共享)。 schema character varying(64) 列所属的名称空间的名称。 父主题: 其他系统视图
  • 执行计划显示信息 除了设置不同的执行计划显示格式外,还可以通过不同的EXPLAIN用法,显示不同详细程度的执行计划信息。常见有如下几种,关于更多用法请参见EXPLAIN语法说明。 EXPLAIN statement:只生成执行计划,不实际执行。其中statement代表SQL语句。 EXPLAIN ANALYZE statement:生成执行计划,进行执行,并显示执行的概要信息。显示中加入了实际的运行时间统计,包括在每个规划节点内部花费的总时间(以毫秒计)和它实际返回的行数。 EXPLAIN PERFORMANCE statement:生成执行计划,进行执行,并显示执行期间的全部信息。 为了测量运行时在执行计划中每个节点的开销,EXPLAIN ANALYZE或EXPLAIN PERFORMANCE会在当前查询执行上增加性能分析的开销。在一个查询上运行EXPLAIN ANALYZE或EXPLAIN PERFORMANCE有时会比普通查询明显地花费更多的时间。超出的时间多少取决于查询本身复杂程度和使用的平台。 因此,当定位SQL运行慢问题时,如果SQL长时间运行未结束,建议通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出结果,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及其实际的运行信息,以便更精确地定位问题原因。
  • 选择数据类型 在字段设计时,基于查询效率的考虑,一般需要遵循以下原则: 尽量使用高效数据类型。 选择数值类型时,在满足业务精度的情况下,选择数据类型的优先级从高到低依次为整数、浮点数、NUMERIC。 当多个表存在逻辑关系时,表示同一含义的字段应该使用相同的数据类型。 对于字符串数据,建议使用变长字符串数据类型,并指定最大长度。请务必确保指定的最大长度大于需要存储的最大字符数,避免出现超出字段定义最大长度的异常报错而导致业务中断现象。除非明确知道数据类型为固定长度字符串,否则,不建议使用CHAR(n)、BPCHAR(n)、NCHAR(n)、CHARACTER(n)。 关于字符串类型的详细说明,请参见常用字符串类型介绍。
  • PG_STAT_BAD_BLOCK PG_STAT_BAD_BLOCK视图显示自节点启动后,读取数据时出现Page校验失败的统计信息。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 PG_STAT_BAD_BLOCK字段 名称 类型 描述 nodename text 节点名。 databaseid integer 数据库OID。 tablespaceid integer 表空间OID。 relfilenode integer 文件对象ID。 bucketid smallint 一致性hash bucket ID。 forknum integer 文件类型。取值如下: 0:数据主文件。 1:FSM文件。 2:VM文件。 3:BCM文件。 error_count integer 出现校验失败的次数。 first_time timestamp with time zone 第一次出现时间。 last_time timestamp with time zone 最后一次出现时间。 父主题: 其他系统视图
  • LOCAL_ACTIVE_SESSION LOCAL_ACTIVE_SESSION视图显示本节点上的ACTIVE SESSION PROFILE内存中的样本,如表1所示。 表1 LOCAL_ACTIVE_SESSION字段 名称 类型 描述 sampleid bigint 采样ID。 sample_time timestamp with time zone 采样的时间。 need_flush_sample boolean 该样本是否需要刷新到磁盘。 databaseid oid 数据库ID。 thread_id bigint 线程的ID。 sessionid bigint 会话的ID。 start_time timestamp with time zone 会话的启动时间。 event text 具体的事件名称。 lwtid integer 当前线程的轻量级线程号。 psessionid bigint streaming线程的父线程。 tlevel integer streaming线程的层级。与执行计划的层级(id)相对应。 smpid integer smp执行模式下并行线程的并行编号。 userid oid session用户的id。 application_name text 应用的名称。 client_addr inet client端的地址。 client_hostname text client端的名称。 client_port integer 客户端用于与后端通讯的TCP端口号。 query_id bigint debug query id。 unique_query_id bigint unique query id。 user_id oid unique query的key中的user_id。 cn_id integer cn id,在DN上表示下发该unique sql的节点id,unique query的key中的cn_id。 unique_query text 规范化后的UniqueSQL文本串。 locktag text 会话等待锁信息,可通过locktag_decode解析。 lockmode text 会话等待锁模式。 block_sessionid bigint 如果会话正在等待锁,阻塞该会话获取锁的会话标识。 final_block_sessionid bigint 表示源头阻塞会话id。 wait_status text 描述event列的更多详细信息。 global_sessionid text 全局会话ID。 xact_start_time timestamp with time zone 事务开始时间。 query_start_time timestamp with time zone 语句开始执行时间。 state text 当前语句状态。 可能取值为:active、idle in transaction、fastpath function call、idle in transaction (aborted)、disabled、retrying。 event_start_time timestamp with time zone wait event的开始时间。 current_xid xid 当前事务ID。 top_xid xid 顶层事务ID。 parent_unique_sql_id bigint 调用本条语句的父语句SQL_Id。 control_status text 当进行异常SQL CPU资源管控时为under_cpu_throttle,否则为normal。 top_unique_query_id bigint 该字段展示存储过程顶层SQL的unique_query_id。 top_unique_query text 该字段展示存储过程顶层SQL的unique_query语句。 父主题: Session/Thread
  • GS_LOGICAL_CONSTRAINT GS_LOGICAL_CONSTRAINT系统表记录逻辑解码需要使用的表上的检查约束、主键和唯一约束。 表1 GS_LOGICAL_CONSTRAINT字段 名称 类型 描述 conname name 约束名称(不一定是唯一的)。 connamespace oid 包含这个约束的名称空间的OID。 contype "char" c:检查约束。 p:主键约束。 u:唯一约束。 t:触发器约束。 x:互斥约束。 f:外键约束。 s:聚簇约束。 i:无效约束。 condeferrable boolean 这个约束是否可以推迟。 true:表示可以。 false:表示不可以。 condeferred boolean 缺省时这个约束是否可以推迟。 true:表示可以。 false:表示不可以。 convalidated boolean 约束是否有效。目前,只有外键和CHECK约束可将其设置为false。 true:表示有效。 false:表示无效。 conrelid oid 这个约束所在的表,如果不是表约束则为0。 contypid oid 这个约束所在的域,如果不是一个域约束则为0。 conindid oid 与约束关联的索引ID。 confrelid oid 如果是外键,则为参考的表,否则为0。 confupdtype "char" 外键更新动作代码。 a:没动作。 r:限制。 c:级联。 n:设置为null。 d:设置为缺省。 confdeltype "char" 外键删除动作代码。 a:没动作。 r:限制。 c:级联。 n:设置为null。 d:设置为缺省。 confmatchtype "char" 外键匹配类型。 f:全部。 p:部分。 u:未指定(在f的基础上允许匹配NULL值)。 conislocal boolean 是否是为关系创建的本地约束。 true:表示是。 false:表示不是。 coninhcount integer 约束直接继承父表的数目。继承父表数非零时,不能删除或重命名该约束。 connoinherit boolean 是否可以被继承。 true:表示可以。 false:表示不可以。 consoft boolean 是否为信息约束(Informational Constraint)。 true:表示是。 false:表示不是。 conopt boolean 是否使用信息约束优化执行计划。 true:表示使用。 false:表示不使用。 csnmin bigint 插入元组时的CSN(提交序列号)。 csnmax bigint 更新或删除元组时的CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 dbnode oid 数据库OID。 constroid oid 行标识符。 conkey smallint[] 如果是表约束,则是约束控制的字段列表。 confkey smallint[] 如果是一个外键,是参考的字段的列表。 conpfeqop oid[] 如果是一个外键,是做PK=FK比较的相等操作符ID的列表。 conppeqop oid[] 如果是一个外键,是做PK=PK比较的相等操作符ID的列表。 conffeqop oid[] 如果是一个外键,是做FK=FK比较的相等操作符ID的列表。 conexclop oid[] 如果是一个排他约束,是列的排他操作符ID列表。 consrc text 如果是检查约束,则是表达式的可读形式。 conincluding smallint[] 不用做约束,但是会包含在INDEX中的属性列。 父主题: 逻辑解码
  • 声明段 要实现嵌入式SQL-C程序和数据库间的数据交互(例如:从SQL-C程序把查询语句中的参数传递给数据库,或者从数据库向嵌入式SQL-C程序传回数据),需要在特殊的标记段里面声明包含此数据的C语言变量,以便预处理器能够识别。 标记段以下面的代码开始: EXEC SQL BEGIN DECLARE SECTION; 以下面的代码结束: EXEC SQL END DECLARE SECTION; 在此之间,必须有常规的C语言变量声明,比如: int x = 4; char foo[16], bar[16]; 标记段代码开始和结束之间声明的宿主变量类型必须为当前支持的数据类型,请参见表1。 可以隐式地创建一个声明段声明变量:EXEC SQL int i = 4。 不在SQL命令里使用的变量可以在特殊的声明段外面声明。 结构体或者联合体的定义也必须在DECLARE段中列出,否则预处理器就无法处理这些类型。 父主题: 宿主变量
  • 示例 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 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 --建表 gaussdb=# CREATE SCHEMA hr; CREATE SCHEMA gaussdb=# SET CURRENT_SCHEMA = hr; SET gaussdb=# CREATE TABLE staffs ( section_id INTEGER, salary INTEGER ); CREATE TABLE gaussdb=# INSERT INTO staffs VALUES (30, 10); INSERT 0 1 gaussdb=# INSERT INTO staffs VALUES (30, 20); INSERT 0 1 --创建存储过程proc_staffs gaussdb=# CREATE OR REPLACE PROCEDURE proc_staffs ( section NUMBER(6), salary_sum out NUMBER(8,2), staffs_count out INTEGER ) IS BEGIN SELECT sum(salary), count(*) INTO salary_sum, staffs_count FROM hr.staffs where section_id = section; END; / CREATE PROCEDURE --创建存储过程proc_return. gaussdb=# CREATE OR REPLACE PROCEDURE proc_return AS v_num NUMBER(8,2); v_sum INTEGER; BEGIN proc_staffs(30, v_sum, v_num); --调用语句 dbe_output.print_line(v_sum||'#'||v_num); RETURN; --返回语句 END; / CREATE PROCEDURE --调用存储过程proc_return. gaussdb=# CALL proc_return(); 30#2.00 proc_return ------------- (1 row) --清除存储过程 gaussdb=# DROP PROCEDURE proc_staffs; DROP PROCEDURE gaussdb=# DROP PROCEDURE proc_return; DROP PROCEDURE gaussdb=# DROP TABLE staffs; DROP TABLE
  • PG_LARGEOBJECT PG_LARGEOBJECT系统表保存那些标记着“大对象”的数据。一个大对象是使用其创建时分配的OID标识的。每个大对象都分解成足够小的小段或者“页面”以便以行的形式存储在PG_LARGEOBJECT里。每页的数据定义为LOBLKSIZE。 需要有系统管理员权限才可以访问此系统表。 表1 PG_LARGEOBJECT字段 名称 类型 引用 描述 loid oid PG_LARGEOBJECT_METADATA.oid 包含本页的大对象的标识符。 pageno integer - 本页在其大对象数据中的页码,从零开始计算。 data bytea - 存储在大对象中的实际数据。这些数据绝不会超过LOBLKSIZE字节,而且可能更少。 PG_LARGEOBJECT的每一行保存一个大对象的一个页面,从该对象内部的字节偏移(pageno * LOBLKSIZE)开始。这种实现允许松散的存储:页面可以丢失,而且可以比LOBLKSIZE字节少(即使它们不是对象的最后一页)。大对象内丢失的部分读做零。 父主题: 其他系统表
  • max_undo_workers 参数说明:异步回滚调用的undoworker线程数量,参数重启生效。 参数类型:整型 参数单位:无 取值范围:1 ~ 100 默认值:5 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:只影响同时并发进行异步回滚的最大线程数,设置过小可能会导致异步回滚速度慢,在系统中存在大量需要异步回滚的事务时,极低概率会影响 undo 回收的速度。当机器配置不高,系统中又存在大量需要异步回滚的事务时,该值设置过大会导致同时拉起的异步回滚线程数多,占用一定的系统资源。
  • 算子说明 行号扫描,该算子主要利用行号(ctid)过滤元组并返回。ASTORE场景下,数据按行存储在HEAP PAGE中,在B-tree 索引中除了存储字段的value,还会存储对应的行号,因此GaussDB中支持通过行号进行快速检索。 行号的写法为: (page_number,item_number) -- page_number从0开始编号,item_number从1开始编号 通过给定的ctid值找到在磁盘或缓存中对应的元组。
  • 操作符类型解析 从系统表pg_operator中选出要考虑的操作符。如果可以找到一个参数类型以及参数个数都一致的操作符,那么这个操作符就是最终使用的操作符。如果找到了多个备选的操作符,将从中选择一个最合适的。 寻找最优匹配。 抛弃那些输入类型不匹配并且也不能隐式转换成匹配的候选操作符。unknown文本在这种情况下可以转换成任何东西。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选操作符,保留那些输入类型匹配最准确的。此时,域类型看做和域类型的基本类型相同。如果没有一个操作符能被保留,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选操作符,保留那些需要类型转换时接受(属于输入数据类型的类型范畴的)首选类型位置最多的操作符。如果没有接受首选类型的操作符,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 如果有任何输入参数是unknown类型,检查剩余的候选操作符对应参数位置的类型范畴。在每一个能够接受字符串类型范畴的位置使用string类型(这种对字符串的偏爱是合适的,因为unknown文本确实像字符串)。如果所有剩下的候选操作符都接受相同的类型范畴,则选择该类型范畴,否则抛出一个错误(因为在没有更多线索的条件下无法作出正确的选择)。现在抛弃不接受选定的类型范畴的候选操作符,如果任意候选操作符在某个给定的参数位置接受一个首选类型,则抛弃那些在该参数位置接受非首选类型的候选操作符。如果没有一个操作符能被保留,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 如果同时有unknown和已知类型的参数,并且所有已知类型的参数都是相同的类型,那么假设unknown参数也是那种类型,并检查哪一个候选操作符在unknown参数位置接受该类型。如果只有一个操作符符合,那么使用它。否则产生一个错误。 在找到一个操作符后,如果输入的参数类型和操作符的参数类型不一致,可能会发生隐式类型转换,转换后可能发生不可预知的行为。如果隐式转换后行为有问题,可以通过显式类型转换规避此问题。例如,定长类型bpchar转换为变长类型text后,会消除字符串行尾空格,如果再和其它字符串比较时可能会发生错误行为。
  • PG_DEFAULT_ACL PG_DEFAULT_ACL系统表存储为新建对象设置的初始权限。 表1 PG_DEFAULT_ACL字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 defaclrole oid 与此权限相关的角色ID。 defaclnamespace oid 与此权限相关的名称空间,如果没有,则为0。 defaclobjtype "char" 此权限的对象类型。 r表示表或视图。 S表示序列。 f表示函数。 T表示类型。 K表示客户端主密钥。 k表示列加密密钥。 defaclacl aclitem[] 创建该类型时所拥有的访问权限。 父主题: 用户和权限管理
  • DB4AI.ARCHIVE_SNAPSHOT ARCHIVE_SNAPSHOT是DB4AI特性用于存档快照的接口函数,如表1所示。通过语法ARCHIVE SNAPSHOT调用。生效后的快照无法参与训练等任务。 表1 DB4AI.ARCHIVE_SNAPSHOT入参和返回值列表 参数 类型 描述 i_schema IN NAME 快照存储的模式名字,默认值是当前用户。 i_name IN NAME 快照名称。 res OUT db4ai.snapshot_name 结果。 父主题: DB4AI Schema
  • 注意事项 CREATE OPERATOR CLASS定义一个新的操作符类。一个操作符类定义一种特定的数据类型如何与一种索引一起使用。操作符类声明特定的操作符可以为这种数据类型以及索引方法提供特定的角色或者"策略"。当索引列选择定义的操作符类时,操作符类还声明索引方法使用的支持程序。所有操作符类使用的函数和操作符都必须在创建操作符类之前定义。 如果指定了模式,那么操作符类就在指定的模式中创建。否则就在当前模式中创建。在同一个模式中的两个操作符类可以有同样的名字,但它们必须用于不同的索引方法。 定义操作符类的用户将成为其所有者。目前,创建用户必须是初始用户。 CREATE OPERATOR CLASS既不检查这个类定义是否包含所有索引方法需要的操作符以及函数,也不检查这些操作符和函数是否形成一个自包含的集合。 相关的操作符类可以集合成操作符族。添加一个新的操作符类到一个已经存在的操作符族,在CREATE OPERATOR CLASS中指定FAMILY选项。没有这个选项时,新建的类会放置到与它同名的族中(如果不存在则创建它)。
  • 参数说明 name 将要创建的操作符类的名字(可以用模式修饰)。 default 如果存在,表示该操作符类将成为它的数据类型的缺省操作符类。 对于某个数据类型和访问方式而言,最多有一个操作符类是缺省的。 data_type 操作符类处理的字段的数据类型。 index_method 操作符类处理的索引方法的名字。 family_name 操作符类添加到的现有操作符族的名字。如果没有指定,则使用与该操作符类相同名字的操作符族(如果不存在则创建它)。 strategy_number 与运算符类关联的索引方法的策略编号。 operator_name 和该操作符类关联的操作符的名字(可以用模式修饰)。 op_type 在OPERATOR子句中,表示该操作符的操作数的数据类型,或NONE表示左一元运算符或右一元运算符。在与运算符类的数据类型相同的正常情况下,可以省略操作数数据类型。 在FUNCTION子句中,如果函数的操作数数据类型和函数的输入数据类型(对于B-tree比较函数和哈希函数)或类的数据类型不同, 那么就在该子句中写上这个函数要支持的操作数类型。这些缺省是正确的, 因此op_type 不需要在FUNCTION子句中指定, 除了B-tree排序支持函数支持交叉数据类型比较的情况。 sort_family_name 描述与排序操作符相关的排序顺序的现有btree 操作符族的名字。 缺省时是FOR SEARCH。 support_number 与运算符类关联的函数的索引方法的编号。 function_name 运算符类的索引方法的函数名称。 argument_type 函数参数的数据类型。 storage_type 实际存储在索引里的数据类型。通常它和字段数据类型相同, 但是一些索引方法允许它是不同的。 除非索引方法允许使用不同的类型,否则必须省略STORAGE子句。
  • 语法格式 CREATE OPERATOR CLASS name [ DEFAULT ] FOR TYPE data_type USING index_method [ FAMILY family_name ] AS { OPERATOR strategy_number operator_name [ ( op_type, op_type ) ] [ FOR SEARCH | FOR ORDER BY sort_family_name ] | FUNCTION support_number [ ( op_type [ , op_type ] ) ] function_name ( argument_type [, ...] ) | STORAGE storage_type } [, ... ];
  • 示例 --定义一个函数。 gaussdb=# CREATE FUNCTION func_add_sql(num1 integer, num2 integer) RETURN integer AS BEGIN RETURN num1 + num2; END; / --新建一个操作符类,将上述函数作为其关联的函数。 gaussdb=# CREATE OPERATOR CLASS oc1 DEFAULT FOR TYPE _int4 USING btree AS FUNCTION 1 func_add_sql (integer, integer); --删除操作符。 gaussdb=# DROP OPERATOR CLASS oc1 USING btree; --删除函数。 gaussdb=# DROP FUNCTION func_add_sql;
  • GLOBAL_PAGEWRITER_STATUS GLOBAL_PAGEWRITER_STATUS视图显示数据库实例的刷页信息和检查点信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时返回空列表。 表1 GLOBAL_PAGEWRITER_STATUS字段 名称 类型 描述 node_name text 实例名称。 pgwr_actual_flush_total_num bigint 从启动到当前时间刷脏页的总计数量。 pgwr_last_flush_num integer 上一批刷脏页数量。 remain_dirty_page_num bigint 当前预计剩余的脏页数量。 queue_head_page_rec_lsn text 当前实例的脏页队列第一个脏页的recovery_lsn。 queue_rec_lsn text 当前实例的脏页队列的recovery_lsn。 current_xlog_insert_lsn text 当前实例xLog写入的位置。 ckpt_redo_point text 当前实例的检查点。 父主题: Utility
共100000条
提示

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