华为云用户手册

  • config_file 参数说明:设置主服务器配置文件名称(gaussdb.conf)。 参数类型:字符串 参数单位:无 取值范围:长度大于0的字符串。 默认值:gaussdb.conf(实际安装可能带有绝对目录)。 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • ident_file 参数说明:设置用于客户端认证的配置文件的名称(gs_ident.conf),仅sysadmin用户可以访问。 参数类型:字符串 参数单位:无 取值范围:长度大于0的字符串。 默认值:gs_ident.conf(实际安装可能带有绝对目录)。 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:不建议修改配置文件参数。 设置不当的风险与影响:修改后可能会影响数据库实例升级、备份功能。
  • external_pid_file 参数说明:声明可被服务器管理程序使用的额外PID文件,仅sysadmin用户可以访问。 参数类型:字符串 参数单位:无 取值范围:合法文件名称。 默认值:"" 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 该参数只能在数据库服务重新启动后生效。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • hba_file 参数说明:设置基于主机认证(HBA)的配置文件(gs_hba.conf)。此参数只能在配置文件gaussdb.conf中指定,仅sysadmin用户可以访问。 参数类型:字符串 参数单位:无 取值范围:长度大于0的字符串。 默认值:gs_hba.conf(实际安装可能带有绝对目录)。 设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:不建议修改配置文件参数。 设置不当的风险与影响:修改后可能会影响数据库实例升级、备份功能。
  • data_directory 参数说明:设置 GaussDB 的数据目录(data目录),仅sysadmin用户可以访问。 参数类型:字符串 参数单位:无 取值范围:合法目录路径。 默认值:安装时指定,如果在安装时不指定,则默认不初始化数据库。 设置方式:此参数可以通过如下方式设置: 在安装GaussDB时设置。 该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。 设置建议:推荐使用默认值。 设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改。
  • 示例 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 --创建表。 gaussdb=# CREATE TABLE test (id int, name text); --开启一个事务。 gaussdb=# START TRANSACTION; --修改表结构。 gaussdb=# ALTER TABLE test ADD COLUMN score int; --查看表结构。 gaussdb=# \d test; Table "public.test" Column | Type | Modifiers --------+---------+----------- id | integer | name | text | score | integer | --回滚。 gaussdb=# ROLLBACK; --表结构恢复初始状态。 gaussdb=# \d test; Table "public.test" Column | Type | Modifiers --------+---------+----------- id | integer | name | text | --删除test表。 gaussdb=# DROP TABLE test;
  • 示例 VACUUM 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 --创建表tbl_test,并插入数据。 gaussdb=# CREATE TABLE tbl_test(c1 int); gaussdb=# INSERT INTO tbl_test VALUES (1); --查看数据,和数据的ctid。 gaussdb=# SELECT ctid,* FROM tbl_test; ctid | c1 -------+---- (0,1) | 1 (1 row) --删除该数据。 gaussdb=# DELETE FROM tbl_test; --重新插入一条数据,发现使用了一个新的ctid。 gaussdb=# INSERT INTO tbl_test VALUES (2); gaussdb=# SELECT ctid,* FROM tbl_test; ctid | c1 -------+---- (0,2) | 2 (1 row) --使用VACUUM命令之后,在插入数据,发现复用了旧的空间。 gaussdb=# VACUUM ANALYZE tbl_test; gaussdb=# INSERT INTO tbl_test VALUES (3); gaussdb=# SELECT ctid,* FROM tbl_test; ctid | c1 -------+---- (0,1) | 3 (0,2) | 2 (2 rows) --删除表。 gaussdb=# DROP TABLE tbl_test; VACUUM FULL --建表。 gaussdb=# CREATE TABLE tbl_test2(c1 int); --插入10万条数据并查看表的大小。 gaussdb=# INSERT INTO tbl_test2 VALUES (generate_series(1,100000)); gaussdb=# SELECT 'tbl_test2' AS tablename, pg_size_pretty(pg_relation_size('tbl_test2')) AS size; tablename | size -----------+--------- tbl_test2 | 3048 kB (1 row) --删除数据并查看表大小。 gaussdb=# DELETE FROM tbl_test2; gaussdb=# SELECT 'tbl_test2' AS tablename, pg_size_pretty(pg_relation_size('tbl_test2')) AS size; tablename | size -----------+--------- tbl_test2 | 3048 kB (1 row) --使用VACUUM FULL回收空间,并查看表的大小。 gaussdb=# VACUUM FULL ANALYZE tbl_test2; gaussdb=# SELECT 'tbl_test2' AS tablename, pg_size_pretty(pg_relation_size('tbl_test2')) AS size; tablename | size -----------+--------- tbl_test2 | 0 bytes (1 row) --使用在线VACUUM FULL回收空间。 gaussdb=# VACUUM FULL ANALYZE tbl_test2 ONLINE; --删除。 gaussdb=# DROP TABLE tbl_test2;
  • 注意事项 如果没有参数,VACUUM处理当前数据库里用户拥有相应权限的每个表。如果参数指定了一个表,VACUUM只处理指定的表。 要对一个表进行VACUUM操作,通常用户必须是表的所有者或者被授予了指定表VACUUM权限的用户,三权分立开关关闭时,默认系统管理员有该权限。数据库的所有者允许对数据库中除了共享目录以外的所有表进行VACUUM操作(该限制意味着只有系统管理员才能真正对一个数据库进行VACUUM操作)。VACUUM命令会跳过那些用户没有权限的表进行垃圾回收操作。 VACUUM不能在事务块内执行。 建议生产数据库经常清理(至少每晚一次),以保证不断地删除失效的行。尤其是在增删了大量记录之后,对受影响的表执行VACUUM ANALYZE命令是一个很好的习惯。这样将更新系统目录为最近的更改,并且允许查询优化器在规划用户查询时有更优选择。 不建议日常使用FULL选项,但是可以在特殊情况下使用。例如在用户删除了一个表的大部分行之后,希望从物理上缩小该表以减少磁盘空间占用。VACUUM FULL通常要比单纯的VACUUM收缩更多的表尺寸。FULL选项并不清理索引,所以推荐周期性的运行REINDEX命令。如果执行此命令后所占用物理空间无变化(未减少),请确认是否有其他活跃事务(删除数据事务开始之前开始的事务,并在VACUUM FULL执行前未结束)存在,如果有等其他活跃事务退出进行重试。 VACUUM FULL通过重建表的方式将表内空闲空间归还给表空间,重建过程需要额外申请表中有效数据相当的存储空间。对于非段页式表,VACUUM FULL执行结束后,原表所占物理文件会被删除,原表所占的物理文件的空间会归还给操作系统;对于段页式表,VACUUM FULL执行结束后,原表所占的物理空间,会被归还给段页式数据文件,不会归还给操作系统。 VACUUM会导致I/O流量的大幅增加,这可能会影响其他活动会话的性能。因此,有时候会建议使用基于开销的VACUUM延迟特性。 如果指定了VERBOSE选项,VACUUM将打印处理过程中的信息,以表明当前正在处理的表。各种有关当前表的统计信息也会打印出来。 当含有带括号的选项列表时,选项可以以任何顺序写入。如果没有括号,则选项必须按语法显示的顺序给出。 VACUUM和VACUUM FULL时,会根据参数vacuum_defer_cleanup_age延迟清理行存表记录,即不会立即清理刚刚删除的元组。 VACUUM ANALYZE先执行一个VACUUM操作,然后给每个选定的表执行一个ANALYZE。对于日常维护脚本而言,这是一个很方便的组合。 简单的VACUUM(不带FULL选项)只是简单地回收空间并且令其可以再次使用。这种形式的命令可以和对表的普通读写并发操作,因为没有请求排他锁。VACUUM FULL执行更广泛的处理,包括跨块移动行,以便把表压缩到最少的磁盘块数目里。这种形式要慢许多并且在处理的时候需要在表上施加一个排他锁。 同时执行多个VACUUM FULL可能出现死锁。 如果没有打开xc_maintenance_mode参数,那么VACUUM FULL操作将跳过所有系统表。 执行DELETE后立即执行VACUUM FULL命令不会回收空间。执行DELETE后再执行1000个非SELECT事务,或者等待1s后再执行1个事务,之后再执行VACUUM FULL命令空间才会回收。 VACUUM FULL期间会对表加排他锁,不建议在业务高峰期运行VACUUM FULL,可能导致等待时间过长或者业务中断。 Ustore手动VACUUM与Astore手动VACUUM行为一致、会对堆表、索引等进行加锁清理;而Ustore的AUTOVACUUM仅做分区表GPI清理、堆表FSM更新以及索引页面回收。 VACUUM FULL分区表时,会遍历分区进行清理,并在分区清理后重建GPI,因此当分区较多时,建议先删除GPI,在VACUUM FULL执行完成后重新创建索引,以此降低VACUUM FULL的执行时间。 在线VACUUM FULL不支持对于数据库级、索引级、分区表、二级分区表、段页式表、hash bucket表、临时表、unlogged表、HTAP表对象执行在线VACUUM FULL。如对象涉及以上不支持的类型,ONLINE关键字将不会生效,VACUUM FULL默认以离线方式执行,并提示当前VACUUM FULL语句不支持在线执行。 执行在线VACUUM FULL操作时,需预留足够的磁盘空间,即剩余空间是所操作的表(及其上索引等附属品)总和的1倍。 如果用户取消在线VACUUM FULL执行过程,首先进入残留清理流程,如果用户再次取消,则会结束清理流程导致残留。 在线VACUUM FULL与用户业务之间存在资源争抢,不适合大业务背景下做在线VACUUM FULL。对于资源有限的场景,建议采用细粒度资源管控进行操作,且不建议使用并行加速功能。 M-Compatibility模式下不支持在线VACUUM FULL操作。 在线VACUUM FULL不支持FREEZE关键字,若同时指定FREEZE关键字与ONLINE关键字,VACUUM FULL默认以离线方式执行,并提示当前VACUUM FULL语句不支持在线执行。 在线VACUUM FULL不支持在事务内执行,不支持在存储过程中执行。 若在线VACUUM FULL操作失败,表上可能会有明显存储空间膨胀。其中膨胀程度与在线VACUUM FULL执行时长以及并发写操作量成正比。长事务可能会阻塞在线VACUUM FULL,建议避免在长事务存在时进行在线VACUUM FULL。 在线VACUUM FULL执行后期将阻塞DQL操作,对并发的DML操作报错。 在线VACUUM FULL执行期间,应尽量避免与其他DDL并发执行,否则可能会出现死锁、报错等;若出现此类情况,可以重新连接客户端进行重试。 在线VACUUM FULL过程中会生成名为online$$ddl$$[hash值]的模式。 模式的属主默认为初始用户,不建议在线VACUUM FULL执行中操作此模式,可能会导致中止在线VACUUM FULL并产生未知错误。不建议用户对此模式下的表格进行查询。gs_dump导出会默认不导出该Schema。 用户不可创建online$$为前缀的模式,会有报错提示。若已存在同名模式冲突,在线VACUUM FULL将不会生效,在线VACUUM FULL默认以离线方式执行,并提示当前VACUUM FULL语句是因为模式名冲突不可在线。
  • 语法格式 回收空间并更新统计信息,对关键字顺序无要求。 VACUUM [ ( { FULL | FREEZE | VERBOSE | { ANALYZE | ANALYSE } } [, ... ] ) ] [ table_name [ (column_name [, ... ] ) ] [ PARTITION ( partition_name ) | SUBPARTITION ( subpartition_name ) ] ] [ OFFLINE | [ ONLINE [ WITH ( { online_parameter = value } [, ... ] ) ] ] ]; 仅回收空间,不更新统计信息。 VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] [ table_name [ PARTITION ( partition_name ) | SUBPARTITION ( subpartition_name ) ] ] [ OFFLINE | [ ONLINE [ WITH ( { online_parameter = value } [, ... ] ) ] ] ]; 回收空间并更新统计信息,且对关键字顺序有要求。 VACUUM [ FULL ] [ FREEZE ] [ VERBOSE ] { ANALYZE | ANALYSE } [ VERBOSE ] [ table_name [ ( column_name [, ... ] ) ] ] [ PARTITION ( partition_name ) ] [ OFFLINE | [ ONLINE [ WITH ( { online_parameter = value } [, ... ] ) ] ] ];
  • GLOBAL_STAT_DATABASE 显示数据库各节点的统计信息(不同节点下数据库的状态信息不汇总),如表1所示。 表1 GLOBAL_STAT_DATABASE字段 名称 类型 描述 node_name name 节点名称。 datid oid 数据库的OID。 datname name 这个数据库的名称。 numbackends integer 当前连接到该数据库的后端数。 xact_commit bigint 此数据库中已经提交的事务数。 xact_rollback bigint 此数据库中已经回滚的事务数。 blks_read bigint 在这个数据库中读取的磁盘块的数量。 blks_hit bigint 高速缓存中已经命中的磁盘块的次数,这种情况下不需要从磁盘读取(高速缓存只包括数据库内核缓冲区高速缓存,不包括操作系统的文件系统缓存)。 tup_returned bigint 该数据库中顺序扫描获取的活跃行数和索引扫描返回的索引行数。 tup_fetched bigint 当前数据库通过索引返回的行数。 tup_inserted bigint 插入的行数。 tup_updated bigint 更新的行数。 tup_deleted bigint 删除的行数。 conflicts bigint 由于与数据库回放发生冲突而取消的查询数量(冲突仅在备机上发生)。请参见STAT_DATABASE_CONFLI CTS 获取更多信息。 temp_files bigint 该数据库中查询语句创建的临时文件数量。统计所有临时文件,不受GUC参数log_temp_files设置值影响。 temp_bytes bigint 该数据库中查询语句写入临时文件的数据总量。统计所有临时文件,不受GUC参数log_temp_files设置值影响。 deadlocks bigint 在该数据库中检索的死锁数。 blk_read_time double precision 通过数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 通过数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 重置当前状态统计的时间。 父主题: Object
  • 参数说明 tablespace_name 要修改的表空间。 取值范围:已存在的表空间名。 new_tablespace_name 表空间的新名称,新名称不能以"PG_"开头。 取值范围:字符串,符合标识符命名规范。 new_owner 表空间的新所有者。 取值范围:已存在的用户名。 tablespace_option 设置或者重置表空间的参数。 取值范围: seq_page_cost:设置优化器计算一次顺序获取磁盘页面的开销。缺省为1.0。 random_page_cost:设置优化器计算一次非顺序获取磁盘页面的开销。缺省为4.0。 random_page_cost是相对于seq_page_cost的取值,等于或者小于seq_page_cost时毫无意义。 默认值为4.0的前提条件是,优化器采用索引来扫描表数据,并且表数据在cache中命中率可以90%左右。 如果表数据空间要比物理内存小,那么减小该值到一个适当水平;相反地,如果表数据在cache中命中率要低于90%,那么适当增大该值。 如果采用了类似于SSD的随机访问代价较小的存储器,可以适当减小该值,以反映真正的随机扫描代价。 value的取值范围:浮点类型的正数。 RESIZE MAXSIZE 重新设置表空间限额的数值。 取值范围: UNLIMITED,该表空间不设置限额。 由space_size来确定,其格式参考CREATE TABLESPACE。 若调整后的限额值比当前表空间实际使用的值要小,调整操作可以执行成功,后续用户需要将该表空间的使用值降低到新限额值之下,才能继续往该表空间中写入数据。
  • 示例 重命名表空间。 --创建表空间。 gaussdb=# CREATE TABLESPACE tbs_data1 RELATIVE LOCATION 'tablespace1/tbs_data1'; --重命名表空间。 gaussdb=# ALTER TABLESPACE tbs_data1 RENAME TO tbs_data2; --查询。 gaussdb=# \db tbs_data2 List of tablespaces Name | Owner | Location -----------+-------+----------------------- tbs_data2 | omm | tablespace1/tbs_data1 设置表空间所有者。 --创建用户。 gaussdb=# CREATE USER test PASSWORD '********'; --修改表空间所有者。 gaussdb=# ALTER TABLESPACE tbs_data2 OWNER TO test; --查看。 gaussdb=# \db tbs_data2 List of tablespaces Name | Owner | Location -----------+-------+----------------------- tbs_data2 | test | tablespace1/tbs_data1 (1 row) 设置表空间属性。 --修改seq_page_cost的值。 gaussdb=# ALTER TABLESPACE tbs_data2 SET (seq_page_cost = 10); --查看。 gaussdb=# SELECT * FROM pg_tablespace WHERE spcname = 'tbs_data2'; spcname | spcowner | spcacl | spcoptions | spcmaxsize | relative -----------+----------+--------+--------------------+------------+---------- tbs_data2 | 16778 | | {seq_page_cost=10} | | t (1 row) 重置表空间属性。 --将seq_page_cost参数的值重置为缺省值。 gaussdb=# ALTER TABLESPACE tbs_data2 RESET (seq_page_cost); --查看。 gaussdb=# SELECT * FROM pg_tablespace WHERE spcname = 'tbs_data2'; spcname | spcowner | spcacl | spcoptions | spcmaxsize | relative -----------+----------+--------+------------+------------+---------- tbs_data2 | 16778 | | | | t (1 row) 设置表空间限额。 --设置表空间最大使用的空间。 gaussdb=# ALTER TABLESPACE tbs_data2 RESIZE MAXSIZE '10G'; --查看。 gaussdb=# SELECT * FROM pg_tablespace WHERE spcname = 'tbs_data2'; spcname | spcowner | spcacl | spcoptions | spcmaxsize | relative -----------+----------+--------+------------+------------+---------- tbs_data2 | 16778 | | | 10485760 K | t (1 row) --删除表空间。 gaussdb=# DROP TABLESPACE tbs_data2; --删除用户。 gaussdb=# DROP USER test;
  • 语法格式 重命名表空间的语法。 ALTER TABLESPACE tablespace_name RENAME TO new_tablespace_name; 设置表空间所有者的语法。 ALTER TABLESPACE tablespace_name OWNER TO new_owner; 设置表空间属性的语法。 ALTER TABLESPACE tablespace_name SET ( { tablespace_option = value } [, ... ] ); 重置表空间属性的语法。 ALTER TABLESPACE tablespace_name RESET ( { tablespace_option } [, ... ] ); 设置表空间限额的语法。 ALTER TABLESPACE tablespace_name RESIZE MAXSIZE { UNLIMITED | 'space_size'};
  • 注意事项 只有表空间的所有者或者被赋予了表空间ALTER权限的用户有权限执行ALTER TABLESPACE命令,系统管理员默认拥有此权限。但要修改表空间的所有者,当前用户必须是该表空间的所有者或系统管理员,且该用户是new_owner角色的成员。 对行存表的ALTER TABLESPACE操作不支持在事务块中执行。 要修改表空间的所有者A为B,则A必须是B的直接或者间接成员。 如果new_owner与old_owner一致,此处不再校验当前执行操作的用户是否具有修改权限,而直接显示ALTER成功。
  • GS_ LOG ICAL_DATABASE GS_LOGICAL_DATABASE系统表存储关于可用数据库的信息。 表1 GS_LOGICAL_DATABASE字段 字段名称 字段类型 说明 datname name 数据库名称。 datid oid 数据库OID。 csnmin bigint 插入元组时的 CS N(提交序列号)。 csnmax bigint 更新或删除元组时的 CSN。 createtime timestamp with time zone 插入元组的时间戳。 originid integer 元组的来源标识符。 datdba oid 数据库所有人,通常为其创建者。 encoding integer 数据库的字符编码方式。 datcollate name 数据库使用的排序顺序。 datctype name 数据库使用的字符分类。 dattablespace oid 数据库的缺省表空间。 datcompatibility name 数据库兼容模式,当前支持五种兼容模式:A、B、C、M、PG,分别表示兼容O、MY、TD、M-Compatibility和POSTGRES。 dattimezone name 数据库时区信息,默认为PRC时区。 父主题: 逻辑解码
  • GS_ASP GS_ASP显示被持久化的ACTIVE SESSION PROFILE样本,该表只能在系统库下查询,在用户库下查询无数据。 表1 GS_ASP字段 名称 类型 描述 sampleid bigint 采样ID。 sample_time timestamp with time zone 采样的时间。 need_flush_sample boolean 该样本是否需要刷新到磁盘。 t(true):表示需要。 f(false):表示不需要。 databaseid oid 数据库ID。 thread_id bigint 线程的ID。 sessionid bigint 会话的ID。 start_time timestamp with time zone 会话的启动时间。 event text 具体的事件名称。内核中关键的事件信息请参见表2、15.3.67-表3 轻量级锁等待事件列表、表4和表5。关于每种事务锁对业务的影响程度,请参见LOCK语法小节的详细描述。 lwtid integer 当前线程的轻量级线程号。 psessionid bigint streaming线程的父线程。 tlevel integer streaming线程的层级。与执行计划的层级(id)相对应。 smpid integer smp执行模式下并行线程的并行编号。 userid oid session用户的id。 application_name text 应用的名字。 client_addr inet client端的地址。 client_hostname text client端的名字。 client_port integer 客户端用于与后端通讯的TCP端口号。 query_id bigint debug query id。 unique_query_id bigint unique query id。 user_id oid unique query的key中的user_id。 cn_id integer 表示下发该unique sql的节点id。unique query的key中的cn_id。 unique_query text 规范化后的Unique SQL文本串。 locktag text 会话等待锁信息,可通过locktag_decode解析。 lockmode text 会话等待锁模式: LW_EXCLUSIVE:排他锁 LW_SHARED:共享锁 LW_WAIT_UNTIL_FREE:等待LW_EXCLUSIVE可用 block_sessionid bigint 如果会话正在等待锁,阻塞该会话获取锁的会话标识。 wait_status text 描述event列的更多详细信息。 global_sessionid text 全局会话ID。 xact_start_time timestamp with time zone 事务开始时间。 query_start_time timestamp with time zone 语句开始执行时间。 state text 当前事务状态。 可能取值为: active:后台正在执行一个查询。 idle in transaction:后台在事务中,但事务中没有语句在执行。 idle in transaction (aborted):后台在事务中,但事务中有语句执行失败。 fastpath function call:后台正在执行一个fast-path函数。 disabled:如果后台禁用track_activities,则报告这个状态。 event_start_time timestamp with time zone wait event的开始时间。 current_xid xid 当前事务的id。 top_xid xid 当前执行事务的顶层事务id。 instance_name text 指定该条记录所属DN。 parent_unique_sql_id bigint 调用本条语句的父语句SQL_Id。 control_status text 当进行异常SQL CPU资源管控时为under_cpu_throttle,否则为normal。 top_unique_query_id bigint 该字段展示存储过程顶层SQL的unique_query_id。 top_unique_query text 该字段展示存储过程顶层SQL的unique_query语句。 父主题: 其他系统表
  • MY_TAB_COLUMNS MY_TAB_COLUMNS视图显示当前用户拥有的表和视图的字段信息。该视图同时存在于PG_CATALOG和SYS Schema下。该视图所有用户可访问,仅显示该用户所属的信息。 表1 MY_TAB_COLUMNS字段 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表名称。 column_name character varying(64) 列名。 data_type character varying(128) 列的数据类型。 data_type_mod character varying(3) 暂不支持,值为NULL。 data_type_owner character varying(128) 列的数据类型的所有者。 data_length integer 列的字节长度。 data_precision integer 数据类型的精度,对于numeric数据类型有效,其他类型为NULL。 data_scale integer 小数点右边的位数,对于numeric数据类型有效,其他类型为0。 nullable bpchar 该列是否允许为空,对于主键约束和非空约束,该值为n。取值范围: y:允许。 n:不允许。 column_id integer 创建表时列的序号。 default_length numeric 列的默认值字节长度。 data_default text 列的默认值。 num_distinct numeric 列中不同值的数量。 low_value raw 列中的最小值。 high_value raw 列中的最大值。 density numeric 列密度。 num_nulls numeric 列中空值数。 num_buckets numeric 列的直方图的桶数。 last_analyzed timestamp(0) without time zone 上次分析的日期。 sample_size numeric 用于分析此列的样本量。 character_set_name character varying(44) 暂不支持,值为NULL。 char_col_decl_length numeric 字符类型列的声明长度。 global_stats character varying(3) 暂不支持,值为NO。 user_stats character varying(3) 暂不支持,值为NO。 avg_col_len numeric 列的平均长度(单位字节)。 char_length numeric 列的长度(单位字符),只对varchar,nvarchar2,bpchar,char类型有效。 char_used character varying(1) 暂不支持,varchar、bpchar和char类型值为B,nvarchar2类型值为C,其余值为NULL。 v80_fmt_image character varying(3) 暂不支持,值为NULL。 data_upgraded character varying(3) 暂不支持,值为YES。 histogram character varying(15) 表示直方图是否存在,如果存在的话是什么类型: NONE:表示不存在直方图。 FREQUENCY:表示频率直方图。 EQUI_W IDT H:表示等宽直方图。 default_on_null character varying(3) 暂不支持,值为NULL。 identity_column character varying(3) 暂不支持,值为NULL。 sensitive_column character varying(3) 暂不支持,值为NULL。 evaluation_edition character varying(128) 暂不支持,值为NULL。 unusable_before character varying(128) 暂不支持,值为NULL。 unusable_beginning character varying(128) 暂不支持,值为NULL。 collation character varying(100) 列的排序规则。因该字段与保留关键字冲突,调用该字段需加视图名。 comments text 列的注释。 schema character varying(64) 列所属的名称空间的名称。 父主题: 其他系统视图
  • DBE_PLDEBUGGER.turn_off 仅用于去掉当前session被turn_on添加的调试标记,返回值表示成功或失败,如表1所示。可通过DBE_PLDEBUGGER.local_debug_server_info查找已经turn_on的存储过程oid。 函数原型为: 1 2 DBE_PLDEBUGGER.turn_off(Oid) RETURN boolean; 表1 turn_off 入参和返回值列表 名称 类型 描述 func_oid IN oid 函数oid turn_off OUT boolean turn off是否成功 父主题: DBE_PLDEBUGGER Schema
  • GLOBAL_REL_IOSTAT 获取所有节点上的数据文件I/O统计信息,如表1所示。多租场景下,non-PDB访问该视图时返回全部信息,PDB访问该视图时仅返回该PDB相关信息。在PDB中通过该视图查询到的I/O统计信息是被持久化的,数据库重启后不会清零,会不断进行累计。 表1 GLOBAL_REL_IOSTAT字段 名称 类型 描述 node_name name 节点名称。 phyrds bigint 读物理文件的数目。 phywrts bigint 写物理文件的数目。 phyblkrd bigint 读物理文件块的数目。 phyblkwrt bigint 写物理文件块的数目。 dbid oid 未开启数据库多租特性的场景下,该值始终为0;开启数据库多租特性的场景下,在PDB中查询时为PDB对应的数据库id,在CDB中查询时该值始终为0。 父主题: File
  • MY_COL_COMMENTS MY_COL_COMMENTS视图显示当前用户下表的列注释信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_COL_COMMENTS字段 名称 类型 描述 owner character varying(128) 表的所有者。 table_name character varying(128) 表的名称。 column_name character varying(128) 列名称。 comments text 注释。 origin_con_id numeric 暂不支持,值为0。 schema character varying(64) 列所属的名称空间的名称。 父主题: 其他系统视图
  • PG_TOTAL_USER_RESOURCE_INFO_OID PG_TOTAL_USER_RESOURCE_INFO_OID视图显示所有用户的资源使用情况,需要使用管理员用户进行查询。此视图在GUC参数use_workload_manager为on时才有效。 表1 PG_TOTAL_USER_RESOURCE_INFO_OID字段 名称 类型 描述 userid oid 用户ID。 used_memory integer 正在使用的内存大小,单位MB。 total_memory integer 可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。 used_cpu double precision 正在使用的CPU核数。 total_cpu integer 在该机器节点上,用户关联控制组的CPU核数总和。 used_space bigint 已使用的存储空间大小,单位KB。 total_space bigint 可使用的存储空间大小,单位KB,值为-1表示未限制最大存储空间。 used_temp_space bigint 已使用的临时空间大小,单位KB total_temp_space bigint 可使用的临时空间总大小,单位KB,值为-1表示未限制。 used_spill_space bigint 已使用的下盘空间大小。单位KB。 total_spill_space bigint 可使用的下盘空间总大小,单位KB,值为-1表示未限制。 read_kbytes bigint 读磁盘数据量,单位KB。 write_kbytes bigint 写磁盘数据量,单位KB。 read_counts bigint 读磁盘次数。 write_counts bigint 写磁盘次数。 read_speed double precision 读磁盘速率,单位B/ms。 write_speed double precision 写磁盘速率,单位B/ms。 父主题: 其他系统视图
  • 函数类型解析 从系统表pg_proc中选择所有可能被选到的函数。如果使用了一个不带模式修饰的函数名称,那么认为该函数是那些在当前搜索路径中的函数。如果给出一个带修饰的函数名,那么只考虑指定模式中的函数。 如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。 查找和输入参数类型完全匹配的函数。如果找到一个,则用之。如果输入的实参类型都是unknown类型,则不会找到匹配的函数。 如果未找到完全匹配,请查看该函数是否为一个特殊的类型转换函数。 寻找最优匹配。 抛弃那些输入类型不匹配并且也不能隐式转换成匹配的候选函数。unknown文本在这种情况下可以转换成任何东西。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选函数,保留那些输入类型匹配最准确的。此时,域被看作和它们的基本类型相同。如果没有一个函数能准确匹配,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 遍历所有候选函数,保留那些需要类型转换时接受首选类型位置最多的函数。如果没有接受首选类型的函数,则保留所有候选。如果只剩下一个候选项,则用之,否则继续下一步。 如果有任何输入参数是unknown类型,检查剩余的候选函数对应参数位置的类型范畴。在每一个能够接受字符串类型范畴的位置使用string类型(这种对字符串的偏爱是合适的,因为unknown文本确实像字符串)。另外,如果所有剩下的候选函数都接受相同的类型范畴,则选择该类型范畴,否则抛出一个错误(因为在没有更多线索的条件下无法做出正确的选择)。现在抛弃不接受选定的类型范畴的候选函数,然后,如果任意候选函数在该范畴接受一个首选类型,则抛弃那些在该参数位置接受非首选类型的候选函数。如果没有一个候选符合这些测试则保留所有候选。如果只有一个候选函数符合,则使用它;否则,继续下一步。 如果同时有unknown和已知类型的参数,并且所有已知类型的参数有相同的类型,假设unknown参数也是这种类型,检查哪一个候选函数可以在unknown参数位置接受这种类型。如果正好一个候选符合,那么使用它。否则,产生一个错误。
  • 示例 示例1:圆整函数参数类型解析。只有一个round函数有两个参数(第一个是numeric,第二个是integer)。所以下面的查询自动把第一个类型为integer的参数转换成numeric类型。 1 2 3 4 5 gaussdb=# SELECT round(4, 4); round -------- 4.0000 (1 row) 实际上它被分析器转换成: 1 gaussdb=# SELECT round(CAST (4 AS numeric), 4); 因为带小数点的数值常量初始时被赋予numeric类型,因此下面的查询将不需要类型转换,并且可能会略微高效一些: 1 gaussdb=# SELECT round(4.0, 4); 示例2:子字符串函数类型解析。有好几个substr函数,其中一个接受text和integer类型。如果用一个未声明类型的字符串常量调用它,系统将选择接受string类型范畴的首选类型(也就是text类型)的候选函数。 1 2 3 4 5 gaussdb=# SELECT substr('1234', 3); substr -------- 34 (1 row) 如果该字符串声明为varchar类型,就像从表中取出来的数据一样,分析器将试着将其转换成text类型: 1 2 3 4 5 gaussdb=# SELECT substr(varchar '1234', 3); substr -------- 34 (1 row) 被分析器转换后实际上变成: 1 gaussdb=# SELECT substr(CAST (varchar '1234' AS text), 3); 分析器从pg_cast表中了解到text和varchar是二进制兼容的,意思是说一个可以传递给接受另一个的函数而不需要做任何物理转换。因此,在这种情况下,实际上没有做任何类型转换。 而且,如果以integer为参数调用函数,分析器将试图将其转换成text类型: 1 2 3 4 5 gaussdb=# SELECT substr(1234, 3); substr -------- 34 (1 row) 被分析器转换后实际上变成: 1 2 3 4 5 gaussdb=# SELECT substr(CAST (1234 AS text), 3); substr -------- 34 (1 row)
  • 功能描述 检查点(CHECKPOINT)是一个事务日志中的点,所有数据文件都在该点被更新以反映日志中的信息,所有数据文件都将被刷新到磁盘。 设置事务日志检查点。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。可以使用gs_guc命令设置相关运行时参数(checkpoint_segments,checkpoint_timeout和incremental_checkpoint_timeout)来调整这个原子化检查点的间隔。
  • GLOBAL_STATIO_USER_TABLES GLOBAL_STATIO_USER_TABLES视图显示各节点的命名空间中所有用户关系表的I/O状态信息,如表1所示。 表1 GLOBAL_STATIO_USER_TABLES字段 名称 类型 描述 node_name name 节点名称。 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表索引命中缓冲区数(如果存在)。 父主题: Cache/IO
  • DB_TAB_COLUMNS DB_TAB_COLUMNS视图显示当前用户可访问的表和视图的列的描述信息。该视图同时存在于PG_CATALOG和SYS Schema下。该视图所有用户可访问,显示当前用户可访问的所有信息。 表1 DB_TAB_COLUMNS字段 名称 类型 描述 owner character varying(64) 表的所有者。 table_name character varying(64) 表的名称。 column_name character varying(64) 列的名称。 data_type character varying(128) 列的数据类型。 data_type_mod character varying(3) 暂不支持,值为NULL。 data_type_owner character varying(128) 列的数据类型的所有者。 data_length integer 列的字节长度。 data_precision integer 数据类型的精度,对于numeric数据类型有效,其他类型为NULL。 data_scale integer 小数点右边的位数,对于numeric数据类型有效,其他类型为0。 nullable bpchar 该列是否允许为空,对于主键约束和非空约束,该值为n。取值范围: y:允许。 n:不允许。 column_id integer 创建表时列的序号。 default_length numeric 列的默认值字节长度。 data_default text 列的默认值。 num_distinct numeric 列中不同值的数量。 low_value raw 列中的最小值。 high_value raw 列中的最大值。 density numeric 列密度。 num_nulls numeric 列中空值数。 num_buckets numeric 列的直方图的桶数。 last_analyzed timestamp(0) without time zone 上次分析的日期。 sample_size numeric 用于分析此列的样本量。 character_set_name character varying(44) 暂不支持,值为NULL。 char_col_decl_length numeric 字符类型列的声明长度。 global_stats character varying(3) 暂不支持,值为NO。 user_stats character varying(3) 暂不支持,值为NO。 avg_col_len numeric 列的平均长度(单位字节)。 char_length numeric 列的长度(以字符计),只对varchar,nvarchar2,bpchar,char类型有效。 char_used character varying(1) 暂不支持,varchar、bpchar和char类型值为B,nvarchar2类型值为C,其余值为NULL。 v80_fmt_image character varying(3) 暂不支持,值为NULL。 data_upgraded character varying(3) 暂不支持,值为YES。 histogram character varying(15) 表示直方图是否存在以及存在的类型: NONE:表示不存在直方图。 FREQUENCY:表示频率直方图。 EQUI_WIDTH:表示等宽直方图。 default_on_null character varying(3) 暂不支持,值为NULL。 identity_column character varying(3) 暂不支持,值为NULL。 evaluation_edition character varying(128) 暂不支持,值为NULL。 unusable_before character varying(128) 暂不支持,值为NULL。 unusable_beginning character varying(128) 暂不支持,值为NULL。 collation character varying(100) 列的排序规则。因该字段与保留关键字冲突,调用该字段需加视图名。 comments text 注释。 schema character varying(64) 列所属的名称空间的名称。 父主题: 其他系统视图
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 --建表并插入数据。 gaussdb=# CREATE TABLE tbl_person ( id integer, name varchar(20), sex varchar(5) CHECK(sex = '男' or sex = '女') ); gaussdb=# INSERT INTO tbl_person VALUES (1, 'Bob', '男'),(2, 'Anne', '女'),(3, 'Jack', '男'),(4, 'Danny', '男'),(5, 'Alice', '女'),(6, 'Susan', '女'); --将person表中所有男生的信息加入到新表中 gaussdb=# SELECT * INTO tbl_man FROM tbl_person WHERE sex = '男'; --查询tbl_man数据。 gaussdb=# SELECT * FROM tbl_man; id | name | sex ----+-------+----- 1 | Bob | 男 3 | Jack | 男 4 | Danny | 男 (3 rows) --删除表。 gaussdb=# DROP TABLE tbl_person, tbl_man;
  • 参数说明 new_table new_table指定新建表的名称。 UNLOGGED 指定表为非日志表。非日志表中写入的数据不会被写入到预写日志中,比普通表快很多。但是,非日志表在冲突或异常关机后会被自动删截,非日志表中的内容也不会被复制到备用服务器中,在该类表中创建的索引也不会被自动记录。 使用场景:非日志表不能保证数据的安全性,用户应该在确保数据已经做好备份的前提下使用,例如系统升级时进行数据的备份。 故障处理:当异常关机等操作导致非日志表上的索引发生数据丢失时,用户应该对发生错误的索引进行重建。 GLOBAL | LOCAL 创建临时表时可以在TEMP或TEMPORARY前指定GLOBAL或LOCAL关键字。如果指定GLOBAL关键字,GaussDB会创建全局临时表,否则GaussDB会创建本地临时表。 TEMPORARY | TEMP 如果指定TEMP或TEMPORARY关键字,则创建的表为临时表。临时表分为全局临时表和本地临时表两种类型。创建临时表时如果指定GLOBAL关键字则为全局临时表,否则为本地临时表。 全局临时表的元数据对所有会话可见,会话结束后元数据继续存在。会话与会话之间的用户数据、索引和统计信息相互隔离,每个会话只能看到和更改自己提交的数据。全局临时表有两种模式:一种是基于会话级别的(ON COMMIT PRESERVE ROWS),当会话结束时自动清空用户数据;一种是基于事务级别的(ON COMMIT DELETE ROWS),当执行commit或rollback时自动清空用户数据。建表时如果没有指定ON COMMIT选项,则缺省为会话级别。与本地临时表不同,全局临时表建表时可以指定非pg_temp_开头的schema。 本地临时表只在当前会话可见,本会话结束后会自动删除。因此,在除当前会话连接的数据库节点故障时,仍然可以在当前会话上创建和使用临时表。由于临时表只在当前会话创建,对于涉及对临时表操作的DDL语句,会产生DDL失败的报错。因此,建议DDL语句中不要对临时表进行操作。TEMP和TEMPORARY等价。 本地临时表通过每个会话独立的以pg_temp_开头的schema来保证只对当前会话可见,因此,不建议用户在日常操作中手动删除以pg_temp_、pg_toast_temp_开头的schema。 如果建表时不指定TEMPORARY/TEMP关键字,而指定表的schema为当前会话的pg_temp_开头的schema,则此表会被创建为临时表。 如果其它会话正在使用全局临时表或索引,则无法对其执行ALTER/DROP操作。 全局临时表的DDL只会影响当前会话的用户数据和索引。例如truncate、reindex、analyze只对当前会话有效。 SELECT INTO的其它参数说明请参见参数说明。
  • 语法格式 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] { * | {expression [ [ AS ] output_name ]} [, ...] } INTO [ [ GLOBAL | LOCAL ] [ TEMPORARY | TEMP ] | UNLOGGED ] [ TABLE ] new_table [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ WINDOW {window_name AS ( window_definition )} [, ...] ] [ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ] [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] [ FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } ONLY ] [ {FOR { UPDATE | SHARE } [ OF table_name [, ...] ] [ NOWAIT |WAIT N]} [...] ];
  • PG_STATIO_ALL_INDEXES PG_STATIO_ALL_INDEXES视图可用来查询当前数据库中的每个索引行的信息,显示特定索引的I/O的统计信息。 表1 PG_STATIO_ALL_INDEXES字段 名称 类型 描述 relid oid 该索引所在的表的OID。 indexrelid oid 该索引的OID。 schemaname name 该索引的模式名。 relname name 该索引的表名。 indexrelname name 索引名称。 idx_blks_read bigint 从索引中读取的磁盘块数。 idx_blks_hit bigint 索引命中缓存数。 父主题: 其他系统视图
共100000条
提示

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