华为云用户手册

  • 会话信息函数 SYS_CONTEXT() 描述:返回当前时刻与上下文命名空间'namespace'关联的参数'parameter'的值。 返回值类型:text 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SELECT SYS_CONTEXT('userenv','NLS_CURRENCY'); sys_context ------------- $ (1 row) SELECT SYS_CONTEXT('userenv','NLS_DATE_FORMAT'); sys_context --------------- ISO, MDY (1 row) SELECT SYS_CONTEXT('userenv','NLS_DATE_LANGUAGE'); sys_context ------------- en_US.UTF-8 (1 row) current_catalog() 描述:当前数据库的名称(在标准SQL中称"catalog")。 返回值类型:name 示例: 1 2 3 4 5 testdb=# SELECT current_catalog; current_database ------------------ testdb (1 row) current_database() 描述:当前数据库的名称。 返回值类型:name 示例: 1 2 3 4 5 testdb=# SELECT current_database(); current_database ------------------ testdb (1 row) current_query() 描述:由客户端提交的当前执行语句(可能包含多个声明)。 返回值类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT current_query(); current_query ------------------------- SELECT current_query(); (1 row) current_schema[()] 描述:当前模式的名称。 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT current_schema(); current_schema ---------------- public (1 row) 备注:current_schema返回在搜索路径中第一个顺位有效的模式名。(如果搜索路径为空则返回NULL,没有有效的模式名也返回NULL)。如果创建表或者其他命名对象时没有声明目标模式,则将使用这些对象的模式。 current_schemas(Boolean) 描述:搜索路径中的模式名称。 返回值类型:name[] 示例: 1 2 3 4 5 gaussdb=# SELECT current_schemas(true); current_schemas --------------------- {pg_catalog,public} (1 row) 备注: current_schemas(Boolean)返回搜索路径中所有模式名称的数组。布尔选项决定像pg_catalog这样隐含包含的系统模式是否包含在返回的搜索路径中。 搜索路径可以通过运行时设置更改。命令是: 1 SET search_path TO schema [, schema, ...] database() 描述:返回当前的schema的名称。 参数:无 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT database(); database ---------- public (1 row) 此函数在MYSQL模式数据库中,且GUC参数b_format_version = '5.7'和b_format_dev_version = 's1'时生效。 current_user() 描述:当前执行环境下的用户名。 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT current_user; current_user -------------- omm (1 row) 备注:current_user用于权限检查的用户标识。通常表示会话用户,可以通过SET ROLE进行修改。在函数执行的过程中,受SECURITY DEFINER属性影响。 definer_current_user 描述:当前执行环境下的用户名。 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT definer_current_user(); definer_current_user ---------------------- omm (1 row) 备注:通常definer_current_user和current_user结果相同,但在存储过程中执行该函数会返回定义当前存储过程的用户名。 pg_current_sessionid() 描述:当前执行环境下的会话ID。 返回值类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT pg_current_sessionid(); pg_current_sessionid ---------------------------- 1579228402.140190434944768 (1 row) 备注:pg_current_sessionid()是用于获取当前执行环境下的会话ID。其组成结构为:时间戳.会话ID,当线程池模式开启(enable_thread_pool=on)时,会话ID为SessionID;而线程池模式关闭时,会话ID实际为线程ID。 pg_current_sessid() 描述:当前执行环境下的会话ID。 返回值类型:text 示例: gaussdb=# select pg_current_sessid(); pg_current_sessid ------------------- 140308875015936 (1 row) 备注:在线程池模式下获得当前会话的会话ID,非线程池模式下获得当前会话对应的后台线程ID。 pg_current_userid() 描述:当前用户ID。 返回值类型:text 示例: gaussdb=# SELECT pg_current_userid(); pg_current_userid ------------------- 10 (1 row) tablespace_oid_name(oid) 描述:根据表空间oid,查找表空间名称。 返回值类型:text 示例: 1 2 3 4 5 gaussdb=# select tablespace_oid_name(1663); tablespace_oid_name --------------------- pg_default (1 row) inet_client_addr() 描述:连接的远端地址。inet_client_addr返回当前客户端的IP地址。 此函数只有在远程连接模式下有效。 返回值类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT inet_client_addr(); inet_client_addr ------------------ 10.10.0.50 (1 row) inet_client_port() 描述:连接的远端端口。inet_client_port返回当前客户端的端口号。 此函数只有在远程连接模式下有效。 返回值类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT inet_client_port(); inet_client_port ------------------ 33143 (1 row) inet_server_addr() 描述:连接的本地地址。inet_server_addr返回服务器接收当前连接用的IP地址。 此函数只有在远程连接模式下有效。 返回值类型:inet 示例: 1 2 3 4 5 gaussdb=# SELECT inet_server_addr(); inet_server_addr ------------------ 10.10.0.13 (1 row) inet_server_port() 描述:连接的本地端口。inet_server_port返回接收当前连接的端口号。如果是通过Unix-domain socket连接的,则所有这些函数都返回NULL。 此函数只有在远程连接模式下有效。 返回值类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT inet_server_port(); inet_server_port ------------------ 8000 (1 row) pg_backend_pid() 描述:当前会话连接的服务线程的线程ID。 返回值类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT pg_backend_pid(); pg_backend_pid ----------------- 140229352617744 (1 row) pg_conf_load_time() 描述:配置加载时间。pg_conf_load_time返回最后加载服务器配置文件的时间戳。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 gaussdb=# SELECT pg_conf_load_time(); pg_conf_load_time ------------------------------ 2017-09-01 16:05:23.89868+08 (1 row) pg_my_temp_schema() 描述:会话的临时模式的OID,不存在则为0。 返回值类型:oid 示例: 1 2 3 4 5 gaussdb=# SELECT pg_my_temp_schema(); pg_my_temp_schema ------------------- 0 (1 row) 备注:pg_my_temp_schema返回当前会话中临时模式的OID,如果不存在(没有创建临时表)的话则返回0。如果给定的OID是其它会话中临时模式的OID,pg_is_other_temp_schema则返回true。 pg_is_other_temp_schema(oid) 描述:是否为另一个会话的临时模式。 返回值类型:Boolean 示例: 1 2 3 4 5 gaussdb=# SELECT pg_is_other_temp_schema(25356); pg_is_other_temp_schema ------------------------- f (1 row) pg_listening_channels() 描述:会话正在侦听的信道名称。 返回值类型:setof text 示例: 1 2 3 4 gaussdb=# SELECT pg_listening_channels(); pg_listening_channels ----------------------- (0 rows) 备注:pg_listening_channels返回当前会话正在侦听的一组信道名称。 pg_postmaster_start_time() 描述:服务器启动时间。pg_postmaster_start_time返回服务器启动时的timestamp with time zone。 返回值类型:timestamp with time zone 示例: 1 2 3 4 5 gaussdb=# SELECT pg_postmaster_start_time(); pg_postmaster_start_time ------------------------------ 2017-08-30 16:02:54.99854+08 (1 row) sessionid2pid() 描述:从sessionid中得到pid信息(如: pv_session_stat中sessid列)。 返回值类型:int8 示例: 1 2 3 4 5 6 gaussdb=# select sessionid2pid(sessid::cstring) from pv_session_stat limit 2; sessionid2pid ----------------- 139973107902208 139973107902208 (2 rows) session_context( 'namespace' , 'parameter') 描述:获取并返回指定namespace下参数parameter的值。 返回值类型:VARCHAR 示例: 1 2 3 4 5 gaussdb=# SELECT session_context('USERENV', 'CURRENT_SCHEMA'); session_context ------------- public (1 row) 根据当前所在的实际schema而变化。 备注:目前仅支持SESSION_CONTEXT('USERENV', 'CURRENT_SCHEMA') 和SESSION_CONTEXT('USERENV', 'CURRENT_USER')两种格式。 pg_trigger_depth() 描述:触发器的嵌套层次。 返回值类型:int 示例: 1 2 3 4 5 gaussdb=# SELECT pg_trigger_depth(); pg_trigger_depth ------------------ 0 (1 row) opengauss_version() 描述:引用的openGauss内核版本信息。 返回值类型:text 使用示例如下,查询结果中的x.x.x请已实际输出为准: 1 2 3 4 5 gaussdb=# SELECT opengauss_version(); opengauss_version ------------------- x.x.x (1 row) gs_deployment() 描述:当前系统的部署形态信息,对于分布式系统来说返回的是“Distribute”。 返回值类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT gs_deployment(); gs_deployment --------------- Distribute (1 row) session_user 描述:会话用户名。 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT session_user; session_user -------------- omm (1 row) 备注:session_user通常是连接当前数据库的初始用户,不过系统管理员可以用SET SESSION AUTHORIZATION修改这个设置。 user 描述:等价于current_user。 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT user; current_user -------------- omm (1 row) get_shard_oids_byname() 描述:输入node的名字返回node的oid。 返回值类型:oid 示例: 1 2 3 4 5 gaussdb=# SELECT get_shard_oids_byname('datanode1'); get_shard_oids_byname ----------------------- {16385} (1 row) getpgusername() 描述:获取数据库用户名。 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT getpgusername(); getpgusername --------------- GaussDB_userna (1 row) getdatabaseencoding() 描述:获取数据库编码方式。 返回值类型:name 示例: 1 2 3 4 5 gaussdb=# SELECT getdatabaseencoding(); getdatabaseencoding --------------------- SQL_ASCII (1 row) version() 描述:版本信息。version返回一个描述服务器版本信息的字符串。 返回值类型:text 示例: 1 2 3 4 5 gaussdb=# SELECT version(); version ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- gaussdb (GaussDB XXX.XXX.XXX build f521c606) compiled at 2021-09-16 14:55:22 commit 2935 last mr 6385 release (1 row)
  • 注意事项 所有该角色在当前数据库里和共享对象(数据库,表空间) 上的所有对象上的权限都将被撤销。 DROP OWNED常常被用来为移除一个或者多个角色做准备。因为DROP OWNED只影响当前数据库中的对象,通常需要在包含将被移除角色所拥有的对象的每一个数据库中都执行这个命令。 使用CASCADE选项可能导致这个命令递归去删除由其他用户所拥有的对象。 角色所拥有的数据库、表空间将不会被移除。 角色所拥有的私有DATABASE LINK连接需要添加CASCADE才可删除。
  • 结构 PL/SQL块中可以包含子块,子块可以位于PL/SQL中任何部分。PL/SQL块的结构如下: 声明部分:声明PL/SQL用到的变量、类型、游标以及局部的存储过程和函数。 DECLARE 不涉及变量声明时声明部分可以没有。 对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。 对存储过程来说,没有DECLARE, AS相当于DECLARE。即便没有变量声明的部分,关键字AS也必须保留。 执行部分:过程及SQL语句,程序的主要部分。必选。 BEGIN 执行异常部分:错误处理。可选。 EXCEPTION 结束。必选。 END; / 禁止在PL/SQL块中使用连续的Tab,连续的Tab可能会造成在使用gsql工具带“-r”参数执行PL/SQL块时出现异常。
  • LOCAL_THREADPOOL_STATUS LOCAL_THREADPOOL_STATUS视图显示线程池中工作线程及会话的状态信息,如表1所示。该视图仅在线程池开启(enable_thread_pool=on)时生效。 表1 LOCAL_THREADPOOL_STATUS字段 名称 类型 描述 node_name text 节点名称。 group_id integer 线程池组ID。 bind_numa_id integer 该线程池组绑定的NUMA ID。 bind_cpu_number integer 该线程池组绑定的CPU信息。如果未绑定CPU,该值为NULL。 listener integer 该线程池组的Listener线程数量。 worker_info text 线程池中线程相关信息,包括以下信息: default:该线程池组中的初始线程数量。 new:该线程池组中新增线程的数量。 expect:该线程池组中预期线程的数量。 actual:该线程池组中实际线程的数量。 idle:该线程池组中空闲线程的数量。 pending:该线程池组中等待线程的数量。 session_info text 线程池中会话相关信息,包括以下信息: total:该线程池组中所有的会话数量。 waiting:该线程池组中等待调度的会话数量。 running:该线程池中正在执行的会话数量。 idle:该线程池组中空闲的会话数量。 stream_info text Stream线程池相关信息,包括以下信息: total:该线程池组中所有的stream线程数量。 running:该线程池组中当前正在工作的stream线程数量。 idle:该线程池组中空闲的stream线程数量。 父主题: Session/Thread
  • PGXC_STAT_ACTIVITY PGXC_STAT_ACTIVITY视图显示当前集群下所有CN的当前用户查询相关的信息,该视图只有monitor admin和sysadmin权限可以查看。505.0.0版本新增三列信息,灰度升级观察期中执行会报错,需使用PG_STAT_ACTIVITY直连目标节点进行查询。具体字段信息如表1所示。 表1 PGXC_STAT_ACTIVITY字段 名称 类型 描述 coorname text 当前集群下的CN名称。 datid oid 用户会话在后台连接到的数据库OID。 datname text 用户会话在后台连接到的数据库名称。 pid bigint 后台线程id。 sessionid bigint 会话id。 usesysid oid 登录该后台的用户OID。 usename text 登录该后台的用户名。 application_name text 连接到该后台的应用名。 client_addr inet 连接到该后台的客户端的IP地址。 如果此字段是null,它表明通过服务器机器上UNIX套接字连接客户端或者这是内部进程,如autovacuum。 client_hostname text 客户端的主机名,这个字段是通过client_addr的反向DNS查找得到。这个字段只有在启动log_hostname且使用IP连接时才非空。 client_port integer 客户端用于与后台通讯的TCP端口号,如果使用Unix套接字,则为-1。 backend_start timestamp with time zone 该过程开始的时间,即当客户端连接服务器的时间。 xact_start timestamp with time zone 启动当前事务的时间,如果没有事务是活跃的,则为null。如果当前查询是首个事务,则这列等同于query_start列。 query_start timestamp with time zone 开始当前活跃查询的时间, 如果state的值不是active,则这个值是上一个查询的开始时间。 state_change timestamp with time zone 上次状态改变的时间。 waiting boolean 如果后台当前正等待锁则为true。否则为false。如果等待的锁发生在DN,则需要根据pg_thread_wait_status视图的wait_status字段确定发生的DN,在对应的DN查询pg_stat_activity的waiting字段确认是否发生了等待锁的行为。 enqueue text 语句当前排队状态。可能值是: waiting in queue:表示语句在排队中。 空:表示语句正在运行。 state text 该后台当前总体状态。可能值是: active:后台正在执行一个查询。 idle:后台正在等待一个新的客户端命令。 idle in transaction:后台在事务中,但事务中没有语句在执行。 idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。 fastpath function call:后台正在执行一个fast-path函数。 disabled:如果后台禁用track_activities,则报告这个状态。 说明: 只有系统管理员能查看到自己账户所对应的会话状态。其他账户的state信息为空。例如以judy用户连接数据库后,在pgxc_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空: SELECT datname, usename, usesysid, state,pid FROM pgxc_stat_activity; datname | usename | usesysid | state | pid ----------+---------+----------+--------+----------------- testdb | omm | 10 | | 139968752121616 testdb | omm | 10 | | 139968903116560 db_tpcds | judy | 16398 | active | 139968391403280 testdb | omm | 10 | | 139968643069712 testdb | omm | 10 | | 139968680818448 testdb | joe | 16390 | | 139968563377936 (6 rows) resource_pool name 用户使用的资源池。 query_id bigint 查询语句的id。 query text 该后台的最新查询。如果state状态是active(活跃的),此字段显示当前正在执行的查询。所有其他情况表示上一个查询。 connection_info text json格式字符串,记录当前连接数据库的驱动类型、驱动版本号、当前驱动的部署路径、进程属主用户等信息(参见GUC参数connection_info)。 global_sessionid text 全局会话id。 unique_sql_id bigint 语句的unique sql id。 trace_id text 驱动传入的trace id,与应用的一次请求相关联。 top_xid xid 事务的顶层事务ID。 current_xid xid 事务的当前事务ID。 xlog_quantity bigint 事务当前使用的XLOG量,单位为字节。 父主题: 其他系统视图
  • 注意事项 只有表空间所有者或者被授予了表空间DROP权限的用户有权限执行DROP TABLESPACE命令,系统管理员默认拥有此权限。 在删除一个表空间之前,表空间里面不能有任何数据库对象,否则会报错。 DROP TABLESPACE不支持回滚,因此,不能出现在事务块内部。 执行DROP TABLESPACE操作时,如果有另外的会话执行\db查询操作,可能会由于TABLESPACE事务的原因导致查询失败,请重新执行\db查询操作。 如果执行DROP TABLESPACE失败,需要再次执行一次DROP TABLESPACE IF EXISTS。
  • GS_DATABASE_LINK GS_DATABASE_LINK系统表是用于存储DATABASE LINK信息的系统表,主要记录的是DATABASE LINK对象的详细信息。只有具备sysadmin权限的用户才可以对该系统表进行读操作。 表1 GS_DATABASE_LINK字段 名称 类型 描述 oid oid 当前DATABASE LINK对象的唯一id(隐含属性,必须明确选择)。 dlname name 当前DATABASE LINK的名称。 dlowner oid 当前DATABASE LINK的拥有者的id,为public则为0。 dlfdw oid 当前DATABASE LINK的外部数据封装器的OID。 dlcreater oid 当前DATABASE LINK创建者的id。 options text[] 当前DATABASE LINK连接信息,使用"keyword=value"。 useroptions text[] 当前DATABASE LINK连接远端所使用的用户信息,使用"keyword=value"。 dlacl aclitem[] 当前DATABASE LINK访问权限。 父主题: DATABASE LINK
  • alarm_component 参数说明:在对告警做上报时,会进行告警抑制,即同一个实例的同一个告警项在alarm_report_interval(默认值为10s)内不做重复上报。在这种情况下设置用于处理告警内容的告警组件的位置,仅sysadmin用户可以访问。 该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串。 若前置脚本gs_preinstall中的--alarm-type参数设置为5时,表示未对接第三方组件,告警写入system_alarm日志,此时GUC参数alarm_component的取值为:/opt/huawei/snas/bin/snas_cm_cmd。 若前置脚本gs_preinstall中的--alarm-type参数设置为1时,表示对接第三方组件,此时GUC参数alarm_component的值为第三方组件的可执行程序的绝对路径。 默认值:/opt/huawei/snas/bin/snas_cm_cmd
  • 命名SQL描述符区域 一个命名SQL描述符区域由一个头部以及一个或多个条目描述符区域构成。头部包含与整个描述区域相关的信息,而条目描述符区域则描述结果行中的某一列。 在使用SQL描述符区域之前,需要分配一个SQL描述符区域: EXEC SQL ALLOCATE DESCRIPTOR identifier; 当不再需要这个描述符区域时,应及时释放: EXEC SQL DEALLOCATE DESCRIPTOR identifier; 要使用一个描述符区域,需要使用INTO子句声明: EXEC SQL FETCH NEXT FROM mycursor INTO SQL DESCRIPTOR mydesc; 如果结果集为空,该描述符区域仍会包含查询的元数据。 对于还没有执行的预备查询,可以使用DESCRIBE得到其结果集的元数据: EXEC SQL BEGIN DECLARE SECTION; char *sql_stmt = "SELECT * FROM table1"; EXEC SQL END DECLARE SECTION; EXEC SQL PREPARE stmt1 FROM :sql_stmt; EXEC SQL DESCRIBE stmt1 INTO SQL DESCRIPTOR mydesc; 在DESCRIBE和FETCH语句中,INTO和USING关键词的使用相似:它们产生结果集以及一个描述符区域的元数据。 从头部检索一个描述符区域的值并且将其存储到一个宿主变量中: EXEC SQL GET DESCRIPTOR name :hostvar = field; 当前只定义了一个头部描述符区域COUNT,它存放描述符区域的条目(即结果集中包含多少列),宿主变量为一个整数类型,需从条目描述符区域中得到一个具体值: EXEC SQL GET DESCRIPTOR name VALUE num :hostvar = field; num可以是一个字符整数或者一个包含整数的宿主变量。可能的类型如下: CARDINALITY(整数):结果集中的行数 DATA:实际的数据项(这个范围的实际数据类型取决于查询) DATETIME_INTERVAL_CODE(整数):当TYPE是9时,DATETIME_INTERVAL_CODE将具有以下值之一:1表示DATE,2表示TIME,3表示TIMESTAMP,4表示TIME WITH TIME ZONE,5表示TIMESTAMP WITH TIME ZONE。 INDICATOR(整数):指示符(表示一个空值或者一个值截断) LENGTH(整数):以字符计的数据长度 NAME(string):列名 OCTET_LENGTH(整数):以字节计的数据字符表达的长度 PRECISION(整数):精度(用于类型numeric) RETURNED_LENGTH(整数):以字符计的数据长度 RETURNED_OCTET_LENGTH(整数):以字节计的数据字符表达的长度 SCALE(整数):比例(用于类型numeric) TYPE(整数):列的数据类型的数字编码 要检索字段数值并且把它存储到一个宿主变量里,使用如下命令: EXEC SQL GET DESCRIPTOR mydesc VALUE num :hostvar = field num可以是一个字符整数或者一个包含整数的宿主变量。可能的字段有: DATA 实际数据项(这个字段的数据类型依赖于这个查询) NAME(string) 字段名称 手动建立一个描述符区域为一个查询或游标提供输入参数,使用如下命令: EXEC SQL SET DESCRIPTOR name VALUE numfield = :hostvar; 在一个FETCH语句中检索多行记录且用数组类型的宿主变量来存储数据,示例如下: EXEC SQL BEGIN DECLARE SECTION; int id[5]; EXEC SQL END DECLARE SECTION; EXEC SQL FETCH 5 FROM mycursor INTO SQL DESCRIPTOR mydesc; EXEC SQL GET DESCRIPTOR mydesc VALUE 1 :id = DATA; 父主题: SQL描述符区域
  • 通用文件访问函数 通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有数据库集群目录和log_directory目录里面的文件可以访问。使用相对路径访问集群目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库初始化用户才能使用这些函数。 pg_ls_dir(dirname text) 描述:列出目录中的文件。 返回值类型:setof text 备注:pg_ls_dir返回指定目录里面的除了特殊项“.”和“..”之外所有名称。 示例: 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 gaussdb=# SELECT pg_ls_dir('./'); pg_ls_dir ---------------------- .gaussdb.conf.swp gaussdb.conf pg_tblspc PG_VERSION gs_ident.conf core server.crt pg_serial pg_twophase gaussdb.conf.lock pg_stat_tmp pg_notify pg_subtrans pg_ctl.lock pg_xlog pg_clog base pg_snapshots postmaster.opts postmaster.pid server.key.rand server.key.cipher pg_multixact pg_errorinfo server.key gs_hba.conf pg_replslot .gs_hba.conf.swp cacert.pem gs_hba.conf.lock global gaussdb.state (32 rows) pg_read_file(filename text, offset bigint, length bigint) 描述:返回一个文本文件的内容。 返回值类型:text 备注:pg_read_file返回一个文本文件的一部分,从offset开始,最多返回length字节(如果先达到文件结尾,则小于这个数值)。如果offset是负数,则它是相对于文件结尾回退的长度。如果省略了offset和length,则返回整个文件。 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# SELECT pg_read_file('postmaster.pid',0,100); pg_read_file --------------------------------------- 53078 + /srv/BigData/testdir/data1/coordinator+ 1500022474 + 8000 + /var/run/FusionInsight + localhost + 2 (1 row) pg_read_binary_file(filename text [, offset bigint, length bigint,missing_ok boolean]) 描述:返回一个二进制文件的内容。 返回值类型:bytea 备注:pg_read_binary_file的功能与pg_read_file类似,除了结果的返回值为bytea类型不一致,相应地不会执行编码检查。与convert_from函数结合,这个函数可以用来读取用指定编码的一个文件。 1 gaussdb=# SELECT convert_from(pg_read_binary_file('filename'), 'UTF8'); pg_stat_file(filename text) 描述:返回一个文本文件的状态信息。 返回值类型:record 备注:pg_stat_file返回一条记录,其中包含:文件大小、最后访问时间戳、最后更改时间戳、最后文件状态修改时间戳以及标识传入参数是否为目录的Boolean值。典型的用法: 1 gaussdb=# SELECT * FROM pg_stat_file('filename'); 1 gaussdb=# SELECT (pg_stat_file('filename')).modification; 示例: 1 2 3 4 5 6 7 8 9 10 11 12 gaussdb=# SELECT convert_from(pg_read_binary_file('postmaster.pid'), 'UTF8'); convert_from -------------------------------------- 4881 + /srv/BigData/gaussdb/data1/coordinator+ 1496308688 + 25108 + /opt/huawei/Bigdata/gaussdb/gaussdb_tmp + * + 25108001 43352069 + (1 row) 1 2 3 4 5 6 7 8 9 gaussdb=# SELECT * FROM pg_stat_file('postmaster.pid'); size | access | modification | change | creation | isdir ------+------------------------+------------------------+------------------------ +----------+------- 117 | 2017-06-05 11:06:34+08 | 2017-06-01 17:18:08+08 | 2017-06-01 17:18:08+08 | | f (1 row) 1 2 3 4 5 gaussdb=# SELECT (pg_stat_file('postmaster.pid')).modification; modification ------------------------ 2017-06-01 17:18:08+08 (1 row) 父主题: 系统管理函数
  • SESSION_MEMORY_RUNTIME SESSION_MEMORY_RUNTIME视图显示当前用户执行复杂作业(正在运行)时的内存使用信息,如表1所示。 表1 SESSION_MEMORY_RUNTIME字段 名称 类型 描述 datid oid 连接后端的数据库OID。 usename name 登录到该后端的用户名。 pid bigint 后端线程ID。 start_time timestamp with time zone 语句执行的开始时间。如果是存储过程、函数、则查询的是第一个查询时间,不会随着存储过程内语句运行而改变。 min_peak_memory integer 语句在所有DN上的最小内存峰值大小,单位MB。 max_peak_memory integer 语句在所有DN上的最大内存峰值大小,单位MB。 spill_info text 语句在所有DN上的下盘信息: None:所有DN均未下盘。 All:所有DN均下盘。 [a:b]:数量为b个DN中有a个DN下盘。 query text 正在执行的语句。 top_mem_dn text mem使用量topN信息。 父主题: Session/Thread
  • 内部函数 GaussDB中下列函数使用了内部数据类型,用户无法直接调用,在此章节列出。 选择率计算函数 areajoinsel areasel arraycontjoinsel arraycontsel contjoinsel contsel eqjoinsel eqsel iclikejoinsel iclikesel icnlikejoinsel icnlikesel icregexeqjoinsel icregexeqsel icregexnejoinsel icregexnesel likejoinsel likesel neqjoinsel neqsel nlikejoinsel nlikesel positionjoinsel positionsel regexeqjoinsel regexeqsel regexnejoinsel regexnesel scalargtjoinsel scalargtsel scalarltjoinsel scalarltsel tsmatchjoinsel tsmatchsel - 统计信息收集函数 array_typanalyze range_typanalyze ts_typanalyze local_rto_stat remote_rto_stat gs_plan_trace_delete gs_plan_trace_watch_sqlid gs_plan_trace_show_sqlids - 排序内部功能函数 bpchar_sortsupport bytea_sortsupport date_sortsupport numeric_sortsupport timestamp_sortsupport 内部类型处理函数 abstimerecv euc_jis_2004_to_utf8 int2recv line_recv oidvectorrecv_extend tidrecv utf8_to_koi8u anyarray_recv euc_jp_to_mic int2vectorrecv lseg_recv path_recv time_recv utf8_to_shift_jis_2004 array_recv euc_jp_to_sjis int4recv macaddr_recv pg_node_tree_recv time_transform utf8_to_sjis ascii_to_mic euc_jp_to_utf8 int8recv mic_to_ascii point_recv timestamp_recv utf8_to_uhc ascii_to_utf8 euc_kr_to_mic internal_out mic_to_big5 poly_recv timestamp_transform utf8_to_win big5_to_euc_tw euc_kr_to_utf8 interval_recv mic_to_euc_cn pound_nexttoken timestamptz_recv uuid_recv big5_to_mic euc_tw_to_big5 interval_transform mic_to_euc_jp prsd_nexttoken timetz_recv varbit_recv big5_to_utf8 euc_tw_to_mic iso_to_koi8r mic_to_euc_kr range_recv tintervalrecv varbit_transform bit_recv euc_tw_to_utf8 iso_to_mic mic_to_euc_tw rawrecv tsqueryrecv varchar_transform boolrecv float4recv iso_to_win1251 mic_to_iso record_recv tsvectorrecv varcharrecv box_recv float8recv iso_to_win866 mic_to_koi8r regclassrecv txid_snapshot_recv void_recv bpcharrecv gb18030_to_utf8 iso8859_1_to_utf8 mic_to_latin1 regconfigrecv uhc_to_utf8 win_to_utf8 btoidsortsupport gbk_to_utf8 iso8859_to_utf8 mic_to_latin2 regdictionaryrecv unknownrecv win1250_to_latin2 bytearecv - johab_to_utf8 mic_to_latin3 regoperatorrecv utf8_to_ascii win1250_to_mic byteawithoutorderwithequalcolrecv gtsvector_compress json_recv mic_to_latin4 regoperrecv utf8_to_big5 win1251_to_iso cash_recv gtsvector_consistent koi8r_to_iso mic_to_sjis regprocedurerecv utf8_to_euc_cn win1251_to_koi8r charrecv gtsvector_decompress koi8r_to_mic mic_to_win1250 regprocrecv utf8_to_euc_jis_2004 win1251_to_mic cidr_recv gtsvector_penalty koi8r_to_utf8 mic_to_win1251 regtyperecv utf8_to_euc_jp win1251_to_win866 cidrecv gtsvector_picksplit koi8r_to_win1251 mic_to_win866 reltimerecv utf8_to_euc_kr win866_to_iso circle_recv gtsvector_same koi8r_to_win866 namerecv shift_jis_2004_to_euc_jis_2004 utf8_to_euc_tw win866_to_koi8r cstring_recv gtsvector_union koi8u_to_utf8 ngram_nexttoken shift_jis_2004_to_utf8 utf8_to_gb18030 win866_to_mic date_recv hll_recv latin1_to_mic numeric_recv sjis_to_euc_jp utf8_to_gbk win866_to_win1251 domain_recv hll_trans_recv latin2_to_mic numeric_transform sjis_to_mic utf8_to_iso8859 xidrecv euc_cn_to_mic - latin2_to_win1250 nvarchar2recv sjis_to_utf8 utf8_to_iso8859_1 xidrecv4 euc_cn_to_utf8 inet_recv latin3_to_mic oidrecv smalldatetime_recv utf8_to_johab xml_recv euc_jis_2004_to_shift_jis_2004 int1recv latin4_to_mic oidvectorrecv textrecv utf8_to_koi8r - numeric_bool int2vectorin_extend int2vectorout_extend int2vectorrecv_extend int2vectorsend_extend int8_accum large_seq_rollback_ntree large_seq_upgrade_ntree int16eq int16ge int16gt int16in int16le int16lt int16mi int16mul int16ne int16out int16pl int16recv int16send int16_bool i16toi1 anyset_in anyset_out btint2setcmp btint4setcmp btint8setcmp btsetcmp btsetint2cmp btsetint4cmp btsetint8cmp btsetsortsupport float4 float8 hashsetint hashsettext int2 int2seteq int2setge int2setgt int2setle int2setlt int2setne int4 int4seteq int4setge int4setgt int4setle int4setlt int4setne int8 int8seteq int8setge int8setgt int8setle int8setlt int8setne set set_in set_out set_recv set_send seteq setge setgt setint2eq setint2ge setint2gt setint2le setint2lt setint2ne setint4eq setint4ge setint4gt setint4le setint4lt setint4ne setint8eq setint8ge setint8gt setint8le setint8lt setint8ne setle setlt setne settexteq settextge settextgt settextle settextlt settextne settobpchar settonumber settonvarchar2 settotext settovarchar textseteq textsetge textsetgt textsetle textsetlt textsetne gb18030_2022_to_utf8 utf8_to_gb18030_2022 - - - - - - zhs16gbk_to_utf8 utf8_to_zhs16gbk zhs16gbk_to_gb18030 gb18030_to_zhs16gbk zhs16gbk_to_gb18030_2022 gb18030_2022_to_zhs16gbk - 聚合操作内部函数 array_agg_finalfn array_agg_transfn bytea_string_agg_finalfn bytea_string_agg_transfn date_list_agg_noarg2_transfn date_list_agg_transfn float4_list_agg_noarg2_transfn float4_list_agg_transfn float8_list_agg_noarg2_transfn float8_list_agg_transfn int2_list_agg_noarg2_transfn int2_list_agg_transfn int4_list_agg_noarg2_transfn int4_list_agg_transfn int8_list_agg_noarg2_transfn int8_list_agg_transfn interval_list_agg_noarg2_transfn interval_list_agg_transfn list_agg_finalfn list_agg_noarg2_transfn list_agg_transfn median median_float8_finalfn median_interval_finalfn median_transfn mode_final numeric_list_agg_noarg2_transfn numeric_list_agg_transfn ordered_set_transition percentile_cont_float8_final percentile_cont_interval_final string_agg_finalfn string_agg_transfn timestamp_list_agg_noarg2_transfn timestamp_list_agg_transfn timestamptz_list_agg_noarg2_transfn timestamptz_list_agg_transfn checksumtext_agg_transfn json_agg_transfn json_agg_finalfn json_object_agg_transfn json_object_agg_finalfn 哈希内部功能函数 hashbeginscan hashbuild hashbuildempty hashbulkdelete hashcostestimate hashendscan hashgetbitmap hashgettuple hashinsert hashmarkpos hashmerge hashrescan hashrestrpos hashvacuumcleanup hashvarlena jsonb_hash - - - - - Btree索引内部功能函数 cbtreebuild cbtreecanreturn cbtreecostestimate cbtreegetbitmap cbtreegettuple btbeginscan btbuild btbuildempty btbulkdelete btcanreturn btcostestimate btendscan btfloat4sortsupport btfloat8sortsupport btgetbitmap btgettuple btinsert btint2sortsupport btint4sortsupport btint8sortsupport btmarkpos btmerge btnamesortsupport btrescan btrestrpos bttextsortsupport btvacuumcleanup cbtreeoptions Psort索引内部函数 psortbuild psortcanreturn psortcostestimate psortgetbitmap psortgettuple Ubtree索引内部函数 ubtbeginscan ubtbuild ubtbuildempty ubtbulkdelete ubtcanreturn ubtcostestimate ubtendscan ubtgetbitmap ubtgettuple ubtinsert ubtmarkpos ubtmerge ubtoptions ubtrescan ubtrestrpos ubtvacuumcleanup - - - - plpgsql内部函数 plpgsql_inline_handler 外表相关内部函数 dist_fdw_handler roach_handler streaming_fdw_handler dist_fdw_validator file_fdw_handler file_fdw_validator log_fdw_handler gc_fdw_handler gc_fdw_validator dblink_fdw_handler dblink_fdw_validator - - - 数据倾斜优化相关内部函数 distributed_count 表统计信息相关内部函数 pgxc_get_stat_dirty_tables pgxc_stat_dirty_tables get_global_stat_all_tables get_summary_stat_all_tables 远程读取数据函数 gs_read_block_from_remote 用于读取非段页式表文件的页面。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 gs_read_segment_block_from_remote 用于读取段页式表文件的页面。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 远程读取文件函数 gs_read_file_size_from_remote 用于读取指定文件的大小,gs_repair_file函数修复文件时,要先获取远端关于这个文件的大小,用于校验本地文件缺失的文件信息,然后将缺失的文件逐个修复。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 gs_read_file_from_remote 用于读取指定的文件,gs_repair_file利用gs_read_file_size_from_remote函数获取文件大小后,依赖这个函数将远端文件逐段读取。默认只有初始化用户可以查看,其余用户需要赋权后才可以使用。 以备DN实例增量重建其他备或级联备DN实例辅助函数 gs_standby_incremental_filemap_create用于创建备DN增量重建临时filemap文件,用于存储当次增量重建需传输的数据路径与大小。只有初始化用户且application为gs_rewind时可以调用。 gs_standby_incremental_filemap_insert用于向指定临时filemap文件中插入文件信息,指定文件的路径、传输起始点、单次传输数据长度和rebuild标志位。只有初始化用户且application为gs_rewind时可以调用。 gs_standby_incremental_filemap_execute用于获取指定临时filemap文件中存储的文件信息并删除指定filemap,用于备DN增量重建的数据传输。只有初始化用户且application为gs_rewind时可以调用。 账本数据库函数 get_dn_hist_relhash 视图相关引用函数 adm_hist_sqlstat_func adm_hist_sqlstat_idlog_func adm_hist_sqltext_func gs_txn_snapshot系统表维护函数 gs_insert_delete_txn_snapshot用于分布式GTM-Lite模式下维护全局各节点gs_txn_snapshot系统表,只有系统管理员用户才能调用。 xmltype类型相关函数 isschemavalid(不可用) 父主题: 函数和操作符
  • V$VERSION V$VERSION视图显示数据库的版本号。所有用户都可以访问,该视图同时存在于PG_CATALOG和SYS schema下。具体字段信息如表1所示。 表1 V$VERSION字段 名称 类型 描述 banner character varying(80) 组件名称和版本号。 banner_full character varying(160) 显示数据库版本和版本号。 banner_legacy character varying(80) 显示数据库版本。 con_id numeric 暂不支持,置0。 父主题: 其他系统视图
  • 语法格式 收集表的统计信息。 { ANALYZE | ANALYSE } [ VERBOSE ] [ table_name [ ( column_name [, ...] ) ] ] [ WITH PARTITION_MODE ]; 收集分区表的分区统计信息。 { ANALYZE | ANALYSE } [ VERBOSE ] table_name [ ( column_name [, ...] ) ] PARTITION ( partition_name ) ; 使用关键字PARTITION,partition_name必须为一级分区名字。 分布式不支持二级分区。
  • 参数说明 VERBOSE 启用显示进度信息。 如果指定了VERBOSE,ANALYZE发出进度信息,表明目前正在处理的表。各种有关表的统计信息也会打印出来。 table_name 需要分析的特定表的表名(可能会带模式名),如果省略,将对数据库中的所有表(非外部表)进行分析。 对于ANALYZE收集统计信息,目前仅支持行存表的外表。 取值范围:已有的表名。 column_name,column_1_name,column_2_name 需要分析特定列的列名,默认为所有列。 取值范围:已有的列名。 partition_name 如果table为分区表,在关键字PARTITION后面指定分区名partition_name表示分析该分区表的统计信息。 取值范围:表的某一个分区名。 index_name 需要分析的特定索引表的表名(可能会带模式名)。 取值范围:已有的表名。 FAST|COMPLETE FAST模式下主要对于表的CRC和page header进行校验,如果校验失败则会告警;而COMPLETE模式下,则主要对表的指针、tuple进行解析校验。 CASCADE CASCADE模式下会对当前表的所有索引进行检测处理。 PARTITION_MODE PARTITION_MODE适用于分区表级联收集统计信息,可选项和含义如下表所示。不适用于非分区表。 表1 PARTITION_MODE选项说明 PARTITION_MODE选项 含义 ALL 收集整表、一级分区的统计信息。 GLOBAL 收集整表的统计信息。 PARTITION 收集一级分区的统计信息。 GLOBAL AND PARTITION 收集整表、一级分区的统计信息。 ALL COMPLETE 收集整表、一级分区的统计信息。 AUTO 缺省值,以statistic_granularity或default_statistic_granularity中配置的参数为准,其中表级参数statistic_granularity的优先级高于全局参数default_statistic_granularity。 其中,ALL和ALL COMPLETE的区别为:ALL_COMPLETE模式下,采用更高的采样率,相应地,计算统计信息的耗时会更长。 从505.0.0之前版本升级到505.0.0及更高版本时,在升级观察期期间,PARTITION_MODE不生效,其行为与升级前版本保持一致。 analyze整库时,不支持指定partition mode,即不支持analyze with global等语法。 analyze整库时,支持设置default_statistic_granularity为GLOBAL或ALL,此时analyze行为和default_statistic_granularity的定义相同;当default_statistic_granularity设置为其他值时,analyze行为退化为GLOBAL行为。
  • 示例 收集表的的统计信息。 --创建customer_info表。 gaussdb=# CREATE TABLE customer_info( wr_returned_date_sk INTEGER , wr_returned_time_sk INTEGER , wr_item_sk INTEGER NOT NULL ,wr_refunded_customer_sk INTEGER ) DISTRIBUTE BY HASH (wr_item_sk); --使用ANALYZE语句更新统计信息。 gaussdb=# ANALYZE customer_info; --使用ANALYZE VERBOSE语句更新统计信息,并输出customer_info表的相关信息。 gaussdb=# ANALYZE VERBOSE customer_info; INFO: analyzing "public.customer_info"(cn_5002 pid=53078) --使用ANALYZE VERBOSE输出customer_info表的wr_returned_time_sk列信息。 gaussdb=# ANALYZE VERBOSE customer_info(wr_returned_time_sk); INFO: analyzing "public.customer_info"(cn_5002 pid=53078) 收集分区表的统计信息。 --创建分区表。 gaussdb=# CREATE TABLE customer_par( wr_returned_date_sk INTEGER , wr_returned_time_sk INTEGER , wr_item_sk INTEGER NOT NULL, wr_returned_customer_sk INTEGER) DISTRIBUTE BY HASH (wr_item_sk)PARTITION BY RANGE(wr_returned_date_sk)(PARTITION P1 VALUES LESS THAN(2452275),PARTITION P2 VALUES LESS THAN(2452640),PARTITION P3 VALUES LESS THAN(2453000),PARTITION P4 VALUES LESS THAN(MAXVALUE))ENABLE ROW MOVEMENT; --使用ANALYZE语句更新统计信息。 gaussdb=# ANALYZE customer_par; --使用ANALYZE VERBOSE输出customer_par表的相关信息。 gaussdb=# ANALYZE VERBOSE customer_par; INFO: analyzing "public.customer_par"(cn_5001 pid=446617) --使用ANALYZE VERBOSE输出P1一级分区表的相关信息。 gaussdb=# ANALYZE VERBOSE customer_par PARTITION(P1); INFO: analyzing "public.customer_par"(cn_5001 pid=446617) 手动收集多列统计信息。 --手动收集wr_returned_date_sk、wr_returned_time_sk这两列的统计信息。 gaussdb=# ANALYZE VERBOSE customer_info (wr_returned_date_sk,wr_returned_time_sk); INFO: analyzing "public.customer_par"(cn_5001 pid=446617) 自动收集多列统计信息。 --给customer_info表创建索引。 gaussdb=# CREATE INDEX customer_index ON customer_info USING btree(wr_returned_date_sk,wr_returned_time_sk,wr_item_sk,wr_refunded_customer_sk); --设置auto_statistic_ext_columns参数为4。 gaussdb=# set auto_statistic_ext_columns=4; --自动收集多列统计信息。 gaussdb=# ANALYZE VERBOSE customer_info; INFO: analyzing "public.customer_info"(cn_5001 pid=446617) 检测当前库的数据文件。 gaussdb=# ANALYZE VERIFY FAST; 检测表和索引的数据文件。 --检查customer_info表。 gaussdb=# ANALYZE VERIFY FAST customer_info; --检查customer_index索引。 gaussdb=# ANALYZE VERIFY FAST customer_index; 检测表分区的数据文件。 --检查customer_par分区表中的P1分区。 gaussdb=# ANALYZE VERIFY FAST customer_par PARTITION (P1); 删除数据。 --删除索引customer_index。 gaussdb=# DROP INDEX customer_index; --删除表customer_info。 gaussdb=# DROP TABLE customer_info; --删除分区表customer_par。 gaussdb=# DROP TABLE customer_par;
  • 功能描述 用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC、PG_STATISTIC_EXT下,执行ANALYZE命令后,可在上述系统表中查询收集到的统计信息,也可以通过系统视图PG_STATS、PG_EXT_STATS查询信息。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。 如果没有指定参数,ANALYZE会分析当前数据库中的每个表和分区表。同时也可以通过指定table_name、column_name和partition_name参数把分析限定在特定的表、列或分区表中。 {ANALYZE|ANALYSE} VERIFY用于检测数据库中普通表的数据文件是否损坏。 每次收集的统计信息,都会存入统计信息历史表(GS_STATISTIC_EXT_HISTORY、GS_STATISTIC_HISTORY、GS_TABLESTATS_HISTORY)中,历史表存放的数量和统计信息的保留时间由GUC参数stats_history_record_limit和stats_history_retention_time控制。
  • 注意事项 ANALYZE非临时表不支持在一个匿名块、事务块、函数或存储过程内被执行。ANALYZE临时表支持存储过程中被执行,不支持统计信息回滚操作。 ANALYZE VERIFY如果不涉及远程读场景,远程读参数则不会生效。对于检测出关键系统表页面损坏的错误,将直接报错不再继续检测。 如果ANALYZE不指定参数,则默认处理当前用户拥有相应权限的表。如果参数指定了一个表参数,ANALYZE只处理指定的表。 要对一个表进行ANALYZE操作,用户必须是表的所有者或者被授予了指定表VACUUM权限,三权分立开关关闭时,默认系统管理员有该权限。数据库的所有者允许对数据库中除了共享目录以外的所有表进行ANALYZE操作(该限制意味着只有系统管理员才能真正对一个数据库进行ANALYZE操作)。ANALYZE会跳过那些用户没有权限的表。 ANALYZE不收集无法做比较或等值运算的列,例如:CURSOR类型。
  • GLOBAL_STAT_USER_TABLES 显示各节点所有Schema中用户自定义普通表的状态信息(在CN节点使用。显示DN节点用户自定义普通表的状态信息,不进行汇总),如表1所示。 表1 GLOBAL_STAT_USER_TABLES字段 名称 类型 描述 node_name name 节点名称。 relid oid 表的OID。 schemaname name 此表所在的Schema名。 relname name 表名。 seq_scan bigint 此表发起的顺序扫描数。 seq_tup_read bigint 顺序扫描抓取的活跃行数。 idx_scan bigint 此表发起的索引扫描数。 idx_tup_fetch bigint 索引扫描抓取的活跃行数。 n_tup_ins bigint 插入行数。 n_tup_upd bigint 更新行数。 n_tup_del bigint 删除行数。 n_tup_hot_upd bigint HOT更新行数(即没有更新索引列的行数)。 n_live_tup bigint 估计活跃行数。 n_dead_tup bigint 估计不活跃行数。 last_vacuum timestamp with time zone 最后一次此表是手动清理的(不计算VACUUM FULL)时间。 last_autovacuum timestamp with time zone 上次被autovacuum守护线程清理的时间。 last_analyze timestamp with time zone 上次手动分析此表的时间。 last_autoanalyze timestamp with time zone 上次被autovacuum守护线程分析的时间。 vacuum_count bigint 此表被手动清理的次数(不计算VACUUM FULL)。 autovacuum_count bigint 此表被autovacuum清理的次数。 analyze_count bigint 此表被手动分析的次数。 autoanalyze_count bigint 此表被autovacuum守护线程分析的次数。 父主题: Object
  • LOCKS LOCKS视图用于查看各打开事务所持有的锁信息,如表1所示。 表1 LOCKS字段 名称 类型 描述 locktype text 被锁定对象的类型:relation,extend,page,tuple,transactionid,virtualxid,object,userlock,advisory。 database oid 被锁定对象所在数据库的OID: 如果被锁定的对象是共享对象,则OID为0。 如果是一个事务ID,则为NULL。 relation oid 关系的OID,如果锁定的对象不是关系,也不是关系的一部分,则为NULL。 page integer 关系内部的页面编号,如果对象不是关系页或者不是行页,则为NULL。 tuple smallint 页面里边的行编号,如果对象不是行,则为NULL。 bucket integer 哈希桶号。 virtualxid text 事务的虚拟ID,如果对象不是一个虚拟事务ID,则为NULL。 transactionid xid 事务的ID,如果对象不是一个事务ID,则为NULL。 classid oid 包含该对象的系统表的OID,如果对象不是普通的数据库对象,则为NULL。 objid oid 对象在其系统表内的OID,如果对象不是普通数据库对象,则为NULL。 objsubid smallint 对于表的一个字段,这是字段编号;对于其他对象类型,这个字段是零;如果这个对象不是普通数据库对象,则为NULL。 virtualtransaction text 持有此锁或者在等待此锁的事务的虚拟ID。 pid bigint 持有或者等待这个锁的服务器线程的逻辑ID。如果锁是被一个预备事务持有的,则为NULL。 sessionid bigint 持有或者等待这个锁的会话ID。如果锁是被一个预备事务持有的,则为NULL。 mode text 这个线程持有的或者是期望的锁模式。 granted boolean 如果锁是持有锁,则为TRUE。 如果锁是等待锁,则为FALSE。 fastpath boolean 如果通过fast-path获得锁,则为TRUE;如果通过主要的锁表获得,则为FALSE。 locktag text 会话等待锁信息,可通过locktag_decode()函数解析。 global_sessionid text 全局会话ID。 父主题: Lock
  • ai_watchdog_parameters 表1 ai_watchdog_parameters参数 参数 类型 描述 name text 参数名称,包括如下常用参数: enable_ai_watchdog:是否开启本功能。 ai_watchdog_max_consuming_time_ms:最大耗时。 ai_watchdog_used_memory_kb:本功能当前内存使用。 ai_watchdog_detection_times:已检测次数。 enable_self_healing:发现问题后是否可以自愈。 oom_detected_times:已检测到的OOM次数。 hang_detected_times:已检测到的hang次数。 enable_oom_detection:是否自动启动了OOM探测功能。 in_wait_time:是否处于等待时间。 other_used_memory_has_risk:其他内存使用部分是否存在风险。 shared_used_mem_has_risk:共享内存上下文使用是否存在风险。 dynamic_used_shrctx_has_risk:动态内存使用是存在风险。 value text 参数值。 父主题: AI Watchdog
  • 离散范围类型 一种范围的元素类型具有一个定义的“步长”,例如integer或date。在这些类型中,如果两个元素之间没有合法值,它们可以被说成是相邻。这与连续范围相反,连续范围中总是(或者几乎总是)可以在两个给定值之间标识其他元素值。例如,numeric类型之上的一个范围就是连续的,timestamp上的范围也是(尽管timestamp具有有限的精度,并且在理论上可以被当作离散的,但是可以认为它是连续的,因为通常并不关心它的步长)。 另一种考虑离散范围类型的方法是对每一个元素值都有一个清晰的“下一个”或“上一个”值。通过选择原来给定的下一个或上一个元素值来取代它,就可以在一个范围界限的包含和排除表达之间转换。例如,在一个整数范围类型中,[4,8]和(3,9)表示相同的值集合,但是对于numeric上的范围就不是这样。 一个离散范围类型应该具有一个正规化函数,即明确元素类型的指定步长。正规化函数负责把范围类型的相等值转换成具有相同的表达,特别是与包含或者排除界限一致。如果没有指定一个正规化函数,那么具有不同格式的范围将总是会被当作不等,即使它们实际上是表达相同的一组值。 内建的范围类型int4range、int8range和daterange都使用一种正规的形式,该形式包括下界并且排除上界,即[)。但是用户定义的范围类型可以使用其他形式。
  • 无限(无界)范围 一个范围的下界可以被忽略,意味着所有小于上界的值都被包括在范围中。 同样,如果范围的上界被忽略,那么所有比下界大的值都被包括在范围中。如果上下界都被忽略,该元素类型的所有值都被认为在该范围中。 当不设置范围的上界和下界时, 即上界为正无穷大,下界为负无穷大,该范围为无限(无界)范围。 具有infinity概念的元素类型可以作为显式边界值。 例如,在时间戳范围[today,infinity)和[today,infinity] ,[today,infinity)表示不包括特殊的timestamp值infinity,[today,infinity]表示包括特殊的timestamp值infinity。 函数lower_inf和upper_inf分别测试一个范围的无限上下界。
  • 构造范围 每一种范围类型都有一个与其同名的构造器函数。使用构造器函数常常比写一个范围文字常数更方便,因为它避免了对界限值的额外引用。构造器函数接收两个或三个参数。两个参数的形式以标准的形式构造一个范围(下界是包含的,上界是排除的),而三个参数的形式按照第三个参数指定的界限形式构造一个范围。第三个参数必须是下列字符串之一: “()”、 “(]”、 “[)”或者 “[]”。 --完整形式是:下界、上界以及指示界限包含性/排除性的文本参数。 gaussdb=# SELECT numrange(1.0, 14.0, '(]'); numrange ------------ (1.0,14.0] (1 row) --如果第三个参数被忽略,则假定为 '[)'。 gaussdb=# SELECT numrange(1.0, 14.0); numrange ------------ [1.0,14.0) (1 row) --尽管这里指定了 '(]',显示时该值将被转换成标准形式,因为int8range是一种离散范围类型。 gaussdb=# SELECT int8range(1, 14, '(]'); int8range ----------- [2,15) (1 row) --为一个界限使用NULL导致范围在那一边是无界的。 gaussdb=# SELECT numrange(NULL, 2.2); numrange ---------- (,2.2) (1 row)
  • 范围输入/输出 范围输入模式: (lower-bound,upper-bound) (lower-bound,upper-bound] [lower-bound,upper-bound) [lower-bound,upper-bound] empty 范围输出模式: [lower-bound,upper-bound) empty ()或[]指示上下界是否为排除的或者包含的。empty表示一个空范围(一个不包含点的范围)。 lower-bound可以是作为subtype的合法输入的一个字符串,或者是空(表示没有下界)。同样,upper-bound可以是作为subtype的合法输入的一个字符串,或者是空(表示没有上界)。 每个界限值可以使用"(双引号)字符引用。如果界限值包含圆括号、方括号、逗号、双引号或反斜线时,必须使用双引号进行引用,否则这些字符会被认作范围语法的一部分。要把一个双引号或反斜线放在一个被引用的界限值中,需在其前面添加一个反斜线(还有,在一个双引号引用的界限值中的一对双引号表示一个双引号字符,这与SQL字符串中的单引号规则类似)。此外,避免引用或者使用反斜线转义来保护所有数据字符,否则数据字符会被当作范围语法的一部分。如果要写一个是空字符串的界限值,则可以写成"",因为什么都不写表示一个无限界限。 范围值前后允许有空格,但是圆括号或方括号之间的任何空格会被当做上下界值的一部分(取决于元素类型,它可能是也可能不是有意义的)。 例子: --包括3,不包括7之间的所有点。 gaussdb=# SELECT '[3,7)'::int4range; int4range ----------- [3,7) (1 row) --既不包括3也不包括7之间的所有点。 gaussdb=# SELECT '(3,7)'::int4range; int4range ----------- [4,7) (1 row) --只包括单独一个点4。 gaussdb=# SELECT '[4,4]'::int4range; int4range ----------- [4,5) (1 row) --不包括点(并且将被标准化为 '空')。 gaussdb=# SELECT '[4,4)'::int4range; int4range ----------- empty (1 row)
  • 注意事项 只有系统管理员或者被授予了node group的ALTER权限的用户可以修改node group信息。 修改node group操作都是系统内部操作,除了SET DEFAULT语法之外,其他操作都需要在维护模式下(调用set xc_maintenance_mode=on;)。 ALTER NODE GROUP语法仅仅应该在数据库内部使用,使用者不应该手动调用这些SQL语句,否则会导致数据库系统数据不一致。
  • 语法格式 1 2 3 4 5 6 7 8 9 ALTER NODE GROUP groupname { SET DEFAULT | RENAME TO new_group_name | SET TABLE GROUP new_group_name | COPY BUCKETS FROM src_group_name | ADD NODE ( nodename [, ... ] ) | DELETE NODE ( nodename [, ... ] ) | RESIZE TO dest_group_name };
  • 参数说明 groupname 需要修改的node group名称。 取值范围:字符串,要符合标识符命名规范。 SET DEFAULT 将系统中除了groupname指定的node group之外的其他node group对象的in_redistribution字段设置为'y'。考虑到兼容以前版本,该语法仍然保留,且不需要设置维护模式。 RENAME TO new_group_name 将groupname指定的node group的名称修改为new_group_name。 SET TABLE GROUP new_group_name 将所有CN节点的pgxc_class表中pgroup字段是group_name的记录修改为new_group_name。 COPY BUCKETS FROM src_group_name 从src_group_name表示的NodeGroup中,将group_members字段和group_buckets字段的内容复制到groupname所表示的NodeGroup中。 ADD NODE ( nodename [, ... ] ) 从groupname指定的NodeGroup中增加指定的节点,这些新增节点在PGXC_NODE系统表中存在。该语句仅仅修改系统表,不会进行实际的节点添加和数据重分布,用户不应该直接调用该SQL语句。可以在PGXC_GROUP系统表中观察该语句的影响。 DELETE NODE ( nodename [, ... ] ) 从groupname指定的NodeGroup中,将指定的节点移除,这些被移除的节点仍然存在于PGXC_NODE系统表中。该语句仅仅修改系统表,不会进行实际的节点移除和数据重分布,用户不应该直接调用该SQL语句。可以在PGXC_GROUP系统表中观察该语句的影响。 RESIZE TO dest_group_name 设置集群resize操作标志,将groupname所表示的NodeGroup设置为重分布的源NodeGroup,并取消is_installation标志;同时将desst_group_name设置为重分布的目的NodeGroup,并设置is_installation标志。
  • DB_COL_PRIVS DB_COL_PRIVS视图显示以下授权信息: 当前用户作为对象所有者、授予者或被授予者时的列权限授予信息。 已启用角色或PUBLIC角色作为被授予者时的列权限授予信息。 默认所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_COL_PRIVS字段 名称 类型 描述 grantor character varying(128) 执行授权的用户名。 owner character varying(128) 对象的所有者。 grantee character varying(128) 被授予权限的用户或角色的名称。 table_schema character varying(128) 对象的Schema。 table_name character varying(128) 对象的名称。 column_name character varying(128) 列的名称。 privilege character varying(40) 列上的权限。 grantable character varying(3) 是否授予特权。 YES:授予特权。 NO:不授予特权。 common character varying(3) 暂不支持,值为NULL。 inherited character varying(3) 暂不支持,值为NULL。 父主题: 用户和权限管理
  • 高性能场景 进行大量数据插入时,建议如下: 需要设置批量绑定:odbc.ini配置文件中设置UseBatchProtocol=1、数据库设置support_batch_bind=on。 ODBC程序绑定类型要和数据库中类型一致。 客户端字符集和数据库字符集一致。 事务改成手动提交模式。 odbc.ini配置文件: [gaussdb] Driver=GaussMPP Servername=10.10.0.13 #数据库Server IP ... UseBatchProtocol=1 #默认打开 ConnSettings=set client_encoding=UTF8 #设置客户端字符编码,保证和server端一致
共100000条