华为云用户手册

  • max_replication_slots 参数说明:设置主机端的日志复制slot个数。 该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,0 ~ 1024(建议取值范围:8 ~ 100) 默认值:20 设置建议: 当使用双机复制、备份恢复、逻辑解码时,该参数值建议设为:当前物理流复制槽数+备份槽数+所需的逻辑复制槽数。 如果实际设置值比上述建议值小,可能造成这些功能不可用或异常。 物理流复制槽提供了一种自动化的方法来确保主DN在所有备DN收到xlog之前,xlog不会被移除。也就是说物理流复制槽用于支撑集群HA。集群所需要的物理流复制槽数为:一组DN中,备与主DN之间的比例。例如,假设集群的DN高可用方案为1主、1备,则所需物理流复制槽数为1。又例如,假设集群的DN高可用方案为1主3备,则所需物理流复制槽数为3。 备份槽:记录备份执行过程中的一些复制信息,全量备份和增量备份各自对应单独的备份槽,共2个。 关于逻辑复制槽数,请按如下规则考虑。 一个逻辑复制槽只能解码一个Database的修改,如果需要解码多个Database,则需要创建多个逻辑复制槽。 如果需要多路逻辑复制同步给多个目标数据库,在源端数据库需要创建多个逻辑复制槽,每个逻辑复制槽对应一条逻辑复制链路。
  • repl_uuid 参数说明:设置用于主备UUID验证的UUID码。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 如果主机上开启了UUID验证功能、且配置了非空字符串的repl_uuid验证码,那么备机也需要开启UUID验证功能、且配置相同的repl_uuid验证码,否则主备日志复制和备机重建请求将被主机拒绝。 该参数支持SIGHUP动态加载新值。修改之后,不影响已建连的主备连接,对后续主备复制请求和主备重建请求生效。 支持Quorum、DCF协议下的备机重建验证;支持Quorum协议下的主备复制验证;不支持DCF协议下的主备复制验证。 不支持跨集群主、备之间的认证,包括Dorado主备集群和容灾主备集群。 UUID验证功能主要为了防止主、备误连导致的数据串扰和污染,不是用于安全目的。 该参数不支持主、备间自动同步。 取值范围:字符串类型。长度0~63个字符,字母和数字的组合,大小写不敏感,内部统一转换为小写存储。空字符串表示不启用UUID验证功能。 默认值:空字符串
  • replconninfo1 参数说明:设置本端侦听和鉴权的第一个节点信息。集群安装成功后自动配置无需手动修改。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串。其中空字符串表示没有配置第一个节点信息。 默认值:DN侦听的第一个连接信息。 示例: replconninfo1 = 'localhost=127.0.0.1 localport=XXXX localheartbeatport=XXXX localservice=XXXX remotehost=127.0.0.1 remoteport=XXXX remoteheartbeatport=XXXX remoteservice=XXXX'
  • enable_wal_shipping_compression 参数说明:在流式容灾模式下设置启动跨集群日志压缩功能。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 该参数仅作用于流式容灾中跨集群传输的一对walsender与walreceiver中,在主集群上配置。 取值范围:布尔型 true 表示打开流式容灾跨集群日志压缩 false 表示关闭流式容灾跨集群日志压缩 默认值:false
  • replconninfo2 参数说明:设置本端侦听和鉴权的第二个节点信息。集群安装成功后自动配置无需手动修改。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串。其中空字符串表示没有配置第二个节点信息。 默认值:DN侦听的第二个连接信息。 示例: replconninfo2 = 'localhost=127.0.0.1 localport=XXXX localheartbeatport=XXXX localservice=XXXX remotehost=127.0.0.1 remoteport=XXXX remoteheartbeatport=XXXX remoteservice=XXXX'
  • replconninfo3 参数说明:设置本端侦听和鉴权的第三个节点信息。集群安装成功后自动配置无需手动修改。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串。其中空字符串表示没有配置第三个节点信息。 默认值:DN侦听的第三个连接信息。 示例: replconninfo3 = 'localhost=127.0.0.1 localport=XXXX localheartbeatport=XXXX localservice=XXXX remotehost=127.0.0.1 remoteport=XXXX remoteheartbeatport=XXXX remoteservice=XXXX'
  • replconninfo6 参数说明:设置本端侦听和鉴权的第六个节点信息。集群安装成功后自动配置无需手动修改。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串。其中空字符串表示没有配置第六个节点信息。 默认值:DN侦听的第六个连接信息。 示例: replconninfo6 = 'localhost=127.0.0.1 localport=XXXX localheartbeatport=XXXX localservice=XXXX remotehost=127.0.0.1 remoteport=XXXX remoteheartbeatport=XXXX remoteservice=XXXX'
  • replconninfo4 参数说明:设置本端侦听和鉴权的第四个节点信息。集群安装成功后自动配置无需手动修改。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:字符串。其中空字符串表示没有配置第四个节点信息。 默认值:DN侦听的第四个连接信息。 示例: replconninfo4 = 'localhost=127.0.0.1 localport=XXXX localheartbeatport=XXXX localservice=XXXX remotehost=127.0.0.1 remoteport=XXXX remoteheartbeatport=XXXX remoteservice=XXXX'
  • wal_keep_segments 参数说明:“pg_xlog”目录下保留事务日志文件的最小数目。备机通过获取主机此处的日志进行流复制。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,2 ~ INT_MAX 默认值:128 设置建议: 当服务器开启日志归档或者从检查点恢复时,保留的日志文件数量可能大于wal_keep_segments设定的值。 如果此参数设置过小,则在备机请求事务日志时,此事务日志可能已经被产生的新事务日志覆盖,导致请求失败,主备关系断开。 当双机为异步传输时,以COPY方式连续导入4G以上数据需要增大wal_keep_segments配置。以T6000单板为例,如果导入数据量为50G,建议调整参数为1000。您可以在导入完成并且日志同步正常后,动态恢复此参数设置。
  • max_wal_senders 参数说明:指定事务日志发送进程的并发连接最大数量。不可大于等于max_connections。 该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 wal_level必须设置为archive、hot_standby或者logical以允许备机的连接。 取值范围:整型,0 ~ 1024(建议取值范围:8 ~ 100) 只有当使用单DN实例无主备场景下才可以设置0。 默认值: 设置建议:每个备机与主机的日志复制连接均会占用一个walsender线程,因此此参数务必大于等于DN数量,否则会导致备机无法连接主机。当有逻辑复制需求时,每个日志抽取线程会占用一个walsender线程,有逻辑复制时需要设置max_wal_senders大于备机+逻辑复制抽取线程的数量。
  • wal_sender_timeout 参数说明:设置本端等待事务日志接收端接收日志的最大等待时间。 该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。 如果主机数据较大,重建操作需要增大此参数的值,主机数据在500GB时,此参数的参考值为600s。 此值不能大于wal_receiver_timeout或数据库重建时的超时参数。 取值范围:整型,0 ~ 2147483647‬,单位为毫秒(ms)。 默认值:6s
  • 注意事项 PQprepare创建一个为PQexecPrepared执行用的预备语句,本特性支持命令的重复执行,不需要每次都进行解析和规划。PQprepare仅在协议3.0及以后的连接中支持,使用协议2.0时,PQprepare将失败。 该函数从查询字符串创建一个名为stmtName的预备语句,该查询字符串必须包含一个SQL命令。stmtName可以是""来创建一个未命名的语句,在这种情况下,任何预先存在的未命名的语句都将被自动替换,否则,如果在当前会话中已经定义了语句名称,那么这就是一个错误。如果使用了任何参数,那么在查询中将它们称为$1,$2等。nParams是在paramTypes[]数组中预先指定类型的参数的数量。(当nParams为0时,数组指针可以为NULL),paramTypes[]通过OID指定要分配给参数符号的数据类型。如果paramTypes为NULL,或者数组中的任何特定元素为零,服务器将按照对非类型化字面字符串的相同方式为参数符号分配数据类型。另外,查询可以使用数字高于nParams的参数符号,还将推断这些符号的数据类型。 通过执行SQLPREPARE语句,还可以创建与PQexecPrepared一起使用的预备语句。此外,虽然没有用于删除预备语句的libpq函数,但是SQL DEALLOCATE语句可用于此目的。
  • 定时任务管理 创建测试表。 1 gaussdb=# CREATE TABLE test(id int, time date); 当结果显示为如下信息,则表示创建成功。 1 CREATE TABLE 创建自定义存储过程。 1 2 3 4 5 6 7 8 9 gaussdb=# CREATE OR REPLACE PROCEDURE PRC_JOB_1() AS N_NUM integer :=1; BEGIN FOR I IN 1..1000 LOOP INSERT INTO test VALUES(I,SYSDATE); END LOOP; END; / 当结果显示为如下信息,则表示创建成功。 1 CREATE PROCEDURE 创建任务。 新创建的任务(未指定job_id)表示每隔1分钟执行一次存储过程PRC_JOB_1。 1 2 3 4 5 gaussdb=# call dbe_task.submit('call public.prc_job_1(); ', sysdate, 'interval ''1 minute''', :a); job ----- 1 (1 row) 指定job_id创建任务,其中job_id可用范围为1~32767。 1 2 3 4 5 gaussdb=# call dbe_task.id_submit(2,'call public.prc_job_1(); ', sysdate, 'interval ''1 minute'''); isubmit --------- (1 row) 通过视图查看当前用户已创建的任务信息。 1 2 3 4 5 gaussdb=# select job,dbname,start_date,last_date,this_date,next_date,broken,status,interval,failures,what from my_jobs; job | dbname | start_date | last_date | this_date | next_date | broken | status | interval | failures | what -----+--------+---------------------+----------------------------+----------------------------+---------------------+--------+--------+---------------------+----------+--------------------------- 1 | testdb | 2017-07-18 11:38:03 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:53:03.607838 | 2017-07-18 13:54:03 | n | s | interval '1 minute' | 0 | call public.prc_job_1(); (1 row) 停止任务。 1 2 3 4 5 gaussdb=# call dbe_task.finish(1,true); broken -------- (1 row) 启动任务。 1 2 3 4 5 gaussdb=# call dbe_task.finish(1,false); broken -------- (1 row) 修改任务属性。 修改JOB的next_time参数信息。 1 2 3 4 5 6 --修改Job1的next_time为1小时以后开始执行。 gaussdb=# call dbe_task.next_time(1, sysdate+1.0/24); next_date ----------- (1 row) 修改JOB的Interval参数信息。 1 2 3 4 5 6 --修改Job1的Interval为每隔1小时执行一次。 gaussdb=# call dbe_task.interval(1,'sysdate + 1.0/24'); interval ---------- (1 row) 修改JOB的What参数信息。 1 2 3 4 5 6 --修改Job1的What为执行SQL语句“insert into public.test values(333, sysdate+5);”。 gaussdb=# call dbe_task.content(1,'insert into public.test values(333, sysdate+5);'); what ------ (1 row) 同时修改JOB的Next_date、Interval、What等多个参数信息。 1 2 3 4 5 gaussdb=# call dbe_task.update(1, 'call public.prc_job_1();', sysdate, 'interval ''1 minute'''); change -------- (1 row) 删除JOB。 1 2 3 4 5 gaussdb=# call dbe_task.cancel(1); remove -------- (1 row) 查看JOB执行情况。 当JOB自动执行时,如果JOB执行失败(即job_status状态值为'f')时,请联系管理员查看pg_log的运行日志来查看JOB的失败信息。 日志信息如下所示,从失败信息(detail error msg)中可以查看失败的具体错误。 LOG : Execute Job Detail: job_id: 1 what: call public.test(); start_date: 2017-07-19 23:30:47.401818 job_status: failed detail error msg: relation "test" does not exist end_date: 2017-07-19 23:30:47.401818 next_run_date: 2017-07-19 23:30:56.855827 JOB的权限控制。 当创建一个JOB时,该JOB会和创建该JOB的数据库和用户绑定(即:pg_job系统表新增的JOB记录中的dbname和log_user)。 如果当前用户是DBA用户、系统管理员或该JOB的创建用户(即:pg_job中的log_user),那么该用户有权限通过高级包接口remove、change、next_data、what、interval删除或修改JOB的参数信息。否则,会提示当前用户没有权限操作该JOB。 如果当前数据库是该JOB创建所属的数据库(即:pg_job系统表中的dbname),那么连接到当前数据库上可以通过高级包接口cancel、update、next_data、content、interval删除或修改JOB的参数信息。 当删除JOB所属的数据库(即:pg_job系统表中的dbname)时,系统会关联删除该数据库从属的JOB记录。 当删除JOB所属的用户(即:pg_job系统表中的log_user)时,系统会关联删除该用户从属的JOB记录。 JOB的并发控制管理。 用户可以通过配置GUC参数job_queue_processes调整并发同时执行的JOB数目。 当job_queue_processes为0时,表示不启用定时任务功能,任何job都不会被执行。 当job_queue_processes为大于0时,表示启用定时任务功能且系统能够并发处理的最大任务数。 由于并行运行的任务数太多会消耗更多的系统资源,因此需要设置系统并发处理的任务数,当前并发的任务数达到job_queue_processes时,且此时又有任务到期,那么这些任务本次得不到执行而延期到下一轮询周期。因此,建议用户需要根据每个任务的执行时长合理地设置任务的时间间隔(即submit接口中的interval参数),来避免由于任务执行时间太长而导致下个轮询周期无法正常执行。 注:对于不使用JOB的集群中,用户可以通过在集群安装初始化完成后,通过设置job_queue_processes为0来关闭JOB功能,减少系统资源的消耗。
  • 背景信息 当客户在使用数据库过程中,如果白天执行一些耗时比较长的任务(例如:统计数据汇总之类或从其他数据库同步数据的任务),会对正常的业务有性能影响,所以客户经常选择在晚上执行,无形中增加了客户的工作量。因此数据库兼容ORA数据库中定时任务的功能,可以由客户创建定时任务,当任务时间点到达后可以自动触发任务的执行,从而可以减少客户运维的工作量。 数据库兼容ORA定时任务功能主要通过DBE_SCHEDULER和DBE_TASK高级包提供的接口,可以实现定时任务的创建、任务到期自动执行、任务删除和修改任务属性(包括:任务id、任务的关闭开启、任务的触发时间、触发时间间隔和任务内容等)。推荐使用DBE_SCHEDULER接口,保证高可用性、高可靠性,并且支持更灵活的任务调度。接口说明、迁移指导示例请参见DBE_SCHEDULER章节。
  • GLOBAL_REDO_STATUS GLOBAL_REDO_STATUS视图显示整个集群所有实例的日志回放情况。 表1 GLOBAL_REDO_STATUS字段 名称 类型 描述 node_name text 实例名称。 redo_start_ptr bigint 当前实例日志回放的起始点。 redo_start_time bigint 当前实例日志回放的起始UTC时间。 redo_done_time bigint 当前实例日志回放的结束UTC时间。 curr_time bigint 当前实例的当前UTC时间。 min_recovery_point bigint 当前实例日志的完成回放后可对外提供服务的最小一致性点。 read_ptr bigint 当前实例日志的读取位置。 last_replayed_read_ptr bigint 当前实例的日志回放位置。 recovery_done_ptr bigint 当前实例启动完成时的回放位置。 read_xlog_io_counter bigint 当前实例读取回放日志的I/O次数计数。 read_xlog_io_total_dur bigint 当前实例读取回放日志的I/O总用时。 read_data_io_counter bigint 当前实例日志回放过程中读取数据页面的I/O次数计数。 read_data_io_total_dur bigint 当前实例日志回放过程中读取数据页面的I/O总用时。 write_data_io_counter bigint 当前实例日志回放过程中写数据页面的I/O次数计数。 write_data_io_total_dur bigint 当前实例日志回放过程中写数据页面的I/O总用时。 process_pending_counter bigint 当前实例日志回放过程中日志分发线程的同步次数计数。 process_pending_total_dur bigint 当前实例日志回放过程中日志分发线程的同步总用时。 apply_counter bigint 当前实例日志回放过程中回放线程的同步次数计数。 apply_total_dur bigint 当前实例日志回放过程中回放线程的同步总用时。 speed bigint 当前实例日志回放速率,每回放256MB日志该值更新一次,单位byte/s。 在集群环境下,建议使用cm_ctl query -rv命令来获取更精确的备机回放速度(cm_ctl命令请参考《工具参考》中“统一集群管理工具”章节)。 local_max_ptr bigint 当前实例启动成功后本地收到的回放日志的最大值。 primary_flush_ptr bigint 主机落盘日志的位置。 worker_info text 当前实例回放线程信息,若没有开并行回放则该值为空。 父主题: Utility
  • 更多优化示例 示例1:修改基表为replication表,并且在过滤列上创建索引。 1 2 3 create table master_table (a int); create table sub_table(a int, b int); select a from master_table group by a having a in (select a from sub_table); 上述事例中存在一个相关性子查询,为了提升查询的性能,建表时,可以将sub_table修改为一个replication表,并且在字段a上创建一个index。
  • 数值类型 表1列出了所有的可用类型。数字操作符和相关的内置函数请参见数字操作函数和操作符。 表1 整数类型 名称 描述 存储空间 范围 TINYINT 微整数,别名为INT1。 1字节 0 ~ +255 SMALLINT 小范围整数,别名为INT2。 2字节 -32,768 ~ +32,767 INTEGER 常用的整数,别名为INT4。 4字节 -2,147,483,648 ~ +2,147,483,647 BINARY_INTEGER 常用的整数INTEGER的别名。 4字节 -2,147,483,648 ~ +2,147,483,647 BIGINT 大范围的整数,别名为INT8。 8字节 -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807 int16 十六字节的大范围整数,目前不支持用户用于建表等使用。 16字节 -170,141,183,460,469,231,731,687,303,715,884,105,728 ~ +170,141,183,460,469,231,731,687,303,715,884,105,727 示例: --创建具有TINYINT类型数据的表。 gaussdb=# CREATE TABLE int_type_t1 ( IT_COL1 TINYINT ); --插入数据。 gaussdb=# INSERT INTO int_type_t1 VALUES(10); --查看数据。 gaussdb=# SELECT * FROM int_type_t1; it_col1 --------- 10 (1 row) --删除表。 gaussdb=# DROP TABLE int_type_t1; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 --创建具有TINYINT,INTEGER,BIGINT类型数据的表。 gaussdb=# CREATE TABLE int_type_t2 ( a TINYINT, b TINYINT, c INTEGER, d BIGINT ); --插入数据。 gaussdb=# INSERT INTO int_type_t2 VALUES(100, 10, 1000, 10000); --查看数据。 gaussdb=# SELECT * FROM int_type_t2; a | b | c | d -----+----+------+------- 100 | 10 | 1000 | 10000 (1 row) --删除表。 gaussdb=# DROP TABLE int_type_t2; TINYINT、SMALLINT、INTEGER、BIGINT和INT16类型存储各种范围的数字,即整数。如果存储超出范围以外的数值将会导致错误。 常用的类型是INTEGER,因为它提供了在范围、存储空间、性能之间的最佳平衡。一般只有取值范围确定不超过SMALLINT的情况下,才会使用SMALLINT类型。而只有在INTEGER的范围不够的时候才使用BIGINT,因为INTEGER的处理速度相对快得多。 表2 任意精度类型 名称 描述 存储空间 范围 NUMERIC[(p[,s])], DECIMAL[(p[,s])] 精度p取值范围为[1,1000],标度s取值范围为[0,p]。 说明: p为总位数,s为小数位数。 用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。 NUMBER[(p[,s])] NUMERIC类型的别名。 用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 未指定精度的情况下,小数点前最大131,072位,小数点后最大16,383位。 示例: --创建表。 gaussdb=# CREATE TABLE decimal_type_t1 ( DT_COL1 DECIMAL(10,4) ); --插入数据。 gaussdb=# INSERT INTO decimal_type_t1 VALUES(123456.122331); --查询表中的数据。 gaussdb=# SELECT * FROM decimal_type_t1; dt_col1 ------------- 123456.1223 (1 row) --删除表。 gaussdb=# DROP TABLE decimal_type_t1; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 --创建表。 gaussdb=# CREATE TABLE numeric_type_t1 ( NT_COL1 NUMERIC(10,4) ); --插入数据。 gaussdb=# INSERT INTO numeric_type_t1 VALUES(123456.12354); --查询表中的数据。 gaussdb=# SELECT * FROM numeric_type_t1; nt_col1 ------------- 123456.1235 (1 row) --删除表。 gaussdb=# DROP TABLE numeric_type_t1; 与整数类型相比,任意精度类型需要更大的存储空间,其存储效率、运算效率以及压缩比效果都要差一些。在进行数值类型定义时,优先选择整数类型。当数值超出整数可表示最大范围时,再选用任意精度类型。 使用NUMERIC/DECIMAL进行列定义时,建议指定该列的精度p以及标度s。 表3 序列整型 名称 描述 存储空间 范围 SMALLSERIAL 二字节序列整型。 2字节。 -32,768 ~ +32,767。 SERIAL 四字节序列整型。 4字节。 -2,147,483,648 ~ +2,147,483,647。 BIGSERIAL 八字节序列整型。 8字节。 -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 --创建表。 gaussdb=# CREATE TABLE smallserial_type_tab(a SMALLSERIAL); --插入数据。 gaussdb=# INSERT INTO smallserial_type_tab VALUES(default); --再次插入数据。 gaussdb=# INSERT INTO smallserial_type_tab VALUES(default); --查看数据。 gaussdb=# SELECT * FROM smallserial_type_tab; a --- 1 2 (2 rows) --创建表。 gaussdb=# CREATE TABLE serial_type_tab(b SERIAL); --插入数据。 gaussdb=# INSERT INTO serial_type_tab VALUES(default); --再次插入数据。 gaussdb=# INSERT INTO serial_type_tab VALUES(default); --查看数据。 gaussdb=# SELECT * FROM serial_type_tab; b --- 1 2 (2 rows) --创建表。 gaussdb=# CREATE TABLE bigserial_type_tab(c BIGSERIAL); --插入数据。 gaussdb=# INSERT INTO bigserial_type_tab VALUES(default); --再次插入数据。 gaussdb=# INSERT INTO bigserial_type_tab VALUES(default); --查看数据。 gaussdb=# SELECT * FROM bigserial_type_tab; c --- 1 2 (2 rows) --删除表。 gaussdb=# DROP TABLE smallserial_type_tab; gaussdb=# DROP TABLE serial_type_tab; gaussdb=# DROP TABLE bigserial_type_tab; SMALLSERIAL、SERIAL和BIGSERIAL类型不是真正的类型,只是为在表中设置唯一标识做的概念上的便利。因此,创建一个整数字段,并且把它的缺省数值安排为从一个序列发生器读取。应用了一个NOT NULL约束以确保NULL不会被插入。在大多数情况下用户可能还希望附加一个UNIQUE或PRIMARY KEY约束避免意外地插入重复的数值,但这个不是自动的。最后,序列发生器将从属于该字段,这样当该字段或表被删除的时候也一并删除它。目前只支持在创建表时候指定SERIAL列,不可以在已有的表中,增加SERIAL列。另外临时表也不支持创建SERIAL列。因为SERIAL不是真正的类型,所以也不可以将表中存在的列类型转化为SERIAL。 表4 浮点类型 名称 描述 存储空间 范围 REAL, FLOAT4 单精度浮点数,不精准。 4字节。 -3.402E+38~+3.402E+38,6位十进制数字精度。 DOUBLE PRECISION, FLOAT8 双精度浮点数,不精准。 8字节。 -1.79E+308~+1.79E+308,15位十进制数字精度。 FLOAT[(p)] 浮点数,不精准。精度p取值范围为[1,53]。 说明: p为精度,表示二进制总位数。 4字节或8字节。 根据精度p不同选择REAL或DOUBLE PRECISION作为内部表示。如不指定精度,内部用DOUBLE PRECISION表示。 BINARY_DOUBLE 是DOUBLE PRECISION的别名,为兼容Oracle数据类型。 8字节。 -1.79E+308~+1.79E+308,15位十进制数字精度。 DEC[(p[,s])] 精度p取值范围为[1,1000],标度s取值范围为[0,p]。 说明: p为总位数,s为小数位位数。 用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 在精度和标度指定最大的情况下,小数点前最大131,072位,小数点后最大16,383位。 INTEGER[(p[,s])] 精度p取值范围为[1,1000],标度s取值范围为[0,p]。 在未指定精度和标度的情况下,默认精度p为10,标度s为0。 未指定精度和标度的情况下,该类型映射为INTEGER。指定精度和标度的情况下,该类型映射为NUMERIC。 用户声明精度。每四位(十进制位)占用两个字节,然后在整个数据上加上八个字节的额外开销。 在精度和标度指定最大的情况下,小数点前最大131,072位,小数点后最大16,383位。 未指定精度和标度的情况下,范围是-2,147,483,648 ~ +2,147,483,647。 二进制浮点数据类型REAL、FLOAT4、DOUBLE、DOUBLE PRECISION、FLOAT8、FLOAT[(p)]和BINARY_DOUBLE为不精确的数值类型,其内部存储为近似值,因此存储和检索时可能会显示轻微的差异。当用户在使用二进制浮点数据类型时需要注意以下几点: 精确存储和计算:如果需要精确存储和计算(例如货币金额),请改用精确的数据类型(例如numeric)。 复杂计算:若使用不精确的数据类型执行复杂计算以获得重要数据,需要仔细评估其结果。 浮点数比较:比较两个浮点数是否相等的结果可能与预期存在差异。 下溢错误:如果一个浮点数过于接近零,反而无法准确表示,会导致下溢错误。 关于浮点类型的精度,目前只能保证直接读取时的精度位数。涉及分布式计算时,由于计算执行在各个DN节点上,并且最终汇聚到一个CN节点,因此误差可能会随计算节点数量增加而被放大。 表4中描述的p为精度,表示整数位最低可以接受的总位数;s为小数位位数。 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 --创建表。 gaussdb=# CREATE TABLE float_type_t2 ( FT_COL1 INTEGER, FT_COL2 FLOAT4, FT_COL3 FLOAT8, FT_COL4 FLOAT(3), FT_COL5 BINARY_DOUBLE, FT_COL6 DECIMAL(10,4), FT_COL7 INTEGER(6,3) )DISTRIBUTE BY HASH ( ft_col1); --插入数据。 gaussdb=# INSERT INTO float_type_t2 VALUES(10,10.365456,123456.1234,10.3214, 321.321, 123.123654, 123.123654); --查看数据。 gaussdb=# SELECT * FROM float_type_t2 ; ft_col1 | ft_col2 | ft_col3 | ft_col4 | ft_col5 | ft_col6 | ft_col7 ---------+---------+-------------+---------+---------+----------+--------- 10 | 10.3655 | 123456.1234 | 10.3214 | 321.321 | 123.1237 | 123.124 (1 row) --删除表。 gaussdb=# DROP TABLE float_type_t2; 父主题: 数据类型
  • DB_TAB_PARTITIONS DB_TAB_PARTITIONS视图显示当前用户所能访问的一级分区信息(包括二级分区表)。所有用户都可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。分布式暂不支持二级分区,所以该视图中暂不存储二级分区表的一级分区信息。 表1 DB_TAB_PARTITIONS字段 名称 类型 描述 table_owner character varying(64) 表的所有者。 table_name character varying(64) 关系表名称。 partition_name character varying(64) 分区名称。 high_value text 分区的边界值。 对于范围分区和间隔分区,显示各分区的上边界值。 对于列表分区,显示各分区的取值列表。 对于哈希分区,显示各分区的编号。 tablespace_name name 分区表的表空间名称。 schema character varying(64) 名称空间的名称。 composite character varying(3) 指示表是否为二级分区表。 subpartition_count numeric 暂不支持,值为NULL。 high_value_length integer 分区绑定值表达式长度。 partition_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(7) 指示是否记录对表的更改。 compression character varying(8) 指示表分区的实际压缩属性。 compress_for character varying(30) 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 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。 is_nested character varying(3) 指示这是否是嵌套表分区。 parent_table_partition character varying(128) 暂不支持,值为NULL。 interval character varying(3) 指示分区是否在间隔分区表的间隔节中。分布式暂不支持间隔分区,该字段值为NO。 segment_created character varying(4) 指示表分区是否创建了段或未创建。 indexing character varying(4) 暂不支持,值为NULL。 read_only character varying(4) 暂不支持,值为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。 cellmemory character varying(24) 暂不支持,值为NULL。 inmemory_service character varying(12) 暂不支持,值为NULL。 inmemory_service_name character varying(100) 暂不支持,值为NULL。 memoptimize_read character varying(8) 暂不支持,值为NULL。 memoptimize_write character varying(8) 暂不支持,值为NULL。 父主题: 系统视图
  • 语法 RAISE有以下五种语法格式: 图1 raise_format::= 图2 raise_condition::= 图3 raise_sqlstate::= 图4 raise_option::= 图5 raise::= 参数说明: level选项用于指定错误级别,有DEBUG、LOG、INFO、NOTICE、WARNING以及EXCEPTION(默认值)。EXCEPTION抛出一个正常终止当前事务的异常,其他的仅产生不同异常级别的信息。特殊级别的错误信息是否报告到客户端、写到服务器日志由log_min_messages和client_min_messages这两个GUC参数控制。 format:格式字符串,指定要报告的错误消息文本。格式字符串后可跟表达式,用于向消息文本中插入。在格式字符串中,%由format后面跟着的参数的值替换,%%用于打印出%。例如: --v_job_id 将替换字符串中的 %: RAISE NOTICE 'Calling cs_create_job(%)',v_job_id; option = expression:向错误报告中添加另外的信息。关键字option可以是MESSAGE、DETAIL、HINT以及ERRCODE,并且每一个expression可以是任意的字符串。 MESSAGE,指定错误消息文本,这个选项不能用于在USING前包含一个格式字符串的RAISE语句中。 DETAIL,说明错误的详细信息。 HINT,用于打印出提示信息。 ERRCODE,向报告中指定错误码(SQLSTATE)。可以使用条件名称或者直接用五位字符的SQLSTATE错误码。 condition_name:错误码对应的条件名。 sqlstate:错误码。 如果在RAISE EXCEPTION命令中既没有指定条件名也没有指定SQLSTATE,默认用RAISE EXCEPTION (P0001)。如果没有指定消息文本,默认用条件名或者SQLSTATE作为消息文本。 当由SQLSTATE指定了错误码,则不局限于已定义的错误码,可以选择任意包含五个数字或者大写的ASCII字母的错误码,而不是00000。建议避免使用以三个0结尾的错误码,因为这种错误码是类别码,会被整个种类捕获。 兼容O模式下,SQLCODE等于SQLSTATE。 图5所示的语法不接受任何参数。这种形式仅用于一个BEGIN块中的EXCEPTION语句,它使得错误重新被处理。
  • PG_ATTRIBUTE PG_ATTRIBUTE系统表存储关于表字段的信息。 表1 PG_ATTRIBUTE字段 名称 类型 描述 attrelid oid 此字段所属表。 attname name 字段名。 atttypid oid 字段类型。 attstattarget integer 控制ANALYZE为这个字段积累的统计细节的级别。 零值表示不收集统计信息。 负数表示使用系统缺省的统计对象。 正数值的确切信息是和数据类型相关的。 对于标量数据类型,A TTS TATTARGET既是要收集的"最常用数值"的目标数目,也是要创建的柱状图的目标数量。 attlen smallint 是本字段类型的12.2.105 PG_TYPE中typlen的拷贝。 attnum smallint 字段编号。 attndims integer 如果该字段是数组,则是维数,否则是0 。 attcacheoff integer 在磁盘上的时候总是-1 ,但是如果加载入内存中的行描述器中,它可能会被更新以缓冲在行中字段的偏移量。 atttypmod integer 记录创建新表时支持的类型特定的数据(比如一个varchar字段的最大长度)。它传递给类型相关的输入和长度转换函数当做第三个参数。其值对那些不需要ATTTYPMOD的类型通常为-1。 attbyval boolean 这个字段类型的12.2.105 PG_TYPE中typbyval的拷贝。 attstorage "char" 这个字段类型的12.2.105 PG_TYPE中typstorage的拷贝。 attalign "char" 这个字段类型的12.2.105 PG_TYPE中typalign的拷贝。 attnotnull boolean 这代表一个非空约束。可以改变这个字段以打开或者关闭这个约束。 atthasdef boolean 这个字段有一个缺省值,此时它对应12.2.45 PG_ATTRDEF表里实际定义此值的记录。 attisdropped boolean 这个字段已经被删除了,不再有效。一个已经删除的字段物理上仍然存在表中,但会被分析器忽略,因此不能再通过SQL访问。 attislocal boolean 这个字段是局部定义在关系中的。请注意一个字段可以同时是局部定义和继承的。 attcmprmode tinyint 对某一列指定压缩方式。压缩方式包括: 0:ATT_CMPR_NOCOMPRESS,不压缩 1:ATT_CMPR_DELTA,DELTA压缩算法 2:ATT_CMPR_DICTIONARY,字典压缩算法 3:ATT_CMPR_PREFIX,前缀压缩算法 4:ATT_CMPR_NUMSTR,数字字符串压缩算法 attinhcount integer 这个字段所拥有的直接父表的个数。如果一个字段的父表个数非零,则它就不能被删除或重命名。 attcollation oid 对此列定义的校对列。 attacl aclitem[] 列级访问权限控制。 attoptions text[] 字段属性。目前支持以下两种属性: n_distinct,表示该字段的distinct值数量(不包含子表)。 n_distinct_inherited,表示该字段的distinct值数量(包含子表)。 attfdwoptions text[] 外表字段属性。当前支持的dist_fdw、file_fdw、log_fdw未使用外表字段属性。 attinitdefval bytea 存储了此列默认的值表达式。行存表的ADD COLUMN需要使用此字段。 attkvtype tinyint 对某一列指定key value类型。类型包括: 0:ATT_KV_UNDEFINED,默认。 1:ATT_KV_TAG,维度。 2:ATT_KV_FIELD,指标。 3:ATT_KV_TIMETAG,时间列。 4:ATT_KV_HIDETAG,隐藏分布列。 父主题: 系统表
  • 查询规划 介绍查询优化器方法配置、开销常量、规划算法以及一些配置参数。 优化器中涉及的两个参数: INT_MAX数据类型INT的最大值,其值为2147483647。 DBL_MAX数据类型FLOAT的最大值。 全局设置查询规划相关参数除了客户业务外也会对数据库自身运维和监控业务造成影响,如WDR报告生成、扩容、重分布、数据导入导出等。 优化器方法配置 优化器开销常量 基因查询优化器 其他优化器选项 父主题: GUC参数说明
  • ADM_TYPES ADM_TYPES视图用于描述数据库中的所有对象类型。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_TYPES字段 名称 类型 描述 owner character varying(128) 类型的所有者。 type_name character varying(128) 类型名称。 type_oid raw 类型的标识符(OID)。 typecode character varying(128) 类型的类型代码。 attributes numeric 类型中的属性数。 methods numeric 暂不支持,值为0。 predefined character varying(3) 表示该类型是否是内置类型。 incomplete character varying(3) 表示该类型是否是不完整类型。 final character varying(3) 暂不支持,值为NULL。 instantiable character varying(3) 暂不支持,值为NULL。 persistable character varying(3) 暂不支持,值为NULL。 supertype_owner character varying(128) 暂不支持,值为NULL。 supertype_name character varying(128) 暂不支持,值为NULL。 local_attributes numeric 暂不支持,值为NULL。 local_methods numeric 暂不支持,值为NULL。 typeid raw 暂不支持,值为NULL。 父主题: 系统视图
  • 原型 1 2 3 4 5 6 7 SQLRETURN SQLConnect(SQLHDBC ConnectionHandle, SQLCHAR *ServerName, SQLSMALLINT NameLength1, SQLCHAR *UserName, SQLSMALLINT NameLength2, SQLCHAR *Authentication, SQLSMALLINT NameLength3);
  • 参数 表1 SQLConnect参数 关键字 参数说明 ConnectionHandle 连接句柄,通过SQLAllocHandle获得。 ServerName 要连接数据源的名称。 NameLength1 ServerName的长度。 UserName 数据源中数据库用户名。 NameLength2 UserName的长度。 Authentication 数据源中数据库用户密码。 NameLength3 Authentication的长度。
  • PG_STAT_ALL_TABLES PG_STAT_ALL_TABLES视图可用来查询当前数据库中每个表的信息(包括TOAST表),显示特定表的统计信息。 表1 PG_STAT_ALL_TABLES字段 名称 类型 描述 relid oid 表的OID。 schemaname name 该表的模式名。 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 最后一次清理该表的时间。 last_autovacuum timestamp with time zone 这个表上次被autovacuum守护线程清理的时间。 last_analyze timestamp with time zone 上次分析该表的时间。 last_autoanalyze timestamp with time zone 这个表上次被autovacuum守护线程分析的时间。 vacuum_count bigint 这个表被清理的次数。 autovacuum_count bigint 这个表被autovacuum清理的次数。 analyze_count bigint 这个表被手动分析的次数。 autoanalyze_count bigint 这个表被autovacuum守护进程分析的次数。 last_data_changed timestamp with time zone 记录这个表上一次数据发生变化的时间(引起数据变化的操作包括对表的修改insert/update/delete/truncate和对表的分区(partition/subpartition)的修改exchange/truncate/drop),该列数据仅在本地数据库主节点记录。 父主题: 系统视图
  • ADM_VIEWS ADM_VIEWS视图显示数据库中的视图信息。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_VIEWS字段 名称 类型 描述 owner character varying(64) 视图的所有者。 view_name character varying(64) 视图名称。 text text 视图文本。 text_length integer 视图文本长度。 text_vc character varying(4000) 视图创建语句。此列可能会截断视图文本。BEQUEATH子句将不会作为此视图中的TEXT_VC列的一部分出现。 type_text_length numeric 暂不支持,值为NULL。 type_text character varying(4000) 暂不支持,值为NULL。 oid_text_length numeric 暂不支持,值为NULL。 oid_text character varying(4000) 暂不支持,值为NULL。 view_type_owner character varying(128) 暂不支持,值为NULL。 view_type character varying(128) 暂不支持,值为NULL。 superview_name character varying(128) 暂不支持,值为NULL。 editioning_view character varying(1) 暂不支持,值为NULL。 read_only character varying(1) 暂不支持,值为NULL。 container_data character varying(1) 暂不支持,值为NULL。 bequeath character varying(12) 暂不支持,值为NULL。 origin_con_id character varying(256) 暂不支持,值为NULL。 default_collation character varying(100) 暂不支持,值为NULL。 containers_default character varying(3) 暂不支持,值为NULL。 container_map character varying(3) 暂不支持,值为NULL。 extended_data_link character varying(3) 暂不支持,值为NULL。 extended_data_link_map character varying(3) 暂不支持,值为NULL。 has_sensitive_column character varying(3) 暂不支持,值为NULL。 admit_null character varying(3) 暂不支持,值为NULL。 pdb_local_only character varying(3) 暂不支持,值为NULL。 父主题: 系统视图
  • 触发器函数 pg_get_triggerdef(oid) 描述:获取触发器的定义信息。 参数:待查触发器的OID。 返回值类型:text -- 创建表tri_insert。 gaussdb=# CREATE TABLE tri_insert (a int, b int) distribute by hash(a); CREATE TABLE -- 创建函数trigger_func。 gaussdb=# CREATE FUNCTION trigger_func() RETURNS trigger LANGUAGE plpgsql AS ' BEGIN RAISE NOTICE ''trigger_func(%) called: action = %, when = %, level = %'', TG_ARGV[0], TG_OP, TG_WHEN, TG_LEVEL; RETURN NULL; END;'; CREATE FUNCTION -- 创建触发器before_ins_stmt_trig。 gaussdb=# CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt'); CREATE TRIGGER -- 创建触发器after_ins_when_trig。 gaussdb=# CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN (new.a IS NOT NULL) EXECUTE PROCEDURE trigger_func('after_ins_when'); CREATE TRIGGER -- 查看表tri_insert的触发器定义信息。 gaussdb=# SELECT pg_get_triggerdef(oid) FROM pg_trigger WHERE tgrelid = 'tri_insert'::regclass; pg_get_triggerdef -------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN ((new.a IS NOT NULL)) EXECUTE PROCEDURE trigger_func('after_ins_when') CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt') (2 rows) pg_get_triggerdef(oid, boolean) 描述:获取触发器的定义信息。 参数:待查触发器的OID及是否以pretty方式展示。 仅在创建trigger时指定WHEN条件的情况下,布尔类型参数才生效。 返回值类型:text 示例: -- 查看表tri_insert的触发器定义信息,以非pretty形式。 gaussdb=# SELECT pg_get_triggerdef(oid, false) FROM pg_trigger WHERE tgrelid = 'tri_insert'::regclass; pg_get_triggerdef -------------------------------------------------------------------------------------------------------------------------------------------------------- CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN ((new.a IS NOT NULL)) EXECUTE PROCEDURE trigger_func('after_ins_when') CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt') (2 rows) -- 查看表tri_insert的触发器定义信息,以pretty形式。 gaussdb=# SELECT pg_get_triggerdef(oid, true) FROM pg_trigger WHERE tgrelid = 'tri_insert'::regclass; pg_get_triggerdef ------------------------------------------------------------------------------------------------------------------------------------------------------ CREATE TRIGGER after_ins_when_trig AFTER INSERT ON tri_insert FOR EACH ROW WHEN (new.a IS NOT NULL) EXECUTE PROCEDURE trigger_func('after_ins_when') CREATE TRIGGER before_ins_stmt_trig BEFORE INSERT ON tri_insert FOR EACH STATEMENT EXECUTE PROCEDURE trigger_func('before_ins_stmt') (2 rows) -- 清理表tri_insert。 gaussdb=# DROP TABLE tri_insert CASCADE; DROP TABLE -- 清理函数trigger_func。 gaussdb=# DROP FUNCTION trigger_func; DROP FUNCTION 父主题: 函数和操作符
  • SUMMARY_STAT_BAD_BLOCK 获得集群内各节点的表、索引等文件的读取失败信息汇总求和结果(在CN节点使用。对不同DN的统计信息汇总求和,first_time取最早的时间,last_time取最新的时间)。 表1 SUMMARY_STAT_BAD_BLOCK字段 名称 类型 描述 databaseid integer database的oid。 tablespaceid integer tablespace的oid。 relfilenode integer relation的file node。 forknum bigint fork编号。 error_count bigint error的数量。 first_time timestamp with time zone 页面损坏第一次出现的时间。 last_time timestamp with time zone 页面损坏最后出现的时间。 父主题: Object
  • SUMMARY_STAT_XACT_USER_FUNCTIONS 显示集群内各节点,本事务内函数执行的统计信息的汇总求和结果(在CN节点使用)。 表1 SUMMARY_STAT_XACT_USER_FUNCTIONS字段 名称 类型 描述 schemaname name 函数所在的Schema名。 funcname name 函数名称。 calls numeric 函数被调用的次数。 total_time double precision 此函数及其调用的所有其他函数所花费的总时间。 self_time double precision 在此函数本身中花费的时间(不包括它调用的其他函数)。 父主题: Object
  • PG_STAT_ACTIVITY PG_STAT_ACTIVITY视图显示和当前用户查询相关的信息,字段保存的是上一次执行的信息。 表1 PG_STAT_ACTIVITY字段 名称 类型 描述 datid oid 用户会话在后台连接到的数据库OID。 datname name 用户会话在后台连接到的数据库名称。 pid bigint 后台线程ID。 sessionid bigint 会话ID。 usesysid oid 登录该后台的用户OID。 usename name 登录该后台的用户名。 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。 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用户连接数据库后,在pg_stat_activity中查看到的普通用户joe及初始用户omm的state信息为空: SELECT datname, usename, usesysid, state,pid FROM pg_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量,单位为字节。 父主题: 系统视图
共100000条
提示

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