华为云用户手册

  • 注意事项 不允许将ANY权限授予PUBLIC,也不允许从PUBLIC回收ANY权限。 ANY权限属于数据库内的权限,只对授予该权限的数据库内的对象有效,例如SELECT ANY TABLE只允许用户查看当前数据库内的所有用户表数据,对其他数据库内的用户表无查看权限。 ANY权限与原有的权限相互无影响。 如果用户被授予了CREATE ANY TABLE权限,在同名模式下创建表的属主是该模式的所有者,用户对表进行其他操作时,需要授予相应的操作权限。与此类似的还有CREATE ANY FUNCTION、CREATE ANY PACKAGE、CREATE ANY TYPE、CREATE ANY SEQUENCE和CREATE ANY INDEX,在同名模式下创建的对象的所有者是同名模式的所有者;而对于CREATE ANY TRIGGER和CREATE ANY SYNONYM,在同名模式下创建的对象的所有者为创建者。 需要谨慎授予用户CREATE ANY FUNCTION或CREATE ANY PACKAGE的权限,以免其他用户利用DEFINER类型的函数或PACKAGE进行权限提升。 通过GRANT授予用户使用表的权限时,如果用户使用不当,可能会通过ALTER语法在表的默认值、约束增加表达式、通过创建索引在索引上增加表达式等操作导致权限被利用的风险。 通过GRANT授予用户使用TRIGGER的权限时,如果用户使用不当,可能通过WHEN条件创建表达式,当触发器被触发时,存在权限被利用的风险。 给用户赋权时,需要特别注意定义者函数/PACKAGE,定义者函数/PACKAGE会使用函数/PACKAGE的owner权限执行,若赋权不当(包括GRANT ROLE TO ROLE),则存在权限被利用风险。 请勿将对象的权限赋予给过多的用户,可以根据业务需求使用角色或PUBLIC。 在PDB内执行GRANT语句时指定ON DATABASE选项时,仅支持赋予PDB自身的CREATE权限(用于该PDB中的模式)。不支持在Non-PDB中对PDB执行GRANT语句。
  • 功能描述 对角色和用户进行授权操作。 使用GRANT命令进行用户授权包括以下场景: 将系统权限授权给角色或用户 系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN、MONADMIN、OPRADMIN、POLADMIN、INHERIT、REPLICATION和 LOG IN等。 系统权限一般通过CREATE/ALTER ROLE语法来指定。其中,SYSADMIN权限可以通过GRANT/REVOKE ALL PRIVILEGE授予或撤销。但系统权限无法通过ROLE和USER的权限被继承,也无法授予PUBLIC。 将数据库对象授权给角色或用户 将数据库对象(表、视图、指定字段、数据库、函数、模式、表空间等)的相关权限授予特定角色或用户。 GRANT命令将数据库对象的特定权限授予一个或多个角色,这些权限会追加到已有的权限上。 关键字PUBLIC表示该权限要赋予所有角色,包括以后创建的用户。PUBLIC可以看做是一个隐含定义好的组,它总是包括所有角色。任何角色或用户都将拥有通过GRANT直接赋予的权限和所属的权限,再加上PUBLIC的权限。 如果声明了WITH GRANT OPTION,则被授权的用户也可以将此权限赋予他人,否则就不能授权给他人。这个选项不能赋予PUBLIC,这是 GaussDB 特有的属性。 GaussDB会将某些类型的对象上的权限授予PUBLIC。默认情况下,对表、表字段、序列、外部数据源、外部服务器、模式或表空间对象的权限不会授予PUBLIC,而以下这些对象的权限会授予PUBLIC:数据库的CONNECT权限和CREATE TEMP TABLE权限、函数的EXECUTE特权、语言和数据类型(包括域)的USAGE特权。对象拥有者可以撤销默认授予PUBLIC的权限并专门授予权限给其他用户。为了更安全,建议在同一个事务中创建对象并设置权限,这样其他用户就没有时间窗口使用该对象。另外可参考安全加固指南的权限控制章节,对PUBLIC用户组的权限进行限制。这些初始的默认权限可以使用ALTER DEFAULT PRIVILEGES命令修改。 对象的所有者缺省具有该对象上的所有权限,出于安全考虑所有者可以舍弃部分权限,但ALTER、DROP、COMMENT、INDEX、VACUUM以及对象的可再授予权限属于所有者固有的权限,隐式拥有。 将角色或用户的权限授权给其他角色或用户 将一个角色或用户的权限授予一个或多个其他角色或用户。在这种情况下,每个角色或用户都可视为拥有一个或多个数据库权限的集合。 当声明了WITH ADMIN OPTION,被授权的用户可以将该权限再次授予其他角色或用户,以及撤销所有由该角色或用户继承到的权限。当授权的角色或用户发生变更或被撤销时,所有继承该角色或用户权限的用户拥有的权限都会随之发生变更。 三权分立关闭时,系统管理员可以赋予或者撤销任何非永久用户、运维管理员和私用用户角色的权限,安全管理员可以赋予或者撤销任何非系统管理员、内置角色、永久用户、运维管理员和私用用户角色的权限。 将ANY权限授予给角色或用户 将ANY权限授予特定的角色和用户,ANY权限的取值范围参见语法格式。当声明了WITH ADMIN OPTION,被授权的用户可以将该ANY权限再次授予其他角色/用户,或从其他角色/用户处回收该ANY权限。ANY权限可以通过角色被继承,但不能赋予PUBLIC。初始用户和三权分立关闭时的系统管理员用户可以给任何角色/用户授予或撤销ANY权限。 目前支持以下ANY权限:CREATE ANY TABLE、ALTER ANY TABLE、DROP ANY TABLE、SELECT ANY TABLE、INSERT ANY TABLE、UPDATE ANY TABLE、DELETE ANY TABLE、CREATE ANY SEQUENCE、CREATE ANY INDEX、CREATE ANY FUNCTION、EXECUTE ANY FUNCTION、 CREATE ANY PACKAGE、EXECUTE ANY PACKAGE、CREATE ANY TYPE、ALTER ANY TYPE、DROP ANY TYPE、ALTER ANY SEQUENCE、DROP ANY SEQUENCE、SELECT ANY SEQUENCE、ALTER ANY INDEX、DROP ANY INDEX、CREATE ANY SYNONYM、DROP ANY SYNONYM、CREATE ANY TRIGGER、ALTER ANY TRIGGER、DROP ANY TRIGGER。详细的ANY权限范围描述参考表1
  • MY_IND_SUBPARTITIONS MY_IND_SUBPARTITIONS描述了当前用户拥有的二级分区表Local索引的索引分区信息(不包含分区表全局索引)。所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。分布式暂不支持二级分区,该表字段目前全置NULL。 表1 MY_IND_SUBPARTITIONS字段 名称 类型 描述 index_owner character varying(128) 暂不支持,值为NULL。 index_name character varying(128) 暂不支持,值为NULL。 partition_name character varying(128) 暂不支持,值为NULL。 subpartition_name character varying(128) 暂不支持,值为NULL。 high_value text 暂不支持,值为NULL。 high_value_length numeric 暂不支持,值为NULL。 partition_position numeric 暂不支持,值为NULL。 subpartition_position numeric 暂不支持,值为NULL。 status character varying(8) 暂不支持,值为NULL。 tablespace_name character varying(30) 暂不支持,值为NULL。 pct_free numeric 暂不支持,值为NULL。 ini_trans numeric 暂不支持,值为NULL。 max_trans numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(7) 暂不支持,值为NULL。 compression character varying(13) 暂不支持,值为NULL。 blevel numeric 暂不支持,值为NULL。 leaf_blocks numeric 暂不支持,值为NULL。 distinct_keys numeric 暂不支持,值为NULL。 avg_leaf_blocks_per_key numeric 暂不支持,值为NULL。 avg_data_blocks_per_key numeric 暂不支持,值为NULL。 clustering_factor numeric 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed date 暂不支持,值为NULL。 buffer_pool character varying(7) 暂不支持,值为NULL。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 interval character varying(3) 暂不支持,值为NULL。 segment_created character varying(3) 暂不支持,值为NULL。 domidx_opstatus character varying(6) 暂不支持,值为NULL。 parameters character varying(1000) 暂不支持,值为NULL。 父主题: 分区表
  • GLOBAL_SESSION_MEMORY_DETAIL 统计各节点的线程的内存使用情况,以MemoryContext节点来统计,如表1所示。 表1 GLOBAL_SESSION_MEMORY_DETAIL字段 名称 类型 描述 node_name name 节点名称。 sessid text 线程启动时间+线程标识。 sesstype text 线程名称。 contextname text 内存上下文名称。 level smallint 内存上下文的重要级别。 parent text 父级内存上下文名称。 totalsize bigint 总申请内存大小(单位:字节)。 freesize bigint 空闲内存大小(单位:字节)。 usedsize bigint 使用内存大小(单位:字节)。 父主题: Session/Thread
  • 操作步骤 向表中插入数据前,意味着表已创建成功。创建表的步骤请参见创建和管理表。 向表customer_t1中插入一行数据。 数据值是按照这些字段在表中出现的顺序列出的,并且用逗号分隔。通常数据值是文本(常量),但也允许使用标量表达式。 1 gaussdb=# INSERT INTO customer_t1(c_customer_sk, c_customer_id, c_first_name) VALUES (3769, 'hello', 'Grace'); 如果用户已经知道表中字段的顺序,也可无需列出表中的字段。例如以下命令与上面的命令效果相同。 1 gaussdb=# INSERT INTO customer_t1 VALUES (3769, 'hello', 'Grace'); 如果用户不知道所有字段的数值,可以忽略其中的一些。如果INSERT语句中,用户没有显示指定目标表的字段名字,那么VALUES子句中待插入的多个值,将按照列号和目标表的字段一一对应,即VALUES子句的第一个值对应目标表的第一列,VALUES子句的第二个值对应目标表的第二列,以此类推,没有VALUES数值对应的列自动填充缺省值或NULL。例如: 1 2 3 gaussdb=# INSERT INTO customer_t1 (c_customer_sk, c_first_name) VALUES (3769, 'Grace'); gaussdb=# INSERT INTO customer_t1 VALUES (3769, 'hello'); 用户也可以对独立的字段或者整个行明确缺省值。 1 2 3 gaussdb=# INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES (3769, 'hello', DEFAULT); gaussdb=# INSERT INTO customer_t1 DEFAULT VALUES; 如果需要在表中插入多行,请执行如下命令。 1 2 3 4 gaussdb=# INSERT INTO customer_t1 (c_customer_sk, c_customer_id, c_first_name) VALUES (6885, 'maps', 'Joes'), (4321, 'tpcds', 'Lily'), (9527, 'world', 'James'); 如果需要向表中插入多条数据,除此命令外,也可以多次执行插入一行数据命令实现。但是建议使用此命令以提升效率。 如果从指定表插入数据到当前表,例如在数据库中创建了一个表customer_t1的备份表customer_t2,现在需要将表customer_t1中的数据插入到表customer_t2中,则可以执行如下命令。 1 2 3 4 5 6 7 8 9 gaussdb=# CREATE TABLE customer_t2 ( c_customer_sk integer, c_customer_id char(5), c_first_name char(6), c_last_name char(8) ); gaussdb=# INSERT INTO customer_t2 SELECT * FROM customer_t1; 从指定表插入数据到当前表时,若指定表与当前表对应的字段数据类型之间不存在隐式转换,则这两种数据类型必须相同。 使用不带AS的表别名向表中插入数据。 1 2 3 gaussdb=# CREATE TABLE T1(A INT,B TEXT,C TIMESTAMP,D FLOAT); gaussdb=# INSERT INTO T1 T VALUES(1,'HA','1997-01-01 10:00:00'::TIMESTAMP,1.234); gaussdb=# INSERT INTO T1 TT(B,C,D) VALUES('HA','1997-01-01 10:00:00'::TIMESTAMP,1.234); INSERT不带AS的表别名不能为关键字(如SELECT、VALUE)或者表达式,别名要求符合标识符命名规则。 INSERT不带AS的表别名不支持INSERT INTO table_name alias_name(alias_name.col1,...,alias_name.coln) VALUES(xxx)格式。 INSERT的分区表不带AS的表别名不支持指定分区插入操作。 删除备份表。 1 gaussdb=# DROP TABLE customer_t2 CASCADE; 在删除表的时候,若当前需删除的表与其他表有依赖关系,需先删除关联的表,然后再删除当前表。
  • 背景信息 服务端与客户端使用不同的字符集时,两者字符集中单个字符的长度也会不同,客户端输入的字符串会以服务端字符集的格式进行处理,所以产生的最终结果可能会与预期不一致。 表1 客户端和服务端设置字符集的输出结果对比 操作过程 服务端和客户端编码一致 服务端和客户端编码不一致 存入和取出过程中没有对字符串进行操作 输出预期结果 输出预期结果(客户端编码保持不变)。 存入取出过程对字符串有做一定的操作(如字符串函数操作) 输出预期结果 根据对字符串具体操作可能产生非预期结果。 存入过程中对超长字符串有截断处理 输出预期结果 字符集中字符编码长度是否一致,如果不一致可能会产生非预期的结果。 上述字符串函数操作和自动截断产生的结果会有叠加效果,例如:在客户端与服务端字符集不一致的场景下,如果既有字符串操作,又有字符串截断,在字符串被处理完以后的情况下继续截断,这样也会产生非预期的效果。详细的示例请参见表2。 数据库DBCOMPATIBILITY设为兼容TD模式,且GUC参数td_compatible_truncation设置为on的情况下,才会对超长字符串进行截断。 执行如下命令建立示例中需要使用的表table1、table2。 1 2 gaussdb=# CREATE TABLE table1(id int, a char(6), b varchar(6),c varchar(6)); gaussdb=# CREATE TABLE table2(id int, a char(20), b varchar(20),c varchar(20)); 表2 示例 编号 服务端字符集 客户端字符集 是否启用自动截断 示例 结果 说明 1 SQL_ASCII UTF8 是 1 gaussdb=# INSERT INTO table1 VALUES(1,reverse('123AA78'),reverse('123AA78'),reverse('123AA78')); 1 2 3 id |a|b|c ----+------+------+------ 1 | 87| 87| 87 字符串在服务端翻转后,并进行截断,由于服务端和客户端的字符集不一致,字符A在客户端由多个字节表示,结果产生异常。 2 SQL_ASCII UTF8 是 1 gaussdb=# INSERT INTO table1 VALUES(2,reverse('123A78'),reverse('123A78'),reverse('123A78')); 1 2 3 id |a|b|c ----+------+------+------ 2 | 873| 873| 873 字符串翻转后,又进行了自动截断,所以产生了非预期的效果。 3 SQL_ASCII UTF8 是 1 gaussdb=# INSERT INTO table1 VALUES(3,'87A123','87A123','87A123'); 1 2 3 id | a | b | c ----+-------+-------+------- 3 | 87A1 | 87A1 | 87A1 由于字符串类型字段的长度是客户端字符编码长度的整数倍,所以截断后产生结果正常。 4 SQL_ASCII UTF8 否 1 2 gaussdb=# INSERT INTO table2 VALUES(1,reverse('123AA78'),reverse('123AA78'),reverse('123AA78')); gaussdb=# INSERT INTO table2 VALUES(2,reverse('123A78'),reverse('123A78'),reverse('123A78')); 1 2 3 4 id |a|b|c ----+-------------------+--------+-------- 1 | 87 321| 87 321 | 87 321 2 | 87321| 87321| 87321 与示例1类似,多字节字符翻转之后不再表示原来的字符。
  • _PG_FOREIGN_SERVERS 显示外部服务器的信息,如表1所示。该视图只有sysadmin权限可以查看。 表1 _PG_FOREIGN_SERVERS字段 名称 类型 描述 oid oid 外部服务器的oid。 srvoptions text[] 外部服务器指定选项,使用“keyword=value”格式的字符串。 foreign_server_catalog information_schema.sql_identifier 外部服务器所在database名称(永远为当前数据库)。 foreign_server_name information_schema.sql_identifier 外部服务器名称。 foreign_data_wrapper_catalog information_schema.sql_identifier 外部数据封装器所在database名称(永远为当前数据库)。 foreign_data_wrapper_name information_schema.sql_identifier 外部数据封装器名称。 foreign_server_type information_schema.character_data 外部服务器的类型。 foreign_server_version information_schema.character_data 外部服务器的版本。 authorization_identifier information_schema.sql_identifier 外部服务器的所有者的角色名称。 父主题: Information Schema
  • GLOBAL_STATIO_SYS_INDEXES GLOBAL_STATIO_SYS_INDEXES视图显示各节点的命名空间中所有系统表索引的I/O状态信息,如表1所示。 表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
  • 双集群容灾查询函数 gs_get_local_barrier_status() 描述:两地三中心跨Region容灾特性开启后,主集群和灾备集群进行日志同步,通过barrier日志在主集群的落盘,在灾备集群的回放来确定主集群归档日志进度与灾备集群日志回放进度。gs_get_local_barrier_status用于查询灾备集群每个节点当前的日志回放情况。 返回值类型:text barrier_id:灾备集群某节点当前回放到的最新barrier ID。 barrier_lsn:灾备集群某节点当前回放到的最新barrier ID的Log Sequence Number ( LSN )。 archive_lsn:灾备集群某节点当前已获得归档日志的位置,该参数当前未生效。 flush_lsn:灾备集群某节点当前已完成刷盘日志位置。 gs_hadr_in_recovery() 描述:两地三中心跨Region容灾特性开启后,查询当前节点是否处于基于目标barrier的日志恢复中,还在恢复中返回true。只有完成日志恢复,才会启动switchover流程中的灾备集群升为生产集群的步骤,需要系统管理员角色执行。 返回值类型:Boolean 该函数只有在容灾集群启动计划内switchover时使用。 gs_streaming_dr_get_switchover_barrier() 描述:两地三中心跨Region容灾-基于流式复制的解决方案中,查询灾备集群参与容灾的CN与首备DN实例是否已接收到switchover barrier日志并完成回放,已完成返回true。灾备集群只有在所有DN实例都完成switchover barrier日志回放,才会启动switchover流程中的灾备数据库实例升为生产数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在流式容灾解决方案中容灾数据库实例启动计划内switchover时使用。 gs_streaming_dr_service_truncation_check() 描述:两地三中心跨Region容灾-基于流式复制的解决方案中,查询主集群参与容灾的CN与主DN实例是否已完成switchover barrier日志发送,已完成返回true。只有完成日志发送,才会启动switchover流程中的生产数据库实例降为灾备数据库实例的步骤(需要系统管理员角色)。 返回值类型:Boolean 备注:该函数只有在容灾数据库实例启动计划内switchover时使用。 gs_hadr_local_rto_and_rpo_stat() 描述:显示流式容灾的本地节点数据库实例和灾备数据库实例日志流控信息(如果在没有参与流式容灾的节点执行,如备DN或部分CN节点,则可能返回空)。 返回值类型:record,具体各个字段的类型和含义如表1所示。 表1 gs_hadr_local_rto_and_rpo_stat参数说明 参数 类型 描述 hadr_sender_node_name text 节点的名称,包含主数据库实例和备数据库实例首备。 hadr_receiver_node_name text 备数据库实例首备名称。 source_ip text 主数据库实例主DN IP地址。 source_port int 主数据库实例主DN通信端口。 dest_ip text 备数据库实例首备DN IP地址。 dest_port int 备数据库实例首备DN通信端口。 current_rto int 流控的信息,当前主备数据库实例的日志rto时间(单位:秒)。 target_rto int 流控的信息,目标主备数据库实例间的rto时间(单位:秒)。 current_rpo int 流控的信息,当前主备数据库实例的日志rpo时间(单位:秒)。 target_rpo int 流控的信息,目标主备数据库实例间的rpo时间(单位:秒)。 rto_sleep_time int RTO流控信息,为了达到目标rto,预期主机walsender所需要的睡眠时间(单位:微秒)。 rpo_sleep_time int RPO流控信息,为了达到目标rpo,预期主机xlogInsert所需要的睡眠时间(单位:微秒)。 gs_hadr_remote_rto_and_rpo_stat() 描述:显示流式容灾的其他所有分片或CN数据库实例和灾备数据库实例日志流控信息(一般在CN节点执行;如果在DN节点执行,可能返回为空)。 返回值类型:record,具体各个字段的类型和含义如表2所示。 表2 gs_hadr_remote_rto_and_rpo_stat 参数 类型 描述 hadr_sender_node_name text 节点的名称,包含主数据库实例和备数据库实例首备。 hadr_receiver_node_name text 备数据库实例首备名称。 source_ip text 主数据库实例主DN IP地址。 source_port int 主数据库实例主DN通信端口。 dest_ip text 备数据库实例首备DN IP地址。 dest_port int 备数据库实例首备DN通信端口。 current_rto int 流控的信息,当前主备数据库实例的日志rto时间(单位:秒)。 target_rto int 流控的信息,目标主备数据库实例间的rto时间(单位:秒)。 current_rpo int 流控的信息,当前主备数据库实例的日志rpo时间(单位:秒)。 target_rpo int 流控的信息,目标主备数据库实例间的rpo时间(单位:秒)。 rto_sleep_time int RTO流控信息,为了达到目标rto,预期主机walsender所需要的睡眠时间(单位:微秒)。 rpo_sleep_time int RPO流控信息,为了达到目标rpo,预期主机xlogInsert所需要的睡眠时间(单位:微秒)。 gs_is_wal_truncate_complete() 描述:用于查询灾备集群升主时,日志在线截断是否完成,已完成返回true。每次查询到已完成后会重置该值。 返回值类型:Boolean 备注:该函数只有在灾备集群升主时使用。 父主题: 系统管理函数
  • ADM_HIST_SQLTEXT ADM_HIST_SQLTEXT视图描述当前节点的执行语句的信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在PG_CATALOG和SYS Schema下。 WDR Snapshot启动(即GUC参数enable_wdr_snapshot为on时)后,用户可以查看此视图中的数据。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。 表1 ADM_HIST_SQLTEXT字段 名称 类型 描述 dbid integer 数据库ID。 sql_id bigint 查询标识。 sql_text clob 查询对应文本。 command_type integer 暂不支持,值为0。 con_dbid integer 容器数据库ID,目前与dbid取值相同。 con_id integer 容器ID,目前不支持容器,值为0。 父主题: 其他系统视图
  • PG_STAT_DATABASE_CONFLI CTS PG_STAT_DATABASE_CONFLICTS视图显示数据库冲突状态的统计信息。在多租场景下,在PDB仅显示本PDB的信息。 表1 PG_STAT_DATABASE_CONFLICTS字段 名称 类型 描述 datid oid 数据库标识。 datname name 数据库名称。 confl_tablespace bigint 冲突的表空间的数目。 confl_lock bigint 冲突的锁数目。 confl_snapshot bigint 冲突的快照数目。 confl_bufferpin bigint 冲突的缓冲区数目。 confl_deadlock bigint 冲突的死锁数目。 父主题: 其他系统视图
  • GS_SQL_PATCH GS_SQL_PATCH系统表存储所有SQL_PATCH的状态信息。 表1 GS_SQL_PATCH字段 名称 类型 描述 patch_name name PATCH名称。 unique_sql_id bigint 查询全局唯一ID。 owner oid PATCH的创建用户ID。 enable boolean PATCH是否生效。 status "char" PATCH的状态(预留字段)。 abort boolean 是否是AbortHint。 hint_string text Hint文本。 hint_node pg_node_tree Hint解析&序列化的结果。 original_query text 原始语句(预留字段)。 patched_query text PATCH之后的语句(预留字段)。 original_query_tree pg_node_tree 原始语句的解析结果(预留字段)。 patched_query_tree pg_node_tree PATCH之后语句的解析结果(预留字段)。 description text PATCH的备注。 parent_unique_sql_id bigint PATCH生效的SQL语句的外层语句的全局唯一ID,存储过程外的语句该值为0,存储过程内的语句该值为调用该存储过程语句的全局唯一ID。 父主题: 其他系统表
  • 参数说明 WORK | TRANSACTION BEGIN格式中的可选关键字,没有实际作用。 ISOLATION LEVEL 指定事务隔离级别,它决定当一个事务中存在其他并发运行事务时它能够看到什么数据。 在事务中第一个数据修改语句(INSERT、DELETE、UPDATE、FETCH、COPY)执行之后,事务隔离级别就不能再次设置。 取值范围: READ COMMITTED:读已提交隔离级别,只能读到已经提交的数据,而不会读到未提交的数据。这是缺省值。 READ UNCOMMITTED:读未提交隔离级别,指定后的行为和READ COMMITTED行为一致。 REPEATABLE READ:可重复读隔离级别,仅仅看到事务开始之前提交的数据,它不能看到未提交的数据,以及在事务执行期间由其它并发事务提交的修改。 SERIALIZABLE:GaussDB目前功能上不支持此隔离级别,设置该隔离级别时,等价于REPEATABLE READ。 READ WRITE | READ ONLY 指定事务访问模式(读/写或者只读)。
  • 示例 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 --创建SCHEMA。 gaussdb=# CREATE SCHEMA tpcds; --创建表tpcds.reason。 gaussdb=# CREATE TABLE tpcds.reason (c1 int, c2 int); --以默认方式启动事务。 gaussdb=# START TRANSACTION; gaussdb=# SELECT * FROM tpcds.reason; gaussdb=# END; --以默认方式启动事务。 gaussdb=# BEGIN; gaussdb=# SELECT * FROM tpcds.reason; gaussdb=# END; --以隔离级别为READ COMMITTED,读/写方式启动事务。 gaussdb=# START TRANSACTION ISOLATION LEVEL READ COMMITTED READ WRITE; gaussdb=# SELECT * FROM tpcds.reason; gaussdb=# COMMIT; --删除表。 gaussdb=# DROP TABLE tpcds.reason; --删除SCHEMA。 gaussdb=# DROP SCHEMA tpcds CASCADE;
  • 语法格式 格式一:START TRANSACTION格式 1 2 3 4 5 6 7 START TRANSACTION [ { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ]; 格式二:BEGIN格式 1 2 3 4 5 6 7 BEGIN [ WORK | TRANSACTION ] [ { ISOLATION LEVEL { READ COMMITTED | READ UNCOMMITTED | SERIALIZABLE | REPEATABLE READ } | { READ WRITE | READ ONLY } } [, ...] ];
  • DB_TAB_SUBPARTITIONS DB_TAB_SUBPARTITIONS视图显示当前用户所能访问的二级分区表的信息。所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_TAB_SUBPARTITIONS字段 名称 类型 描述 table_owner character varying(64) 表的所有者。 table_name character varying(64) 关系表名称。 partition_name character varying(64) 分区名称。 subpartition_name character varying(64) 二级分区名称。 high_value text 二级分区的边界值。 对于范围分区和间隔分区,显示各分区的上边界值。 对于列表分区,显示各分区的取值列表。 对于哈希分区,显示各分区的编号。 tablespace_name name 二级分区表的表空间名称。 schema character varying(64) 名称空间的名称。 high_value_length integer 二级分区边界值的字符长度。 partition_position numeric 分区在表中的位置。 subpartition_position numeric 二级分区在分区中的位置。 pct_free numeric 块中可用空间的最小百分比。 pct_used numeric 暂不支持,值为NULL。 ini_trans numeric 初始事务数,默认值为4,非USTORE分区表时为NULL。 max_trans numeric 最大事务数,默认值为128,非USTORE分区表时为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extent numeric 暂不支持,值为NULL。 max_extent numeric 暂不支持,值为NULL。 max_size numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 logging character varying(3) 是否记录对表的更改。 compression character varying(8) 表分区的实际压缩属性。 compress_for character varying(30) 暂不支持,值为NULL。 num_rows numeric 二级分区中的行数。 blocks numeric 暂不支持,值为NULL。 empty_blocks numeric 暂不支持,值为NULL。 avg_space numeric 暂不支持,值为NULL。 chain_cnt numeric 暂不支持,值为NULL。 avg_row_len numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed timestamp with time zone 最近分析此分区的日期。 buffer_pool character varying(7) 二级分区的缓冲池。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 interval character varying(3) 分区是否在间隔分区表的间隔节中。 segment_created character varying(3) 表二级分区是否创建了段。 indexing character varying(3) 暂不支持,值为NULL。 read_only character varying(3) 暂不支持,值为NULL。 inmemory character varying(8) 暂不支持,值为NULL。 inmemory_priority character varying(8) 暂不支持,值为NULL。 inmemory_distribute character varying(15) 暂不支持,值为NULL。 inmemory_compression character varying(17) 暂不支持,值为NULL。 inmemory_duplicate character varying(13) 暂不支持,值为NULL。 inmemory_service character varying(12) 暂不支持,值为NULL。 inmemory_service_name character varying(1000) 暂不支持,值为NULL。 cellmemory character varying(24) 暂不支持,值为NULL。 memoptimize_read character varying(8) 暂不支持,值为NULL。 memoptimize_write character varying(8) 暂不支持,值为NULL。 父主题: 分区表
  • 参数说明 LOCAL 指定导入文件的位置。 不指定LOCAL时,若file_name为相对路径,则默认导入路径为数据目录。 若指定LOCAL参数则需要指定file_name为绝对路径,当指定为相对路径时默认导入路径为数据库二进制所在路径,即$GAUSSHOME/bin/。 当导入数据与表中数据冲突或文件中字段数小于指定表中字段数时,指定LOCAL与指定IGNORE作用一致。 REPLACE | IGNORE 当导入数据与表中原有数据冲突时,若指定REPLACE,则替换冲突行数据;若指定IGNORE,则跳过冲突行数据,继续导入。若数据冲突但不指定REPLACE、IGNORE或LOCAL中任意一个,则终止导入并报错。 若文件字段数小于指定表列数,指定LOCAL或IGNORE参数会为剩余列赋默认值。不指定IGNORE或LOCAL参数会报错。 PARTITION 当导入表为分区表时,此参数用来指定分区。若数据与指定分区范围不一致,则报错。 CHARACTER SET 指定数据文件的编码格式名称,缺省为当前客户端编码格式。 FIELDS | COLUMNS TERMINATED BY 指定两列之间分隔符,缺省为“\t”。 指定换行符不能与分隔符相同。 [OPTIONALLY] ENCLOSED BY 指定引号字符,缺省为''。 OPTIONALLY参数为可选参数,无实际作用。 引号符仅支持单字符,不支持字符串。 ESCAPED BY 指定转义符,缺省为“\”。 转义字符仅支持单字符,不支持字符串。 LINES STARTING BY 指定导入数据文件起始字段样式。 TERMINATED BY 指定导入数据文件换行符样式。 IGNORE 指定数据导入时,跳过数据文件的前number行。 col_name_or_user_var 可选的待复制字段列表。 取值范围:如果没有声明字段列表,将使用所有字段。 指定列参数不支持重复指定列。 LOAD DATA语法指定列时,col_name_or_user_var仅支持指定为表中存在列,不支持指定为用户变量。 SET 指定列值,可以指定为表达式或DEFAULT。 表达式中不支持列名。 若表达式结果类型与被赋值列对应类型之间不存在隐式转换函数则报错。
  • 示例 --创建表。 gaussdb=# CREATE TABLE load_data_tbl1(load_col1 INT UNIQUE, load_col2 INT, load_col3 CHAR(10)); --向表中插入一条数据。 gaussdb=# INSERT INTO load_data_tbl1 VALUES(0,0,'load0'); --从文件/home/omm/load1.csv中复制数据到load_data_tbl表,指定列名,设置.load_col3列值统一为"load"。 gaussdb=# LOAD DATA INFILE '/home/omm/load1.csv' INTO TABLE load_data_tbl1(load_col1, load_col2) SET load_col3 = 'load'; --后面导入数据load_col3列值均为'load' gaussdb=# SELECT * FROM load_data_tbl1; load_col1 | load_col2 | load_col3 -----------+-----------+------------ 0 | 0 | load0 3 | 3 | load 1 | 1 | load 2 | 2 | load (4 rows) --从文件/home/omm/load2.csv中复制数据到load_data_tbl表.,指定IGNORE忽略冲突 gaussdb=# LOAD DATA INFILE '/home/omm/load2.csv' IGNORE INTO TABLE load_data_tbl1; --表load_data_tbl1中数据不变,冲突数据跳过。 gaussdb=# SELECT * FROM load_data_tbl1; load_col1 | load_col2 | load_col3 -----------+-----------+------------ 0 | 0 | load0 3 | 3 | load 1 | 1 | load 2 | 2 | load (4 rows) --创建分区表 gaussdb=# CREATE TABLE load_data_tbl2 ( load_col_col1 INT, load_col_col2 INT ) PARTITION BY RANGE (load_col_col2) ( PARTITION load_p1 VALUES LESS THAN(3), PARTITION load_p2 VALUES LESS THAN(9), PARTITION load_p3 VALUES LESS THAN(MAXVALUE) ); --从文件/home/omm/load3.csv中复制数据到load_data_tbl2表.,指定PARTITION。 gaussdb=# LOAD DATA INFILE '/home/omm/load3.csv' INTO TABLE load_data_tbl2 PARTITION (load_p2); --数据导入到load_data_tbl2表中指定分区 gaussdb=# SELECT * FROM load_data_tbl2; load_col_col1 | load_col_col2 ---------------+--------------- 4 | 4 5 | 5 (2 rows) --创建表 gaussdb=# CREATE TABLE load_data_tbl3(load_col_col1 CHAR(30)); --从文件/home/omm/load4.csv中复制数据到load_data_tbl3表.,指定FIELDS ENCLOSED BY; gaussdb=# LOAD DATA INFILE '/home/omm/load4.csv' INTO TABLE load_data_tbl3 FIELDS ENCLOSED BY '"'; --数据"load test quote"双引号被去掉,'load test single_quote'单引号保留 gaussdb=# select * from load_data_tbl3; load_col_col1 -------------------------------- load test quote 'load test single_quote' (2 rows) --删除表。 gaussdb=# drop table load_data_tbl1; gaussdb=# DROP TABLE load_data_tbl2; gaussdb=# DROP TABLE load_data_tbl3;
  • 语法格式 LOAD DATA [LOCAL] INFILE 'file_name' [REPLACE | IGNORE] INTO TABLE tbl_name [PARTITION (partition_name [, partition_name] ...)] [CHARACTER SET charset_name] [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ] [IGNORE number {LINES | ROWS}] [(col_name_or_user_var [, col_name_or_user_var] ...)] [SET col_name={expr | DEFAULT} [, col_name={expr | DEFAULT}] ...]
  • 注意事项 LOAD DATA语法仅在MYSQL兼容模式(sql_compatibility = 'MYSQL')下支持。 LOAD DATA语法仅在开启b_format_version='5.7'和b_format_dev_version='s2'参数后与MYSQL功能一致。 LOAD DATA语法权限相关GUC参数与COPY FROM语法注意事项一致。 LOAD DATA语法需要拥有表的INSERT和DELETE权限。 执行LOAD DATA语法写入表中的数据若无法转换为表中数据类型格式时,将导致导入失败。 LOAD DATA只能用于表,不能用于视图。
  • ADM_PART_COL_STATIS TICS ADM_PART_COL_STATISTI CS 视图显示数据库中所有表分区的列统计信息和直方图信息。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_PART_COL_STATISTICS字段 名称 类型 描述 owner character varying(128) 分区表的所有者。 table_name character varying(128) 表名。 partition_name character varying(128) 表分区名称。 column_name character varying(4000) 列名。 num_distinct numeric 暂不支持,值为NULL。 low_value raw 暂不支持,值为NULL。 high_value raw 暂不支持,值为NULL。 density numeric 暂不支持,值为NULL。 num_nulls numeric 暂不支持,值为NULL。 num_buckets numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed date 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 notes character varying(63) 暂不支持,值为NULL。 avg_col_len numeric 暂不支持,值为NULL。 histogram character varying(15) 暂不支持,值为NULL。 schema character varying(64) 列所属的名称空间的名称。 父主题: 分区表
  • GLOBAL_TRANSACTIONS_RUNNING_XACTS 显示集群中各个CN和DN节点运行事务的信息,如表1所示。 表1 GLOBAL_TRANSACTIONS_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务在GTM对应的句柄。 gxid xid 事务id号。 state tinyint 事务状态(3:prepared或者0:starting)。 node text 节点名称。 xmin xid 节点上当前数据涉及的最小事务号xmin。 vacuum boolean 标志当前事务是否是lazy vacuum事务(lazy vacuum是一种vacuum机制,在需要时进行vacuum)。 true:表示是。 false:表示否。 timeline bigint 标志数据库重启次数。 prepare_xid xid 处于prepared状态的事务的id号,若不在prepared状态,值为0。 pid bigint 事务对应的线程id。 next_xid xid CN传给DN的事务id号。 dbid oid 事务对应的数据库id。 父主题: Transaction
  • GS_SPM_SYS_BASELINE GS_SPM_SYS_BASELINE是用于查看数据库中baseline信息的视图,SYSADMIN和初始用户权限均可以访问该视图。 表1 GS_SPM_SYS_BASELINE字段 名称 类型 描述 sql_hash bigint SPM中SQL的唯一标识。 plan_hash bigint 当前SQL中的plan的唯一标识。 unique_sql_id bigint 数据库中SQL的唯一标识 outline text outline文本,可固定当前计划的一组Hint。 status integer 计划的状态,取值: 0(UNACC):未接受的计划。 1(ACC):已经接受的计划。 2(FIXED):一种特殊的ACC状态的计划,计划的匹配优先级高于ACC状态的计划。 gplan boolean 当前outline对应的计划是否是gplan。 cost double precision 计划的总代价。 sql_text text SQL的文本串。 param_num integer SQL的参数数量。 source text baseline的来源。 creation_time timestamp with time zone baseline的创建时间。 modification_time timestamp with time zone baseline的修改时间。 jump_intercept_cnt bigint 当前baseline拦截计划跳变次数。 invalid boolean 当前baseline是否无效。 父主题: SPM计划管理
  • PG_ROLES PG_ROLES视图显示数据库角色的相关信息。初始化用户和具有sysadmin属性或createrole属性的用户可以查看全部角色的信息,其他用户只能查看自己的信息。 表1 PG_ROLES字段 名称 类型 引用 描述 rolname name - 角色名称。 rolsuper boolean - 该角色是否是拥有最高权限的初始系统管理员。 t(true):是。 f(false):否。 rolinherit boolean - 该角色是否继承角色的权限。 t(true):是。 f(false):否。 rolcreaterole boolean - 该角色是否可以创建其他的角色。 t(true):是。 f(false):否。 rolcreatedb boolean - 该角色是否可以创建数据库。 t(true):是。 f(false):否。 rolcatupdate boolean - 该角色是否可以直接更新系统表。只有usesysid=10的初始系统管理员拥有此权限。其他用户无法获得此权限。 t(true):是。 f(false):否。 rolcanlogin boolean - 该角色是否可以登录数据库。 t(true):是。 f(false):否。 rolreplication boolean - 该角色是否可以复制。 t(true):是。 f(false):否。 rolauditadmin boolean - 该角色是否为审计管理员。 t(true):是。 f(false):否。 rolsystemadmin boolean - 该角色是否为系统管理员。 t(true):是。 f(false):否。 rolconnlimit integer - 对于可以登录的角色,此字段限制了该角色允许发起的最大并发连接数。 -1表示无限制。 rolpassword text - 密文存储后的用户密码,始终为********。 rolvalidbegin timestamp with time zone - 账户的有效开始时间。如果没有设置有效开始时间,则为NULL。 rolvaliduntil timestamp with time zone - 账户的有效结束时间。如果没有设置有效结束时间,则为NULL。 rolrespool name - 用户所能够使用的resource pool。 rolparentid oid PG_AUTHID.rolparentid 用户所在组用户的OID。 roltabspace text - 用户永久表存储空间限额,单位KB。 rolconfig text[] PG_DB_ROLE_SETTING.setconfig 运行时配置项的默认值。 oid oid PG_AUTHID.oid 角色的ID。 roluseft boolean PG_AUTHID.roluseft 角色是否可以操作外表。 t(true):是。 f(false):否。 rolkind "char" - 角色类型。 n:普通用户,即非永久用户。 p:永久用户。 nodegroup name - 角色所关联的node_group名称,如果没有关联node group,该值为空。 roltempspace text - 用户临时表存储空间的限额,单位KB。 rolspillspace text - 用户算子落盘空间的限额,单位KB。 rolmonitoradmin boolean - 该角色是否为监控管理员。 t(true):是。 f(false):否。 roloperatoradmin boolean - 该角色是否为运维管理员。 t(true):是。 f(false):否。 rolpolicyadmin boolean - 该角色是否为安全策略管理员。 t(true):是。 f(false):否。 父主题: 用户和权限管理
  • PG_RUNNING_XACTS PG_RUNNING_XACTS视图显示当前节点运行事务的信息。具体字段信息如表1所示。 表1 PG_RUNNING_XACTS字段 名称 类型 描述 handle integer 事务在GTM对应的句柄。 gxid xid 事务id号。 state tinyint 事务状态。 3:prepared。 0:starting。 node text 节点名称。 xmin xid 节点上当前数据涉及的最小事务号。 vacuum boolean 表示当前事务是否是lazy vacuum事务。 t(true):表示是。 f(false):表示不是。 timeline bigint 数据库重启次数。 prepare_xid xid 处于prepared状态的事务的id,若事务不在prepared状态,值为0。 pid bigint 事务对应的线程id。 next_xid xid CN传给DN的事务id。 dbid oid 事务对应的数据库id。 父主题: 其他系统视图
  • Top 10 Events by Total Wait Time Top 10 Events by Total Wait Time列名称及描述如表1所示。 表1 Top 10 Events by Total Wait Time报表主要内容 列名称 描述 Event Wait Event名称。 Waits wait次数。 Total Wait Time(us) 总wait时间(微秒)。 Avg Wait Time(us) 平均wait时间(微秒)。 Type Wait Event类别。 父主题: WDR报告信息介绍
  • 操作步骤 收集SQL中涉及到的所有表的统计信息。在数据库中,统计信息是优化器生成计划的源数据。没有收集统计信息或者统计信息陈旧往往会造成执行计划严重劣化,从而导致性能问题。从经验数据来看,10%左右性能问题是因为没有收集统计信息。具体请参见更新统计信息。 通过查看执行计划来查找原因。如果SQL长时间运行未结束,通过EXPLAIN命令查看执行计划,进行初步定位。如果SQL可以运行出结果,则推荐使用EXPLAIN ANALYZE或EXPLAIN PERFORMANCE查看执行计划及实际运行情况,以便更精确地定位问题原因。有关执行计划的详细介绍请参见SQL执行计划介绍。 审视和修改表定义。 针对EXPLAIN或EXPLAIN PERFORMANCE信息,定位SQL慢的具体原因以及改进措施,具体请参见典型SQL调优点。 通常情况下,有些SQL语句可以通过查询重写转换成等价的,或特定场景下等价的语句。重写后的语句比原语句更简单,且可以简化某些执行步骤达到提升性能的目的。查询重写方法在各个数据库中基本是通用的。经验总结:SQL语句改写规则介绍了几种常用的通过改写SQL进行调优的方法。 如果使用上述常规手段无法分析慢SQL根因的场景,还可以通过使用plan trace特性来分析慢SQL根因,具体请参见PLAN TRACE使用介绍。
  • STATIO_ALL_TABLES STATIO_ALL_TABLES视图显示数据库当前节点每张表(包括TOAST表)的I/O状态信息,如表1所示。 表1 STATIO_ALL_TABLES字段 名称 类型 描述 relid oid 表OID。 schemaname name 该表模式名。 relname name 表名。 heap_blks_read bigint 从该表中读取的磁盘块数。 heap_blks_hit bigint 该表缓存命中数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引命中缓存数。 toast_blks_read bigint 该表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 该表的TOAST表命中缓冲区数(如果存在)。 tidx_blks_read bigint 该表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 该表的TOAST表索引命中缓冲区数(如果存在)。 last_updated timestamp with time zone 视图中该对象监控数据最后一次更新的时间。 父主题: Cache/IO
  • 参数说明 OR REPLACE 可选。如果同义词已存在,则重新定义。 PUBLIC 可选参数。创建PUBLIC同义词。 同一数据库下,PUBLIC同义词不能重名。 数据库从不支持PUBLIC同义词的版本升级到支持PUBLIC同义词的版本时,升级提交前不支持创建、删除PUBLIC同义词。 所有用户都可以访问PUBLIC同义词。除初始用户、系统管理员的用户外,创建和删除PUBLIC同义词需要具有对应CREATE PUBLIC SYNONYM和DROP PUBLIC SYNONYM的权限。 PUBLIC同义词在系统表PG_SYNONYM中的synnamespace和synowner对应为0,在系统视图ADM_SYNONYMS和DB_SYNONYMS中的owner为PUBLIC,schema_name为NULL。 未指定同义词SCHEMA情况下,首先检索同名对象,判断同名对象是否存在;然后检索同义词,按照SEARCH_PATH检索;最后检索PUBLIC同义词。指定同义词SCHEMA情况下,不检索PUBLIC同义词。 synonym_name 创建的同义词名称,可以带模式名。 取值范围:字符串,要符合标识符命名规范。 object_name 关联的对象名称,可以带模式名。 取值范围:字符串,要符合标识符命名规范。 object_name可以是不存在的对象名称。 object_name可以是使用DATABASE LINK方式访问远程对象。DATABASE LINK详细使用方式请参见DATABASE LINK。 避免对包含密码等敏感信息的函数,如加解密类函数gs_encrypt、gs_decrypt、gs_encrypt_bytera、gs_decrypt_bytea等创建别名并且使用别名调用,防止敏感信息泄露。
  • 示例 --创建模式ot。 gaussdb=# CREATE SCHEMA ot; --创建表ot.test_tbl1。 gaussdb=# CREATE TABLE ot.test_tbl1(c1 INT, c2 INT); gaussdb=# INSERT INTO ot.test_tbl1 values(1,1); --查看当前search_path。 gaussdb=# SHOW search_path; search_path ---------------- "$user",public (1 row) --因为当前search_path中不包含ot,并且当前用户不是ot,所以直接查看表名会报错。 gaussdb=# SELECT * FROM test_tbl1; ERROR: relation "test_tbl1" does not exist LINE 1: SELECT * FROM test_tbl1; --创建同义词。 gaussdb=# CREATE OR REPLACE SYNONYM test_tbl1 FOR ot.test_tbl1; --使用同义词。 gaussdb=# SELECT * FROM test_tbl1; c1 | c2 ----+---- 1 | 1 (1 row) gaussdb=# INSERT INTO test_tbl1 VALUES (2,2); --删除。 gaussdb=# DROP SYNONYM test_tbl1; gaussdb=# DROP TABLE ot.test_tbl1; gaussdb=# DROP SCHEMA ot CASCADE;
共100000条