华为云用户手册

  • 函数/存储过程设计规范 【规则】禁止使用存储过程、触发器等实现业务逻辑,应该将这些逻辑都放到业务服务器上处理,避免对数据库产生逻辑依赖。 【规则】业务的数据库升级脚本中,禁止使用存储过程实现升级逻辑。 【规则】仅创建对固定入参有固定返回值的函数,函数必须设为IMMUTABLE和SHIPPABLE类型。 目前数据库支持三种类型的函数,分别是IMMUTABLE、STABLE、VOLATILE。 对于IMMUTABLE类型且设置为SHIPPABLE的函数,允许在DN上执行。在大部分场景下,该函数的执行效率较高。但是此类函数要求对于固定的入参得到固定的返回值,来保证函数在DN上执行的正确性。如果函数的结果依赖对数据表的扫描结果(例如获取某个表中列的max值)或依赖时间(例如获取当前时间),那么函数应设置为STABLE或者VOLATILE,且NOT SHIPPABLE,以保证函数执行的正确性。 父主题: 数据库设计规范
  • GUC参数编程规范 【规则】客户端(如JDBC)应使用默认参数执行查询,如果需要修改会话级别的GUC参数,应谨慎评估。 通过ODBC或JDBC修改GUC参数时,需注意GUC参数仅会在当前connection中生效,特别是在连接池场景下,容易出现问题且问题定位困难。 如果在连接中必须进行GUC参数设置,那么在将连接归还给连接池之前,必须使用 SET SESSION AUTHORIZATION DEFAULT; RESET ALL; 将连接的状态清空。 父主题: 数据库编程规范
  • 索引设计规范 【规格】使用数据库索引实践推荐的索引类型。 索引设计建议使用推荐类型,如果需要使用禁用、不推荐、限制使用的索引类型,建议联系数据库专家进行评估。 表1 数据库索引实践推荐 索引类型 说明 是否推荐 主键/唯一索引 单列或多列主键/唯一索引 推荐 全局索引 索引组织方式 部分数据类型上推荐 表达式索引 索引列为表的一列或多列计算而来的一个函数或者标量表达式 限制使用 BTREE索引 索引构建类型 部分数据类型上推荐 【规则】合理设计组合索引,避免冗余。 例如已对(a,b,c)创建索引,则不应再单独对 (a)、(b)、(c)、(a,b)、(b,c)创建索引。当查询时如果只带有a字段上的过滤条件,一般也会利用组合索引进行查询。 【规则】组合索引字段个数不超过5个。 【规则】禁止总字符串长度超过200 的组合索引。 【规则】索引(包括单列索引和复合索引)字段应为NOT NULL字段。 【规则】不建议单表创建多个唯一索引。 同时维护多个唯一索引的开销远大于维护一个多列唯一索引,如果业务逻辑上多个唯一索引,与一个多列唯一索引等价,应使用多列唯一索引。 【建议】同字段上创建索引的维护效率不同。数值类型字段优于字符类型及其他数据类型,因此对于考虑创建索引的ID、时间等字段,建议使用数值类型进行存储。 【建议】应考虑在关联列上创建索引。 支持HASH JOIN,但是当内表较小等RESCAN代价较低的情况下,仍然可能选择NESTLOOP JOIN来完成关联。如果通过EXPLAIN可以查看到NESTLOOP JOIN计划,则可以通过在关联列上创建索引,提高NESTLOOP JOIN效率。 父主题: 数据库设计规范
  • 对象访问编程规范 【规则】用户在操作对象时,应该拥有该对象的操作权限。 权限说明请参考用户及权限章节,并遵循权限设计规范。 【规则】访问对象(表,函数等)时建议带上SCHEMA名称,即使用schemaname.tablename进行访问。 如果不追加SCHEMA名称前缀,会根据当前search_path中表空间列表,依次搜索所有表空间直到找到匹配的表,这会带来不必要的性能开销。 父主题: 数据库编程规范
  • 获取驱动包 单击此处获取 GaussDB 驱动包“GaussDB_driver.zip”。 单击此处获取GaussDB驱动包校验包“GaussDB_driver.zip.sha256”。 为了防止软件包在传递过程或存储期间被恶意篡改,下载软件包时需下载对应的校验包对软件包进行校验,校验方法如下: 上传软件包和软件包校验包到虚拟机(Linux操作系统)的同一目录下。 执行如下命令,校验软件包完整性。 cat GaussDB_driver.zip.sha256 | sha256sum --check 如果回显OK,则校验通过。 GaussDB_driver.zip: OK
  • 参数说明 policy_name 审计策略名称,需要唯一,不可重复; 取值范围:字符串,要符合标识符命名规范。 resource_label_name 资源标签名称。 DDL 指的是针对数据库执行如下操作时进行审计,目前支持:CREATE、ALTER、DROP、ANALYZE、COMMENT、GRANT、REVOKE、SET、SHOW、 LOG IN_ANY、LOGIN_FAILURE、LOGIN_SUC CES S、LOGOUT。 DML 指的是针对数据库执行如下操作时进行审计,目前支持:SELECT、COPY、DEALLOCATE、DELETE、EXECUTE、INSERT、PREPARE、REINDEX、TRUNCATE、UPDATE。 ALL 指的是上述DDL或DML中支持的所有对数据库的操作。当形式为{ DDL | ALL }时,ALL指所有DDL操作;当形式为{ DML | ALL }时,ALL指所有DML操作。 FILTER_TYPE 描述策略过滤的条件类型,包括APP、ROLES、IP。 filter_value 指具体过滤信息内容。 ENABLE|DISABLE 可以打开或关闭统一审计策略。若不指定ENABLE|DISABLE,语句默认为ENABLE。
  • 示例 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 --创建dev_audit和bob_audit用户。 openGauss=# CREATE USER dev_audit PASSWORD '********'; openGauss=# CREATE USER bob_audit PASSWORD '********'; --创建一个表tb_for_audit。 openGauss=# CREATE TABLE tb_for_audit(col1 text, col2 text, col3 text); --创建资源标签。 openGauss=# CREATE RESOURCE LABEL adt_lb0 ADD TABLE(tb_for_audit); --对数据库执行create操作创建审计策略。 openGauss=# CREATE AUDIT POLICY adt1 PRIVILEGES CREATE; --对数据库执行select操作创建审计策略。 openGauss=# CREATE AUDIT POLICY adt2 ACCESS SELECT; --仅审计记录用户dev_audit和bob_audit在执行针对adt_lb0资源进行的create操作数据库创建审计策略。 openGauss=# CREATE AUDIT POLICY adt3 PRIVILEGES CREATE ON LABEL(adt_lb0) FILTER ON ROLES(dev_audit, bob_audit); --仅审计记录用户dev_audit和bob_audit,客户端工具为gsql,IP地址为'10.20.30.40', '127.0.0.0/24',在执行针对adt_lb0资源进行的select、insert、delete操作数据库创建审计策略。 openGauss=# CREATE AUDIT POLICY adt4 ACCESS SELECT ON LABEL(adt_lb0), INSERT ON LABEL(adt_lb0), DELETE FILTER ON ROLES(dev_audit, bob_audit), APP(gsql), IP('10.20.30.40', '127.0.0.0/24'); --删除审计策略。 openGauss=# DROP AUDIT POLICY adt1, adt2, adt3, adt4; --删除资源标签。 openGauss=# DROP RESOURCE LABEL adt_lb0; --删除表tb_for_audit。 openGauss=# DROP TABLE tb_for_audit; --删除dev_audit和bob_audit用户。 openGauss=# DROP USER dev_audit, bob_audit;
  • 语法格式 CREATE AUDIT POLICY [ IF NOT EXISTS ] policy_name { privilege_audit_clause | access_audit_clause } [, ... ] [ filter_group_clause ] [ ENABLE | DISABLE ]; privilege_audit_clause: 1 PRIVILEGES { DDL | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ] access_audit_clause: ACCESS { DML | ALL } [ ON LABEL ( resource_label_name [, ... ] ) ]
  • 参数说明 mv_name 要创建的物化视图的名称(可以被模式限定)。 取值范围:字符串,要符合标识符命名规范。 column_name 新物化视图中的一个列名。物化视图支持指定列,指定列需要和后面的查询语句结果的列数量保持一致;如果没有提供列名,会从查询的输出列名中获取列名。 取值范围:字符串,要符合标识符命名规范。 TABLESPACE tablespace_name 指定新建物化视图所属表空间。如果没有声明,将使用默认表空间。 AS query 一个SELECT或者TABLE命令。这个查询将在一个安全受限的操作中运行。
  • 示例 --创建一个普通表。 openGauss=# CREATE TABLE my_table (c1 int, c2 int); --创建增量物化视图。 openGauss=# CREATE INCREMENTAL MATERIALIZED VIEW my_imv AS SELECT * FROM my_table; --基表写入数据。 openGauss=# INSERT INTO my_table VALUES(1,1),(2,2); --对增量物化视图my_imv进行增量刷新。 openGauss=# REFRESH INCREMENTAL MATERIALIZED VIEW my_imv; --删除增量物化视图。 openGauss=# DROP MATERIALIZED VIEW my_imv; --删除普通表my_table。 openGauss=# DROP TABLE my_table;
  • 功能描述 CREATE INCREMENTAL MATERIALIZED VIEW会创建一个增量物化视图,后续可以使用REFRESH MATERIALIZED VIEW(全量刷新)和REFRESH INCREMENTAL MATERIALIZED VIEW(增量刷新)刷新物化视图的数据。 CREATE INCREMENTAL MATERIALIZED VIEW类似于CREATE TABLE AS,不过它会记住被用来初始化该视图的查询, 因此它可以在后续中进行数据刷新。一个物化视图有很多和表相同的属性,但是不支持临时物化视图。
  • MY_TABLES MY_TABLES视图显示当前用户拥有的表的信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_TABLES字段 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表名称。 tablespace_name character varying(64) 存储表的表空间名称。 dropped character varying 当前记录是否已删除: yes表示已删除。 no表示未删除。 num_rows numeric 表的估计行数。 status character varying(8) 当前记录是否有效: valid表示有效。 temporary character(1) 是否为临时表。 y表示是临时表。 n表示不是临时表。 父主题: 系统视图
  • 语法格式 设置会话的事务参数。 ALTER SESSION SET [ SESSION CHARACTERIS TICS AS ] TRANSACTION { ISOLATION LEVEL { READ COMMITTED } | { READ ONLY | READ WRITE } } [, ...] ; 设置会话的其他运行时参数。 ALTER SESSION SET {{config_parameter { { TO | = } { value | DEFAULT } | FROM CURRENT }} | TIME ZONE time_zone | SCHEMA 'schema' | NAMES encoding_name | ROLE role_name PASSWORD 'password' | SESSION AUTHORIZATION { role_name PASSWORD 'password' | DEFAULT } | XML OPTION { DOCUMENT | CONTENT } } ;
  • 参数说明 SESSION 声明的参数只对当前会话起作用。如果SESSION和LOCAL都没出现,则SESSION为缺省值。 如果在事务中执行了此命令,命令的产生影响将在事务回滚之后消失。如果该事务已提交,影响将持续到会话的结束,除非被另外一个SET命令重置参数。 TIME ZONE time_zone 用于指定当前会话的本地时区。 取值范围:有效的本地时区。该选项对应的运行时参数名称为TimeZone,DEFAULT缺省值为PRC。 CURRENT_SCHEMA schema CURRENT_SCHEMA用于指定当前的模式。 取值范围:已存在模式名称。如果模式名不存在,会导致CURRENT_SCHEMA值为空。 SCHEMA schema 同CURRENT_SCHEMA。此处的schema是个字符串。 例如:set schema 'public'; NAMES encoding_name 用于设置客户端的字符编码。等价于set client_encoding to encoding_name。 取值范围:有效的字符编码。该选项对应的运行时参数名称为client_encoding,默认编码为UTF8。 XML OPTION option 用于设置XML的解析方式。 取值范围:CONTENT(缺省)、DOCUMENT config_parameter 可设置的运行时参数的名称。可用的运行时参数可以使用SHOW ALL命令查看。
  • GLOBAL_STATIO_SYS_INDEXES GLOBAL_STATIO_SYS_INDEXES视图显示各节点的命名空间中所有系统表索引的I/O状态信息。 表1 GLOBAL_STATIO_SYS_INDEXES字段 名称 类型 描述 node_name name 节点名称。 relid oid 索引的表的OID。 indexrelid oid 该索引的OID。 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read numeric 从索引中读取的磁盘块数。 idx_blks_hit numeric 索引命中缓存数。 父主题: Cache/IO
  • 示例 --创建表。 openGauss=# CREATE TABLE char_type_t1 ( CT_COL1 CHARACTER(4) ); --插入数据。 openGauss=# INSERT INTO char_type_t1 VALUES ('ok'); --查询表中的数据。 openGauss=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t1; ct_col1 | char_length ---------+------------- ok | 4 (1 row) --删除表。 openGauss=# DROP TABLE char_type_t1; --创建表。 openGauss=# CREATE TABLE char_type_t2 ( CT_COL1 VARCHAR(5) ); --插入数据。 openGauss=# INSERT INTO char_type_t2 VALUES ('ok'); openGauss=# INSERT INTO char_type_t2 VALUES ('good'); --插入的数据长度超过类型规定的长度报错。 openGauss=# INSERT INTO char_type_t2 VALUES ('too long'); ERROR: value too long for type character varying(5) CONTEXT: referenced column: ct_col1 --明确类型的长度,超过数据类型长度后会自动截断。 openGauss=# INSERT INTO char_type_t2 VALUES ('too long'::varchar(5)); --查询数据。 openGauss=# SELECT ct_col1, char_length(ct_col1) FROM char_type_t2; ct_col1 | char_length ---------+------------- ok | 2 good | 4 too l | 5 (3 rows) --删除数据。 openGauss=# DROP TABLE char_type_t2;
  • 参数 表1 数据库连接参数 参数名称 参数说明 host 主机IP地址,也可通过环境变量${PGHOST}来指定。 port 主机服务器的端口号,也可通过环境变量${PGPORT}来指定。 dbname 数据库名,也可通过环境变量${PGDATABASE}来指定。 user 要连接的用户名,也可通过环境变量${PGUSER}来指定。 password 要连接用户对应的连接密码。 connect_timeout 用于连接服务器操作的超时值,也可通过环境变量${PGCONNECT_TIMEOUT}来指定。 sslmode 启用SSL加密的方式,也可通过环境变量${PGSSLMODE}来指定。 参数取值范围: disable:不使用ssl安全连接。 allow:如果数据库服务器要求使用,则可以使用SSL安全加密连接,但不验证数据库服务器的真实性。 prefer:如果数据库支持,那么首选使用SSL安全加密连接,但不验证数据库服务器的真实性。 require:必须使用SSL安全连接,但是只做了 数据加密 ,而并不验证数据库服务器的真实性。 verify-ca:必须使用SSL安全连接,并验证服务器是否具有由可信任的证书机构签发的证书。 verify-full:必须使用SSL安全连接,并且验证服务器是否具有由可信任的证书机构签发的证书,以及验证服务器主机名是否与证书中的一致 sslkey 指定用于客户端证书的密钥位置,如果需要走SSL连接,并且该参数未指定,可通过设置环境变量${PGSSLKEY}来指定。 sslcert 指定客户端SSL证书的文件名,或者通过设置环境变量${PGSSLCERT}来指定。 sslrootcert 指定一个包含SSL证书机构(CA)证书的文件名称,或者通过设置环境变量${PGSSLROOTCERT}来指定。 sslcrl 指定ssl证书撤销列表(CRL)的文件名。列在这个文件中的证书如果存在,在尝试认证该服务器证书时会被拒绝,从而连接失败。也可通过环境变量${PGSSLCRL}来指定。 sslpassword 指定对密钥解密成明文的密码短语,当指定该参数的时候表示sslkey是一个加密存储的文件,当前sslkey支持des/aes加密方式。 说明: DES加密算法安全性低,存在安全风险,建议使用更安全的加密算法。 disable_prepared_binary_result 字符串类型,若设置为yes,表示此连接在从预准备语句接收查询结果时不应使用二进制格式。该参数仅用于调试。 取值范围:yes/no。 binary_parameters 字符串类型,该参数表示是否始终以二进制形式发送[]byte。取值范围:yes/no。若该参数设置为yes,建议绑定参数按照[]byte绑定,可以减少内部类型转换。 target_session_attrs 指定数据库的连接类型,该参数用于识别主备节点,也可通过环境变量${PGTARGETSESSIONATTRS}来指定。默认值为“any”,共有六种:any、master、slave、preferSlave、read-write、read-only。 any:尝试连接URL连接串中的任何一个数据节点。 master:尝试连接到URL连接串中的主节点,如果找不到就抛出异常。 slave:尝试连接到URL连接串中的备节点,如果找不到就抛出异常。 preferSlave:尝试连接到URL连接串中的备数据节点(如果有可用的话),否则连接到主数据节点。 read-write:读写模式,表示只能连接主节点。 read-only:只读模式,表示只能连接备节点。 loggerLevel 日志级别,打印相关调试信息,也可通过环境变量${PGLOGGERLEVEL}来指定。 支持trace/debug/info/warn/error/none,级别从高到低。 application_name 设置正在使用连接的GO驱动的名称。缺省值为go-driver,该参数不建议用户配置。 RuntimeParams 设置连接会话时默认运行的set类型的guc参数的值。例如参数名search_path,application_name,timezone等。各参数的详细介绍参见客户端连接缺省设置,可通过show语法查看参数是否设置成功。
  • GS_OPT_MODEL GS_OPT_MODEL是启用AiEngine执行计划时间预测功能时的数据表,记录机器学习模型的配置、训练结果、功能、对应系统函数、训练历史等相关信息。 表1 GS_OPT_MODEL字段 名称 类型 描述 oid oid 数据库对象id。 template_name name 机器学习模型的模板名,决定训练和预测调用的函数接口,目前只实现了rlstm,方便后续扩展。 model_name name 模型的实例名,每个模型对应AiEngine在线学习进程中的一套参数、训练日志、模型系数。此列需为unique。 datname name 该模型所服务的database名,每个模型只针对单个database。此参数决定训练时所使用的数据。 ip name AiEngine端所部署的host ip地址。 port integer AiEngine端所侦听的端口号。 max_epoch integer 模型每次训练的迭代次数上限。 learning_rate real 模型训练的学习速率,推荐缺省值1。 dim_red real 模型特征维度降维系数。 hidden_units integer 模型隐藏层神经元个数。如果训练发现模型长期无法收敛,可以适量提升本参数。 batch_size integer 模型每次迭代时一个batch的大小,尽量设为大于等于训练数据总量的值,加快模型的收敛速度。 feature_size integer [不需设置] 模型特征的长度,用于触发重新训练,模型训练后该参数自动更新。 available boolean [不需设置]标识模型是否收敛。 Is_training boolean [不需设置]标识模型是否正在训练。 label "char"[] 模型的目标任务: S: startup time T: total time R: rows M: peak memory 目前受模型性能限制,推荐{S, T}或{R}。 max bigint[] [不需设置]标识模型各任务标签的最大值,用于触发重新训练。 acc real[] [不需设置]标识模型各任务的准确率。 description text 模型注释。 父主题: 系统表
  • GLOBAL_STATIO_ALL_INDEXES GLOBAL_STATIO_ALL_INDEXES视图包含各节点的数据库中的每个索引行,显示特定索引的I/O的统计。 表1 GLOBAL_STATIO_ALL_INDEXES字段 名称 类型 描述 node_name name 节点名称。 relid oid 索引的表的OID。 indexrelid oid 该索引的OID。 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read numeric 从索引中读取的磁盘块数。 idx_blks_hit numeric 索引命中缓存数。 父主题: Cache/IO
  • 字符处理函数和操作符 GaussDB提供的字符处理函数和操作符主要用于字符串与字符串、字符串与非字符串之间的连接,以及字符串的模式匹配操作。注意:字符串处理函数除了length相关函数,其他函数和操作符不支持大于1GB clob作为参数。 bit_length(string) 描述:字符串的位数。 返回值类型:int 示例: 1 2 3 4 5 openGauss=# SELECT bit_length('world'); bit_length ------------ 40 (1 row) btrim(string text [, characters text]) 描述:从string开头和结尾删除只包含characters中字符(缺省是空白)的最长字符串。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT btrim('sring' , 'ing'); btrim ------- sr (1 row) char_length(string)或character_length(string) 描述:字符串中的字符个数。 返回值类型:int 示例: 1 2 3 4 5 openGauss=# SELECT char_length('hello'); char_length ------------- 5 (1 row) instr(text,text,int,int) 描述:instr(string1,string2,int1,int2)返回在string1中从int1位置开始匹配到第int2次string2的位置,第一个int表示开始匹配起始位置,第二个int表示匹配的次数。 返回值类型:int 示例: 1 2 3 4 5 openGauss=# SELECT instr( 'abcdabcdabcd', 'bcd', 2, 2 ); instr ------- 6 (1 row) lengthb(text/bpchar) 描述:获取指定字符串的字节数。 返回值类型:int 示例: 1 2 3 4 5 openGauss=# SELECT lengthb('hello'); lengthb --------- 5 (1 row) left(str text, n int) 描述:返回字符串的前n个字符。当n是负数时,返回除最后|n|个字符以外的所有字符。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT left('abcde', 2); left ------ ab (1 row) length(string bytea, encoding name ) 描述:指定encoding编码格式的string的字符数。在这个编码格式中,string必须是有效的。 返回值类型:int 示例: 1 2 3 4 5 openGauss=# SELECT length('jose', 'UTF8'); length -------- 4 (1 row) 如果是查询bytea类型的长度,指定utf8编码时,最大长度只能为536870888。 lpad(string text, length int [, fill text]) 描述:通过填充字符fill(缺省时为空白),把string填充为length长度。如果string已经比length长则将其尾部截断。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT lpad('hi', 5, 'xyza'); lpad ------- xyzhi (1 row) notlike(x bytea name text, y bytea text) 描述:比较x和y是否不一致。 返回值类型:Boolean 示例: 1 2 3 4 5 6 7 8 9 10 openGauss=# SELECT notlike(1,2); notlike -------------- t (1 row) openGauss=# SELECT notlike(1,1); notlike -------------- f (1 row) octet_length(string) 描述:字符串中的字节数。 返回值类型:int 示例: 1 2 3 4 5 openGauss=# SELECT octet_length('jose'); octet_length -------------- 4 (1 row) overlay(string placing string FROM int [for int]) 描述:替换子字符串。FROM int表示从第一个string的第几个字符开始替换,for int表示替换第一个string的字符数目。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT overlay('hello' placing 'world' from 2 for 3 ); overlay --------- hworldo (1 row) position(substring in string) 描述:指定子字符串的位置。字符串区分大小写。 返回值类型:int,字符串不存在时返回0。 示例: 1 2 3 4 5 openGauss=# SELECT position('ing' in 'string'); position ---------- 4 (1 row) pg_client_encoding() 描述:当前客户端编码名称。 返回值类型:name 示例: 1 2 3 4 5 openGauss=# SELECT pg_client_encoding(); pg_client_encoding -------------------- UTF8 (1 row) quote_ident(string text) 描述:返回适用于SQL语句的标识符形式(使用适当的引号进行界定)。只有在必要的时候才会添加引号(字符串包含非标识符字符或者会转换大小写的字符)。返回值中嵌入的引号都写了两次。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT quote_ident('hello world'); quote_ident -------------- "hello world" (1 row) quote_literal(string text) 描述:返回适用于在SQL语句里当作文本使用的形式(使用适当的引号进行界定)。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT quote_literal('hello'); quote_literal --------------- 'hello' (1 row) 如果出现如下写法,text文本将进行转义。 1 2 3 4 5 openGauss=# SELECT quote_literal(E'O\'hello'); quote_literal --------------- 'O''hello' (1 row) 如果出现如下写法,反斜杠会写入两次。 1 2 3 4 5 openGauss=# SELECT quote_literal('O\hello'); quote_literal --------------- E'O\\hello' (1 row) 如果参数为NULL,返回空。如果参数可能为null,通常使用函数quote_nullable更适用。 1 2 3 4 5 openGauss=# SELECT quote_literal(NULL); quote_literal --------------- (1 row) quote_literal(value anyelement) 描述:将给定的值强制转换为text,加上引号作为文本。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT quote_literal(42.5); quote_literal --------------- '42.5' (1 row) 如果出现如下写法,定值将进行转义。 1 2 3 4 5 openGauss=# SELECT quote_literal(E'O\'42.5'); quote_literal --------------- '0''42.5' (1 row) 如果出现如下写法,反斜杠会写入两次。 1 2 3 4 5 openGauss=# SELECT quote_literal('O\42.5'); quote_literal --------------- E'O\\42.5' (1 row) quote_nullable(string text) 描述:返回适用于在SQL语句里当作字符串使用的形式(使用适当的引号进行界定)。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT quote_nullable('hello'); quote_nullable ---------------- 'hello' (1 row) 如果出现如下写法,text文本将进行转义。 1 2 3 4 5 openGauss=# SELECT quote_nullable(E'O\'hello'); quote_nullable ---------------- 'O''hello' (1 row) 如果出现如下写法,反斜杠会写入两次。 1 2 3 4 5 openGauss=# SELECT quote_nullable('O\hello'); quote_nullable ---------------- E'O\\hello' (1 row) 如果参数为NULL,返回NULL。 1 2 3 4 5 openGauss=# SELECT quote_nullable(NULL); quote_nullable ---------------- NULL (1 row) quote_nullable(value anyelement) 描述:将给定的参数值转换为text,加上引号作为文本。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT quote_nullable(42.5); quote_nullable ---------------- '42.5' (1 row) 如果出现如下写法,定值将进行转义。 1 2 3 4 5 openGauss=# SELECT quote_nullable(E'O\'42.5'); quote_nullable ---------------- 'O''42.5' (1 row) 如果出现如下写法,反斜杠会写入两次。 1 2 3 4 5 openGauss=# SELECT quote_nullable('O\42.5'); quote_nullable ---------------- E'O\\42.5' (1 row) 如果参数为NULL,返回NULL。 1 2 3 4 5 openGauss=# SELECT quote_nullable(NULL); quote_nullable ---------------- NULL (1 row) substring_inner(string [from int] [for int]) 描述:截取子字符串,from int表示从第几个字符开始截取,for int表示截取几个字节。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT substring_inner('adcde', 2,3); substring_inner ----------------- dcd (1 row) substring(string [from int] [for int]) 描述:截取子字符串,from int表示从第几个字符开始截取,for int表示截取几个字节。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT substring('Thomas' from 2 for 3); substring ----------- hom (1 row) rawcat(raw,raw) 描述:字符串拼接函数。 返回值类型:raw 示例: 1 2 3 4 5 openGauss=# SELECT rawcat('ab','cd'); rawcat -------- ABCD (1 row) regexp_count(string text, pattern text [, position int [, flags text]]) 描述:获取满足匹配的子串个数。 参数说明: string:用于匹配的源字符串。 pattern:用于匹配的正则表达式模式串。 position:表示从源字符串的第几个字符开始匹配,为可选参数,默认值为1。 flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。 返回值类型:int 示例: openGauss=# SELECT regexp_count('foobarbaz','b(..)', 5) AS RESULT; result -------- 1 (1 row) regexp_instr(string text, pattern text [, position int [, occurrence int [, return_opt int [, flags text]]]]) 描述:获取满足匹配条件的子串位置(从1开始)。如果没有匹配的子串,则返回0。 参数说明: string:用于匹配的源字符串。 pattern:用于匹配的正则表达式模式串。 position:可选参数,表示从源字符串的第几个字符开始匹配,默认值为1。 occurrence:可选参数,表示获取第occurrence个匹配子串的位置,默认值为1。 return_opt:可选参数,用于控制返回匹配子串的首字符位置还是尾字符位置。取值为0时,返回匹配子串的第一个字符的位置(从1开始计算),取值为大于0的值时,返回匹配子串的尾字符的下一个字符的位置。默认值为0。 flags:可选参数,包含零个或多个改变函数匹配行为的单字母标记。 返回值类型:int 示例: openGauss=# SELECT regexp_instr('foobarbaz','b(..)', 1, 1, 0) AS RESULT; result -------- 4 (1 row) openGauss=# SELECT regexp_instr('foobarbaz','b(..)', 1, 2, 0) AS RESULT; result -------- 7 (1 row) repeat(string text, number int ) 描述:将string重复number次。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT repeat('Pg', 4); repeat ---------- PgPgPgPg (1 row) 由于数据库内存分配机制限制单次内存分配不可超过1GB,因此number最大值不应超过(1G-x)/lengthb(string) - 1。x为头信息长度,通常大于4字节,其具体值在不同的场景下存在差异。 replace(string text, from text, to text) 描述:把字符串string里出现的所有子字符串from的内容替换成子字符串to的内容。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT replace('abcdefabcdef', 'cd', 'XXX'); replace ---------------- abXXXefabXXXef (1 row) replace(string, substring) 描述:删除字符串string里出现的所有子字符串substring的内容。 string类型:text substring类型:text 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT replace('abcdefabcdef', 'cd'); replace ---------------- abefabef (1 row) reverse(str) 描述:返回颠倒的字符串。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT reverse('abcde'); reverse --------- edcba (1 row) right(str text, n int) 描述:返回字符串中的后n个字符。当n是负值时,返回除前|n|个字符以外的所有字符。 返回值类型:text 示例: 1 2 3 4 5 6 7 8 9 10 11 openGauss=# SELECT right('abcde', 2); right ------- de (1 row) openGauss=# SELECT right('abcde', -2); right ------- cde (1 row) rpad(string text, length int [, fill text]) 描述:使用填充字符fill(缺省时为空白),把string填充到length长度。如果string已经比length长则将其从尾部截断。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT rpad('hi', 5, 'xy'); rpad ------- hixyx (1 row) rtrim(string text [, characters text]) 描述:从字符串string的结尾删除只包含characters中字符(缺省是个空白)的最长的字符串。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT rtrim('trimxxxx', 'x'); rtrim ------- trim (1 row) substrb(text,int,int) 描述:提取子字符串,第一个int表示提取的起始位置,第二个表示提取几位字符。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT substrb('string',2,3); substrb --------- tri (1 row) substrb(text,int) 描述:提取子字符串,int表示提取的起始位置。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT substrb('string',2); substrb --------- tring (1 row) substr(bytea,from,count) 描述:从参数bytea中抽取子字符串。from表示抽取的起始位置,count表示抽取的子字符串长度。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT substr('string',2,3); substr -------- tri (1 row) string || string 描述:连接字符串。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT 'MPP'||'DB' AS RESULT; result -------- MPPDB (1 row) string || non-string或non-string || string 描述:连接字符串和非字符串。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT 'Value: '||42 AS RESULT; result ----------- Value: 42 (1 row) split_part(string text, delimiter text, field int) 描述:根据delimiter分隔string返回生成的第field个子字符串(从出现第一个delimiter的text为基础)。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT split_part('abc~@~def~@~ghi', '~@~', 2); split_part ------------ def (1 row) strpos(string, substring) 描述:指定的子字符串的位置。和position(substring in string)一样,不过参数顺序相反。 返回值类型:int 示例: 1 2 3 4 5 openGauss=# SELECT strpos('source', 'rc'); strpos -------- 4 (1 row) to_hex(number int or bigint) 描述:把number转换成十六进制表现形式。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT to_hex(2147483647); to_hex ---------- 7fffffff (1 row) translate(string text, from text, to text) 描述:把在string中包含的任何匹配from中的字符转换为对应的在to中的字符。如果from比to长,删掉在from中出现的额外的字符。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT translate('12345', '143', 'ax'); translate ----------- a2x5 (1 row) length(string) 描述:获取参数string中字符的数目。 返回值类型:integer 示例: 1 2 3 4 5 openGauss=# SELECT length('abcd'); length -------- 4 (1 row) lengthb(string) 描述:获取参数string中字节的数目。与字符集有关,同样的中文字符,在GBK与UTF8中,返回的字节数不同。 返回值类型:integer 示例: 1 2 3 4 5 openGauss=# SELECT lengthb('Chinese'); lengthb --------- 7 (1 row) substr(string,from) 描述: 从参数string中抽取子字符串。 from表示抽取的起始位置。 from为0时,按1处理。 from为正数时,抽取从from到末尾的所有字符。 from为负数时,抽取字符串的后n个字符,n为from的绝对值。 返回值类型:text 示例: from为正数时: 1 2 3 4 5 openGauss=# SELECT substr('ABCDEF',2); substr -------- BCDEF (1 row) from为负数时: 1 2 3 4 5 openGauss=# SELECT substr('ABCDEF',-2); substr -------- EF (1 row) substr(string,from,count) 描述: 从参数string中抽取子字符串。 from表示抽取的起始位置。 count表示抽取的子字符串长度。 from为0时,按1处理。 from为正数时,抽取从from开始的count个字符。 from为负数时,抽取从倒数第n个开始的count个字符,n为from的绝对值。 count小于1时,返回null。 返回值类型:text 示例: from为正数时: 1 2 3 4 5 openGauss=# SELECT substr('ABCDEF',2,2); substr -------- BC (1 row) from为负数时: 1 2 3 4 5 openGauss=# SELECT substr('ABCDEF',-3,2); substr -------- DE (1 row) substrb(string,from) 描述:该函数和SUBSTR(string,from)函数功能一致,但是计算单位为字节。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT substrb('ABCDEF',-2); substrb --------- EF (1 row) substrb(string,from,count) 描述:该函数和SUBSTR(string,from,count)函数功能一致,但是计算单位为字节。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT substrb('ABCDEF',2,2); substrb --------- BC (1 row) trim([leading |trailing |both] [characters] from string) 描述:从字符串string的开头、结尾或两边删除只包含characters中字符(缺省是一个空白)的最长的字符串。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT trim(BOTH 'x' FROM 'xTomxx'); btrim ------- Tom (1 row) 1 2 3 4 5 openGauss=# SELECT trim(LEADING 'x' FROM 'xTomxx'); ltrim ------- Tomxx (1 row) 1 2 3 4 5 openGauss=# SELECT trim(TRAILING 'x' FROM 'xTomxx'); rtrim ------- xTom (1 row) rtrim(string [, characters]) 描述:从字符串string的结尾删除只包含characters中字符(缺省是个空白)的最长的字符串。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT rtrim('TRIMxxxx','x'); rtrim ------- TRIM (1 row) ltrim(string [, characters]) 描述:从字符串string的开头删除只包含characters中字符(缺省是一个空白)的最长的字符串。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT ltrim('xxxxTRIM','x'); ltrim ------- TRIM (1 row) upper(string) 描述:把字符串转换为大写。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT upper('tom'); upper ------- TOM (1 row) lower(string) 描述:把字符串转换为小写。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT lower('TOM'); lower ------- tom (1 row) rpad(string varchar, length int [, fill varchar]) 描述:使用填充字符fill(缺省时为空白),把string填充到length长度。如果string已经比length长则将其从尾部截断。 length参数在GaussDB中表示字符长度。一个汉字长度计算为一个字符。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT rpad('hi',5,'xyza'); rpad ------- hixyz (1 row) 1 2 3 4 5 openGauss=# SELECT rpad('hi',5,'abcdefg'); rpad ------- hiabc (1 row) instr(string,substring[,position,occurrence]) 描述:从字符串string的position(缺省时为1)所指的位置开始查找并返回第occurrence(缺省时为1)次出现子串substring的位置的值。 当position为0时,返回0。 当position为负数时,从字符串倒数第n个字符往前逆向搜索。n为position的绝对值。 本函数以字符为计算单位,如一个汉字为一个字符。 返回值类型:integer 示例: 1 2 3 4 5 openGauss=# SELECT instr('corporate floor','or', 3); instr ------- 5 (1 row) 1 2 3 4 5 openGauss=# SELECT instr('corporate floor','or',-3,2); instr ------- 2 (1 row) initcap(string) 描述:将字符串中的每个单词的首字母转换为大写,其他字母转换为小写。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT initcap('hi THOMAS'); initcap ----------- Hi Thomas (1 row) ascii(string) 描述:参数string的第一个字符的ASCII码。 返回值类型:integer 示例: 1 2 3 4 5 openGauss=# SELECT ascii('xyz'); ascii ------- 120 (1 row) replace(string varchar, search_string varchar, replacement_string varchar) 描述:把字符串string中所有子字符串search_string替换成子字符串replacement_string。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT replace('jack and jue','j','bl'); replace ---------------- black and blue (1 row) lpad(string varchar, length int[, repeat_string varchar]) 描述:在string的左侧添上一系列的repeat_string(缺省为空白)来组成一个总长度为n的新字符串。 如果string本身的长度比指定的长度length长,则本函数将把string截断并把前面长度为length的字符串内容返回。 返回值类型:varchar 示例: 1 2 3 4 5 openGauss=# SELECT lpad('PAGE 1',15,'*.'); lpad ----------------- *.*.*.*.*PAGE 1 (1 row) 1 2 3 4 5 openGauss=# SELECT lpad('hello world',5,'abcd'); lpad ------- hello (1 row) concat(str1,str2) 描述:将字符串str1和str2连接并返回,若str1或str2为NULL时,返回NULL。注意,concat会调用data type的输出函数,返回值不确定,导致优化器在生成计划的时候不能提前计算结果。如果对性能有要求,建议用 || 替代。 在sql_compatibility = 'B'的情况下,参数str1或str2为NULL会导致返回结果为NULL。 concat函数返回值类型为变长类型,和表中数据比较时,会因为拼接结果丢失字符串长度,导致比较结果不相等。 返回值类型:text 示例: 1 2 3 4 5 6 7 8 9 10 openGauss=# SELECT concat('Hello', ' World!'); concat -------------- Hello World! (1 row) openGauss=# SELECT concat('Hello', NULL); concat -------- Hello (1 row) chr(integer) 描述:给出ASCII码的字符。 返回值类型:varchar 示例: 1 2 3 4 5 openGauss=# SELECT chr(65); chr ----- A (1 row) concat_ws(sep text, str"any" [, str"any" [, ...] ]) 描述:以第一个参数为分隔符,连接第二个以后的所有参数。NULL参数被忽略。 如果第一个参数值是NULL,会导致返回结果为NULL。 如果第一个参数值是空字符串(''),且数据库SQL兼容模式设置为A的情况下,会导致返回结果为NULL。这是因为A兼容模式将''作为NULL处理,避免此类行为,可以将数据库SQL兼容模式改为B、C或者PG。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT concat_ws(',', 'ABCDE', 2, NULL, 22); concat_ws ------------ ABCDE,2,22 (1 row) nlssort(string text, sort_method text) 描述:以sort_method指定的排序方式返回字符串在该排序模式下的编码值,该编码值可用于排序,其决定了string在这种排序模式下的先后位置。目前支持的sort_method为'nls_sort=schinese_pinyin_m'和'nls_sort=generic_m_ci'。其中,'nls_sort=generic_m_ci'仅支持纯英文不区分大小写排序。 string类型:text sort_method类型:text 返回值类型:text 示例: 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 openGauss=# CREATE TABLE test(a text); openGauss=# INSERT into test(a) values ('abC 不'); openGauss=# insert INTO test(a) VALUES ('abC 啊'); openGauss=# INSERT INTO test(a) VALUES ('abc 啊'); openGauss=# SELECT * FROM test ORDER BY nlssort(a,'nls_sort=schinese_pinyin_m'); a -------- abc 啊 abC 啊 abC 不 (3 rows) openGauss=# SELECT * FROM test ORDER BY nlssort(a, 'nls_sort=generic_m_ci'); a -------- abC 啊 abc 啊 abC 不 (3 rows) openGauss=# DROP TABLE test; convert(string bytea, src_encoding name, dest_encoding name) 描述:以dest_encoding指定的目标编码方式转换字符串string。src_encoding指定源编码方式,在该编码下,string必须是合法的。 返回值类型:bytea 示例: 1 2 3 4 5 openGauss=# SELECT convert('text_in_utf8', 'UTF8', 'GBK'); convert ---------------------------- \x746578745f696e5f75746638 (1 row) 如果源编码格式到目标编码格式的转换规则不存在,则字符串不进行任何转换直接返回,如GBK和LATIN1之间的转换规则是不存在的,具体转换规则可以通过查看系统表pg_conversion获得。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 openGauss=# SHOW server_encoding; server_encoding ----------------- LATIN1 (1 row) openGauss=# SELECT convert_from('some text', 'GBK'); convert_from -------------- some text (1 row) db_latin1=# SELECT convert_to('some text', 'GBK'); convert_to ---------------------- \x736f6d652074657874 (1 row) db_latin1=# SELECT convert('some text', 'GBK', 'LATIN1'); convert ---------------------- \x736f6d652074657874 (1 row) convert_from(string bytea, src_encoding name) 描述:以数据库的编码方式转换字符串string。 src_encoding指定源编码方式,在该编码下,string必须是合法的。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT convert_from('text_in_utf8', 'UTF8'); convert_from -------------- text_in_utf8 (1 row) convert_to(string text, dest_encoding name) 描述:将字符串转换为dest_encoding的编码格式。 返回值类型:bytea 示例: 1 2 3 4 5 openGauss=# SELECT convert_to('some text', 'UTF8'); convert_to ---------------------- encode \x736f6d652074657874 (1 row) format(formatstr text [, str"any" [, ...] ]) 描述:格式化字符串。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT format('Hello %s, %1$s', 'World'); format -------------------- Hello World, World (1 row) md5(string) 描述:将string使用MD5加密,并以16进制数作为返回值。 MD5加密算法安全性低,存在安全风险,不建议使用。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT md5('ABC'); md5 ---------------------------------- 902fbdd2b1df0c4f70b4a5d23525e932 (1 row) decode(string text, format text) 描述:将二进制数据从文本数据中解码。 返回值类型:bytea 示例: 1 2 3 4 5 openGauss=# SELECT decode('MTIzAAE=', 'base64'); decode -------------- \x3132330001 (1 row) encode(data bytea, format text) 描述:将二进制数据编码为文本数据。 返回值类型:text 示例: 1 2 3 4 5 openGauss=# SELECT encode(E'123\\000\\001', 'base64'); encode ---------- MTIzAAE= (1 row) 若字符串中存在换行符,如字符串由一个换行符和一个空格组成,在GaussDB中LENGTH和LENGTHB的值为2。 对于CHAR(n) 类型,GaussDB中n是指字符个数。因此,对于多字节编码的字符集, LENGTHB函数返回的长度可能大于n。 GaussDB支持多种类型的数据库,目前有4种,分别是A类型,B类型,C类型以及PG类型。在不指定数据库类型时,数据库默认是A类型,A的词法分析器与另外三种不一样,在A中空字符串会被当作是NULL。所以,当使用A类型的数据库时,假如上述字符操作函数中有空字符串作为参数,会出现没有输出的情况。例如: openGauss=# SELECT translate('12345','123',''); translate ----------- (1 row) 这是因为内核在调用相应的函数进行处理前,会判断所输入的参数中是否含有NULL,假如有,则不会调用相应的函数,因此会没有输出。而在PG模式下,字符串的处理方式与postgresql保持一致,因此不会有上述问题产生。 父主题: 函数和操作符
  • GLOBAL_OS_RUNTIME 提供数据库中所有正常节点下的操作系统运行状态信息。 表1 GLOBAL_OS_RUNTIME字段 名称 类型 描述 node_name name 节点名称。 id integer 编号。 name text 操作系统运行状态名称。 value numeric 操作系统运行状态值。 comments text 操作系统运行状态注释。 cumulative boolean 操作系统运行状态的值是否为累加值。 父主题: OS
  • PG_TS_DICT PG_TS_DICT系统表包含定义文本搜索字典的记录。字典取决于文本搜索模板,该模板声明所有需要的实现函数;字典本身提供模板支持的用户可设置的参数的值。 这种分工允许字典通过非权限用户创建。参数由文本字符串dictinitoption指定,参数的格式和意义取决于模板。 表1 PG_TS_DICT字段 名称 类型 引用 描述 oid oid - 行标识符(隐含属性,必须明确选择)。 dictname name - 文本搜索字典名。 dictnamespace oid PG_NAMESPACE.oid 包含这个字典的名称空间的OID。 dictowner oid PG_AUTHID.oid 字典的所有者。 dicttemplate oid PG_TS_TEMPLATE.oid 这个字典的文本搜索模板的OID。 dictinitoption text - 该模板的初始化选项字符串。 父主题: 系统表
  • GLOBAL_WAIT_EVENTS GLOBAL_WAIT_EVENTS视图显示各节点的event的等待相关的统计信息。 表1 GLOBAL_WAIT_EVENTS字段 名称 类型 描述 nodename text 数据库进程名称。 type text event类型。 event text event名称。 wait bigint 等待次数。 failed_wait bigint 失败的等待次数。 total_wait_time bigint 总等待时间(单位:微秒)。 avg_wait_time bigint 平均等待时间(单位:微秒)。 max_wait_time bigint 最大等待时间(单位:微秒)。 min_wait_time bigint 最小等待时间(单位:微秒)。 last_updated timestamp with time zone 最后一次更新该事件的时间。 父主题: Wait Events
  • 参数说明 name 查询标签。 取值范围:字符串 EXPLAIN中的PLAN选项表示需要将计划信息存储于PLAN_TABLE中,存储成功将返回“EXPLAIN SUCCESS”。 STATEMENT_ID用户可以对查询设置标签,输入的标签信息也将存储于PLAN_TABLE中。 用户在执行EXPLAIN PLAN时,如果没有进行SET STATEMENT_ID,则默认为空值。同时,用户可输入的STATEMENT_ID最大长度为30个字节,超过长度将会产生报错。
  • SUMMARY_STAT_DATABASE_CONFLI CTS 显示数据库内汇聚的数据库冲突状态的统计信息。 表1 SUMMARY_STAT_DATABASE_CONFLICTS字段 名称 类型 描述 datname name 数据库名称。 confl_tablespace bigint 冲突的表空间的数目。 confl_lock bigint 冲突的锁数目。 confl_snapshot bigint 冲突的快照数目。 confl_bufferpin bigint 冲突的缓冲区数目。 confl_deadlock bigint 冲突的死锁数目。 父主题: Object
  • PG_TIMEZONE_NAMES PG_TIMEZONE_NAMES视图显示所有能够被SET TIMEZONE语法识别的时区名及其缩写、UTC偏移量、是否实行夏令时。 表1 PG_TIMEZONE_NAMES字段 名称 类型 描述 name text 时区名。 abbrev text 时区名缩写。 utc_offset interval 相对于UTC的偏移量。 is_dst boolean 如果当前正处于夏令时范围则为TRUE,否则为FALSE。 父主题: 系统视图
  • PG_INDEXES PG_INDEXES视图显示数据库中每个索引的信息。 表1 PG_INDEXES字段 名称 类型 引用 描述 schemaname name PG_NAMESPACE.nspname 包含表和索引的模式的名称。 tablename name PG_CLASS.relname 此索引所在的表的名称。 indexname name PG_CLASS.relname 索引的名称。 tablespace name PG_TABLESPACE.nspname 包含索引的表空间的名称。 indexdef text - 索引定义(一个重建的CREATE INDEX命令)。 父主题: 系统视图
  • 背景信息 序列Sequence是用来产生唯一整数的数据库对象。序列的值是按照一定规则自增的整数。因为自增所以不重复,因此说Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。 通过序列使某字段成为唯一标识符的方法有两种: 一种是声明字段的类型为序列整型,由数据库在后台自动创建一个对应的Sequence。 另一种是使用CREATE SEQUENCE自定义一个新的Sequence,然后将nextval('sequence_name')函数读取的序列值,指定为某一字段的默认值,这样该字段就可以作为唯一标识符。
  • 操作步骤 方法一: 声明字段类型为序列整型来定义标识符字段。例如: 1 2 3 4 5 openGauss=# CREATE TABLE T1 ( id serial, name text ); 当结果显示为如下信息,则表示创建成功。 1 CREATE TABLE 方法二: 创建序列,并通过nextval('sequence_name')函数指定为某一字段的默认值。 创建序列 1 openGauss=# CREATE SEQUENCE seq1 cache 100; 当结果显示为如下信息,则表示创建成功。 1 CREATE SEQUENCE 指定为某一字段的默认值,使该字段具有唯一标识属性。 1 2 3 4 5 openGauss=# CREATE TABLE T2 ( id int not null default nextval('seq1'), name text ); 当结果显示为如下信息,则表示默认值指定成功。 1 CREATE TABLE 指定序列与列的归属关系。 将序列和一个表的指定字段进行关联。这样,在删除那个字段或其所在表的时候会自动删除已关联的序列。 1 openGauss=# ALTER SEQUENCE seq1 OWNED BY T2.id; 当结果显示为如下信息,则表示指定成功。 1 ALTER SEQUENCE 除了为序列指定了cache,方法二所实现的功能基本与方法一类似。但是一旦定义cache,序列将会产生空洞(序列值为不连贯的数值,如:1.4.5),并且不能保序。另外为某序列指定从属列后,该列删除,对应的sequence也会被删除。 虽然数据库并不限制序列只能为一列产生默认值,但建议不要多列共用同一个序列。 当前版本只支持在定义表的时候指定自增列,或者指定某列的默认值为nextval('seqname'), 不支持在已有表中增加自增列或者增加默认值为nextval('seqname')的列。
  • 注意事项 当enable_access_server_directory=off时,只允许初始用户删除directory对象;当enable_access_server_directory=on时,具有SYSADMIN权限的用户、directory对象的属主、被授予了该directory的DROP权限的用户或者继承了内置角色gs_role_directory_drop权限的用户可以删除directory对象。
共100000条
提示

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