华为云用户手册

  • vacuum_cost_delay 参数说明:指定开销超过vacuum_cost_limit的值时,线程睡眠的时间。 参数类型:整型 参数单位:毫秒(ms) 取值范围:0 ~ 100,0表示关闭基于开销的清理延迟特性,正数值表示打开基于开销的清理延迟特性。要注意在许多系统上,睡眠的有效分辨率是10ms,因此把vacuum_cost_delay设置为一个不是10的整数倍数值与设置为下一个10的整数倍数值作用相同。 默认值:0 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:此参数一般设置较小,常见的设置是10ms或20ms。调整此特性资源占用率时,建议调整其他参数,而不是此参数。
  • 通用文件访问函数 通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有数据库目录和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/hadoop/data1/dbnode+ 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_read_binary_file_blocks(filename text, blocknum bigint, blockcount bigint) 描述:返回一个压缩文件的指定页面区域的二进制内容。 返回值类型:bytea 备注:pg_read_binary_file_blocks仅用于读取压缩文件的二进制内容。 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/dbnode+ 1496308688 + 25108 + /opt/user/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) 父主题: 系统管理函数
  • 删除表中数据 在使用表的过程中,可能会需要删除已过期的数据,删除数据必须从表中整行的删除。 SQL不能直接访问独立的行,只能通过声明被删除行匹配的条件进行。如果表中有一个主键,用户可以指定准确的行。用户可以删除匹配条件的一组行或者一次删除表中的所有行。 执行DELETE命令删除行,如果删除表customer_t1中所有c_customer_sk为3869的记录。 1 gaussdb=# DELETE FROM customer_t1 WHERE c_customer_sk = 3869; 如果执行如下命令之一,会删除表中所有的行。 1 gaussdb=# DELETE FROM customer_t1; 或: 1 gaussdb=# TRUNCATE TABLE customer_t1; 全表删除的场景下,建议使用TRUNCATE,不建议使用DELETE。 删除创建的表。 1 gaussdb=# DROP TABLE customer_t1; 父主题: 创建和管理表
  • 语法格式 CREATE ROLE role_name [ [ WITH ] option [ ... ] ] [ ENCRYPTED | UNENCRYPTED ] { PASSWORD | IDENTIFIED BY } { 'password' [EXPIRED] | DISABLE }; 其中角色信息设置子句option语法为: {SYSADMIN | NOSYSADMIN} | {MONADMIN | NOMONADMIN} | {OPRADMIN | NOOPRADMIN} | {POLADMIN | NOPOLADMIN} | {AUDITADMIN | NOAUDITADMIN} | {CREATEDB | NOCREATEDB} | {USEFT | NOUSEFT} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} | {LOGIN | NOLOGIN} | {REPLICATION | NOREPLICATION} | {PERSISTENCE | NOPERSISTENCE} | CONNECTION LIMIT connlimit | VALID BEGIN 'timestamp' | VALID UNTIL 'timestamp' | RESOURCE POOL 'respool' | USER GROUP 'groupuser' | PERM SPACE 'spacelimit' | TEMP SPACE 'tmpspacelimit' | SPILL SPACE 'spillspacelimit' | NODE GROUP logic_cluster_name | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid | DEFAULT TABLESPACE tablespace_name | PROFILE DEFAULT | PROFILE profile_name | PGUSER
  • PGXC_PREPARED_XACTS PGXC_PREPARED_XACTS视图显示当前处于prepared阶段的两阶段事务。只有system admin和monitor admin用户有权限查看。具体字段信息如表1所示。 表1 PGXC_PREPARED_XACTS字段 名称 类型 描述 pgxc_prepared_xact text 当前处于prepared阶段的两阶段事务。 父主题: 其他系统视图
  • GaussDB都有哪些通配符,如何使用? 答:GaussDB数据库支持以下三种通配符: %:表示任意数量的字符,包括0个,用于LIKE和NOT LIKE语句中。 _:表示一个字符,用于LIKE和 NOT LIKE语句中。 *:表示任意数量字符,包括0个,在部分元命令中使用。 示例: --任意数量字符的通配符使用,查询tbl_test表中以col1字段以ab开头任意多个字符结尾的数据。 gaussdb=# SELECT * FROM tbl_test WHERE col1 LIKE 'ab%'; --一个字符的通配符使用,查询tbl_test表中col1字段以a开头b结尾中间任意单个字符串的数据。 gaussdb=# SELECT * FROM tbl_test WHERE col1 LIKE 'a_b'; --查询所有以tbl开头的表。 gaussdb=# \dt tbl* 父主题: FAQ
  • 带索引的集合类型 该集合类型将下标和对应成员值以键值对的方式存储在HASH表中,对该类型变量的所有操作实际就是对HASH表的操作。用户无需自行扩展或释放存储空间,仅需通过赋值或delete方式进行存储和删除成员。集合相关操作、说明如下: 类型定义 索引集合类型定义需同时指定成员类型data_type和下标类型indexby_type,其中下标类型仅支持integer和varchar。 变量声明和初始化 索引集合类型声明后存在三种初始化场景:未初始化、初始化为空、初始化指定下标和成员值。其中未初始化和初始化为空场景对变量的效果一致。未初始化或初始化为空后变量不为NULL,后续都可以对变量直接进行赋值。初始化指定下标和成员值场景会将指定的下标和成员值以键值对的形式保存到变量中。 变量赋值 索引集合类型变量赋值分为两种:成员赋值和整体赋值。成员赋值可通过指定下标方式对某个成员赋值,若该成员不存在则直接赋值,若存在则刷新该成员值。整体赋值则会将被赋值变量中原有成员都清空后重新保存新的成员值。整体赋值场景不能给变量赋NULL值,否则报错。 变量取值 通过指定下标方式可获取变量中对应下标的成员值,若通过下标找不到该成员则会返回“no data found”的错误信息。 非兼容A模式下(参数sql_compatibility值不为A),不支持创建带索引集合类型。 支持在匿名块、存储过程、自定义函数、package中定义带索引集合类型,其作用域各不相同。不支持在schema中定义带索引集合类型。 NOT NULL只支持语法不支持功能。 当data_type为VARCHAR、NUMERIC等可以定义长度和精度的类型时,要校验集合的元素长度或者将元素转换成对应的精度,需要开启tableof_elem_constraints参数(设置behavior_compat_options参数值为tableof_elem_constraints)。CHAR、VARCHAR、NUMERIC、FLOAT和NUMBER等元素类型的范围约束语法创建集合类型,例如:“type t1 is table of numeric(5) index by int; ”只支持语法创建,不支持元素的范围约束功能,功能等同于“type t1 is table of numeric index by int;”。 data_type为数组类型时,数组类型的元素长度校验或精度转换也受参数tableof_elem_constraints是否开启影响。 通过数组类型转换成的集合类型的值不支持对元素长度校验或精度转换。 data_type可以为基础数据类型,或存储过程内定义的record类型,集合类型,数组类型,不支持ref cursor类型。 indexby_type仅支持INTEGER和VARCHAR。 indexby_type为varchar时,开启参数tableof_elem_constraints后在对带索引集合类型赋值时会校验index值的长度,校验行为不受char_coerce_compat参数是否开启影响,index长度大于定义长度则报错;不开启参数tableof_elem_constraints则不会对索引值进行长度校验。 未初始化的带索引集合类型变量非NULL。 带索引集合类型变量不能赋NULL值,否则报错。 带索引集合类型变量作为入参不能赋NULL值或''。 不同的带索引集合类型的变量不能相互赋值。即使成员类型和下标类型相同,但集合类型名称不同,也是不同的集合类型。如: TYPE t1 IS TABLE OF int index by int; 和 TYPE t2 IS TABLE OF int index by int; 定义的两个集合类型,t1和t2是不同的集合类型,以其定义的变量不支持相互赋值(作为成员类型时该约束不保证生效,赋值逻辑受父类型影响)。 带索引集合类型不支持关系运算和算数运算操作。 select ... bulk collect into 方式赋值带索引集合类型变量时,只支持下标为INTEGER类型的集合类型,下标为VARCHAR类型集合不支持。 支持带索引集合类型变量作为函数的参数和返回值,此时要求参数或者返回值的类型是在package中定义的集合类型。 带索引的集合作为函数入参时,可以传入对应子元素类型相同的数组类型作为入参,不支持多维数组,不支持索引数据类型为VARCHAR(过时的方法,不建议使用该功能。可执行“set behavior_compat_options = 'disable_rewrite_nesttable';”禁用)。 类型构造器目前仅支持集合类型,其参数个数的上限与用户自定义函数参数个数上限相同。对于带索引的集合类型,构造器在使用时索引的值仅支持为常量。 不支持对XML类型数据操作。 集合类型以及嵌套集合的类型不支持作为表中的一列来创建表。 集合类型的构造器不支持浮点数以及表达式作为下标。 在匿名块中定义的集合类型,匿名块执行ROLLBACK或发生EXCEPTION后,集合类型将无法继续使用。 执行set enable_recordtype_check_strict = on;后,成员是record类型,且record类型有列具有not null属性或defalut属性,在存储过程或PACKAGE编译时会报错。
  • SQL发展简史 SQL发展简史如下: 1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86 1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89 1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2) 1999年,ISO/IEC 9075:1999,SQL:1999(SQL3) 2003年,ISO/IEC 9075:2003,SQL:2003(SQL4) 2011年,ISO/IEC 9075:200N,SQL:2011(SQL5)
  • 什么是SQL SQL是用于访问和处理数据库的标准计算机语言。 SQL提供了各种任务的语句,包括: 查询数据。 在表中插入、更新和删除行。 创建、替换、更改和删除对象。 控制对数据库及其对象的访问。 保证数据库的一致性和完整性。 SQL语言由用于处理数据库和数据库对象的命令和函数组成。该语言还会强制实施有关数据类型、表达式和文本使用的规则。因此在SQL参考章节,除了SQL语法参考外,还介绍了有关数据类型、表达式、函数和操作符等信息。
  • DB_SOURCE DB_SOURCE视图显示当前用户可访问的存储过程、函数、触发器的定义信息。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 DB_SOURCE字段 名称 类型 描述 owner name 对象的所有者。 name name 对象名字。 type name 对象类型:function、procedure、trigger。 line numeric 此行在定义信息中的行号。 text text 存储对象的文本来源。 origin_con_id character varying(256) 暂不支持,值为0。 父主题: 其他系统视图
  • PG_JOB PG_JOB系统表存储用户创建的定时任务的任务详细信息,定时任务线程定时轮询PG_JOB系统表中的时间,当任务到期会触发任务的执行,并更新PG_JOB表中的任务状态。该系统表属于Shared Relation,所有创建的job记录对所有数据库可见。普通用户需授权才能访问。 表1 PG_JOB字段 名称 类型 描述 oid oid 行标识符(隐含属性,必须明确选择)。 job_id bigint 作业ID,主键,是唯一的(有唯一索引)。 current_postgres_pid bigint 如果当前任务已被执行,那么此处记录运行此任务的线程ID。默认为 -1,表示此任务未被执行过。 log_user name 创建者的UserName。 priv_user name 作业执行者的UserName。 dbname name 标识作业要在哪一个数据库执行的数据库名称。 node_name name 标识当前作业是在哪一个数据库主节点上创建和执行。 job_status "char" 当前任务的执行状态,默认为's',各取值含义: 'r':running 's':successfully finished 'f':job failed 'd':disable 当job连续执行失败16次,会将job_status自动设置为失效状态'd',后续不再执行该job。 注:当用户将定时任务关闭(即:guc参数job_queue_processes为0时),由于监控job执行的线程不会启动,所以该状态不会根据job的实时状态进行设置,用户不需要关注此状态。只有当开启定时任务功能(即:guc参数job_queue_processes为非0时),系统才会根据当前job的实时状态刷新该字段值。 start_date timestamp without time zone 作业第一次开始执行时间,时间精确到毫秒。 next_run_date timestamp without time zone 定时任务下次执行的时间,时间精确到毫秒。 failure_count smallint 失败计数,作业连续执行失败16次,不再继续执行。 interval text 作业执行的重复时间间隔。 last_start_date timestamp without time zone 上次运行开始时间,时间精确到毫秒。 last_end_date timestamp without time zone 上次运行的结束时间,时间精确到毫秒。 last_suc_date timestamp without time zone 上次成功运行的开始时间,时间精确到毫秒。 this_run_date timestamp without time zone 正在运行任务的开始时间,时间精确到毫秒。 nspname name 标识作业执行时的schema的名称。 job_name text DBE_SCHEDULER定时任务专用,定时任务名称。 end_date timestamp without time zone DBE_SCHEDULER定时任务专用,定时任务失效时间,时间精确到毫秒。 enable boolean DBE_SCHEDULER定时任务专用,定时任务启用状态: true:启用 false:未启用 failure_msg text 最新一次执行任务报错信息。 父主题: 其他系统表
  • 注意事项 只有数据库的所有者或者被授予了数据库ALTER权限的用户才能执行ALTER DATABASE命令,系统管理员默认拥有此权限。针对所要修改属性的不同,还有以下权限约束: 修改数据库名称,必须拥有CREATEDB权限。 修改数据库所有者,当前用户必须是该database的所有者或者系统管理员,必须拥有CREATEDB权限,且该用户是新所有者角色的成员。 修改数据库默认表空间,该用户必须拥有新表空间的CREATE权限。这个语句会从物理上将一个数据库原来缺省表空间上的表和索引移至新的表空间。注意不在缺省表空间的表和索引不受此影响。 不能重命名当前使用的数据库,如果需要重新命名,须连接至其他数据库上。
  • 参数说明 database_name 需要修改属性的数据库名称。 取值范围:字符串,要符合标识符命名规范。 connlimit 数据库可以接收的最大并发连接数(管理员用户连接除外)。 取值范围:[-1, 2^31-1]的整数,建议填写1~50的整数。-1(缺省)表示没有限制。 new_name 数据库的新名称。 取值范围:字符串,要符合标识符命名规范。 new_owner 数据库的新所有者。 取值范围:字符串,有效的用户名。 new_tablespace 数据库新的默认表空间,该表空间为数据库中已经存在的表空间。默认的表空间为pg_default。 取值范围:字符串,有效的表空间名。 configuration_parameter 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 当前版本不支持设置数据库级别参数。 value 把指定的数据库会话参数值设置为给定的值。如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置。 取值范围:字符串。 DEFAULT OFF RESET 用户指定的值:需要满足修改参数的取值限制。 FROM CURRENT 取当前会话中的值设置为configuration_parameter的值。 time_zone 设置database_name的数据库的时区值,需要有对应的数据库的权限。 取值范围:字符串。 系统支持的时区和其相应的缩写。 -15:59~+15:00 RESET configuration_parameter 重置指定的数据库会话参数值。 当前版本不支持重置数据库级别参数。 RESET ALL 重置全部的数据库会话参数值。 当前版本不支持重置数据库级别参数。 group_name hashbucket表绑定的node group名字,普通用户只支持绑定到installation node group上且不支持修改。 修改数据库默认表空间,会将旧表空间中的所有表和索引转移到新表空间中,该操作不会影响其他非默认表空间中的表和索引。 修改的数据库会话参数值,将在下一次会话中生效。 执行完参数设置后,需要手动执行CLEAN CONNECTION清理旧连接,否则可能存在集群节点间参数值不一致。
  • 语法格式 修改数据库的最大连接数。 1 2 ALTER DATABASE database_name [ WITH ] CONNECTION LIMIT connlimit; 修改数据库名称。 1 2 ALTER DATABASE database_name RENAME TO new_name; 修改数据库所有者。 1 2 ALTER DATABASE database_name OWNER TO new_owner; 修改数据库默认表空间。 1 2 ALTER DATABASE database_name SET TABLESPACE new_tablespace; 如果该数据库中的某些表或对象已经创建在new_tablespace下,则无法将该数据库的默认表空间修改为new_tablespace,执行会报错。
  • PGXC_NODE PGXC_NODE系统表存储数据库实例节点信息。集中式只能查询该表定义。 表1 PGXC_NODE字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 node_name name 节点名称。 node_type "char" 节点类型。 C:协调节点。 D:数据节点。 S:数据节点的备节点。 node_port integer 节点的端口号。 node_host name 节点的主机名称或者IP(如配置为虚拟IP,则为虚拟IP)。 node_port1 integer 复制节点的端口号。 node_host1 name 复制节点的主机名称或者IP(如配置为虚拟IP,则为虚拟IP)。 hostis_primary boolean 表明当前节点是否发生主备切换。 t(true):表示发生。 f(false):表示不发生。 nodeis_primary boolean 在replication表下,是否优选当前节点作为优先执行的节点进行非查询操作。 t(true):表示优选。 f(false):表示不优选。 nodeis_preferred boolean 在replication表下,是否优选当前节点作为首选的节点进行查询。 t(true):表示优选。 f(false):表示不优选。 node_id integer 节点标志符。由node_name经过hash函数计算后得到。 sctp_port integer 主节点使用TCP代理通信库的数据通道侦听端口(当前版本已经不再支持SCTP通信库)。 control_port integer 主节点使用TCP代理通信库的控制通道侦听端口。 sctp_port1 integer 备节点使用TCP代理通信库的数据通道侦听端口(当前版本已经不再支持SCTP通信库)。 control_port1 integer 备节点使用TCP代理通信库的控制通道侦听端口。 nodeis_central boolean 表明当前节点是否为中心控制节点,对DN无效。 t(true):表示是。 f(false):表示不是。 nodeis_active boolean 表明当前节点是否是正常状态,对DN无效。 t(true):表示是。 f(false):表示不是。 父主题: 通信
  • ADM_DEPENDENCIES ADM_DEPENDENCIES视图显示数据库中的类型、表、视图、存储过程、函数、触发器之间的依赖关系。默认只有系统管理员权限才可以访问,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_DEPENDENCIES字段 名称 类型 描述 owner name 对象的所有者。 name name 对象的名称。 type character varying(18) 对象的类型。 referenced_owner name 被引用对象的所有者。 referenced_name name 被引用对象的名称。 referenced_type character varying(18) 被引用对象的类型。 referenced_link_name character varying(128) 暂不支持,值为NULL。 dependency_type character varying(4) 暂不支持,值为NULL。 父主题: 其他系统视图
  • 参数说明 relname为查询中表table的名字,表有别名时,需要优先使用别名alias,此时relname=alias。当表名中有特殊符号,比如“@”、“.”时,relname需要用""括起来,以避免和查询块和schema名的声明重合。比如表名relnametest@1,需要写做"relnametest@1"。 schema为表所处的schema,可缺省,缺省时hint不区分schema对relname进行查找。 queryblock为表所处的queryblock,可缺省,缺省时hint不区分queryblock对relname进行查找。
  • Memory Statistics Memory Statistics指标名称及描述如表1所示。 表1 Memory Statistics报表主要内容 指标名称 描述 shared_used_memory 已经使用共享内存大小(MB)。 max_shared_memory 最大共享内存(MB)。 process_used_memory 进程已经使用内存(MB)。 max_process_memory 最大进程内存(MB)。 父主题: WDR报告信息介绍
  • PG_STAT_DATABASE PG_STAT_DATABASE视图显示GaussDB中每个数据库的统计信息。 表1 PG_STAT_DATABASE字段 名称 类型 描述 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 由于数据库恢复冲突取消的查询数量(只在备用服务器发生的冲突)。请参见PG_STAT_DATABASE_CONFLICTS获取更多信息。 temp_files bigint 通过数据库查询创建的临时文件数量。计算所有临时文件, 无论该临时文件为什么创建(比如排序或者哈希), 也不管log_temp_files参数如何设置。 temp_bytes bigint 通过数据库查询写入临时文件的数据总量。计算所有临时文件,无论该临时文件为什么创建,也不管log_temp_files参数如何设置。 deadlocks bigint 该数据库中检测到的死锁数。 blk_read_time double precision 通过数据库后端读取数据文件块花费的时间,以毫秒计算。 blk_write_time double precision 通过数据库后端写入数据文件块花费的时间,以毫秒计算。 stats_reset timestamp with time zone 当前状态统计被重置的时间。 父主题: 其他系统视图
  • hll_default_log2sparse 参数说明:该参数可以用来设置从Sparse模式到Full模式的默认阈值大小。 参数类型:整型 参数单位:无 取值范围:0~14。0表示跳过Explicit模式,取1~14表示在基数到达2hll_default_log2sparse时切换模式。 默认值:12 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:设置为默认值,可以根据实际业务需要进行调整。
  • hll_default_regwidth(废弃) 参数说明:该参数可以指定hll数据结构每个桶的位数,该值越大,hll所占内存越高。hll_default_regwidth和hll_default_log2m可以决定当前hll能够计算的最大distinct value。当前regwidth设为固定值,该参数不再使用。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,1~5。 默认值:5
  • hll_default_expthresh(废弃) 参数说明:该参数可以用来设置从Explicit模式到Sparse模式的默认阈值大小。当前已经使用参数hll_default_log2explicit替代类似功能。 该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 取值范围:整型,-1~7。-1表示自动模式,0表示跳过Explicit模式,取1-7表示在基数到达2hll_default_expthresh时切换模式。 默认值:-1
  • hll_default_log2m 参数说明:该参数可以指定hll数据结构桶的个数。桶的个数会影响hll计算distinct值的精度,桶的个数越多,误差越小。误差范围为:[-1.04/2log2m*1/2,+1.04/2log2m*1/2]。 参数类型:整型 参数单位:无 取值范围:10~16 默认值:14 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:设置为默认值,可以根据实际业务需要进行调整。
  • hll_default_log2explicit 参数说明:该参数可以用来设置从Explicit模式到Sparse模式的默认阈值大小。 参数类型:整型 参数单位:无 取值范围:0~12。0表示跳过Explicit模式,取1~12表示在基数到达2hll_default_log2explicit时切换模式。 默认值:10 设置方式:该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。 设置建议:设置为默认值,可以根据实际业务需要进行调整。
  • 示例 修改模式的防篡改属性。 修改普通模式为防篡改模式,需设置GUC参数enable_ledger,用于控制是否启用账本数据库功能。参数使用请联系管理员处理。 --创建模式test_schema1。 gaussdb=# CREATE SCHEMA test_schema1; --修改模式test_schema1为防篡改模式。 gaussdb=# ALTER SCHEMA test_schema1 WITH BLOCKCHAIN; --查询模式信息,防篡改属性为true。 gaussdb=# \dn+ test_schema1 List of schemas Name | Owner | Access privileges | Description | WithBlockChain --------------+-------+-------------------+-------------+---------------- test_schema1 | omm | | | t (1 row) 修改模式名称。 --将模式test_schema1重命名为test_sch1。 gaussdb=# ALTER SCHEMA test_schema1 RENAME TO test_sch1; --查询模式信息。 gaussdb=# \dn+ test* List of schemas Name | Owner | Access privileges | Description | WithBlockChain -----------+-------+-------------------+-------------+---------------- test_sch1 | omm | | | t (1 row) 修改模式所有者。 --创建用户test_user。 gaussdb=# CREATE ROLE test_user PASSWORD '********'; --将模式test_sch1的所有者修改为test_user。 gaussdb=# ALTER SCHEMA test_sch1 OWNER TO test_user; --查询模式信息。 gaussdb=# \dn+ test_sch1; List of schemas Name | Owner | Access privileges | Description | WithBlockChain -----------+-----------+-------------------+-------------+---------------- test_sch1 | test_user | | | t (1 row) --删除。 gaussdb=# DROP SCHEMA test_sch1; gaussdb=# DROP ROLE test_user; 修改默认字符集和字符序。 仅在MYSQL模式数据库下(即sql_compatibility = 'MYSQL')支持该语法。 除binary字符集和字符序外,当前仅支持指定与数据库编码相同的字符集。 --创建并切换至测试数据库。 gaussdb=# CREATE DATABASE test1 WITH DBCOMPATIBILITY = 'MYSQL' ENCODING = 'UTF8' LC_COLLATE = 'zh_CN.utf8' LC_CTYPE = 'zh_CN.utf8'; gaussdb=# \c test1 --创建模式test_sch2。 test1=# CREATE SCHEMA test_sch2; --修改其默认字符为utf8mb4,默认字符序修改为utf8mb4_bin。 test1=# ALTER SCHEMA test_sch2 CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; --删除。 test1=# DROP SCHEMA test_sch2; --切换至默认数据库。(根据实际情况修改数据库名) test1=# \c postgres gaussdb=# DROP DATABASE test1;
  • 参数说明 schema_name 现有模式的名称。 取值范围:已存在的模式名。 RENAME TO new_name 修改模式的名称。 new_name:模式的新名称。 模式名不能和当前数据库里其他的模式重名。 模式名不能和当前数据库的初始用户重名。 模式的名称不可以“pg_”开头。 模式的名称不可以“gs_role_”开头。 取值范围:字符串,要符合标识符命名规范。 OWNER TO new_owner 修改模式的所有者。非系统管理员要改变模式的所有者,该用户还必须是新的所有角色的直接或间接成员, 并且该成员必须在此数据库上有CREATE权限。 new_owner:模式的新所有者。 取值范围:已存在的用户名/角色名。 { WITH | WITHOUT } BLOCKCHAIN 修改模式的防篡改属性,使用WITH选项为防篡改模式。具有防篡改属性模式下的普通行存表均为防篡改历史表,不包括外表,临时表,系统表。当该模式下不包含任何表时才可修改防篡改属性。另外,不支持临时表模式、toast表模式、dbe_perf模式、blockchain模式修改防篡改属性。只有模式中不包含任何表的情况下,才能使用该语法在普通模式和防篡改模式中互转。 修改普通模式为防篡改模式,需设置GUC参数enable_ledger为on,该参数默认值为off,级别为SIGHUP。 default_charset 修改模式的默认字符集。单独指定时会将模式的默认字符序设置为指定的字符集的默认字符序。 仅在MYSQL模式数据库下(即sql_compatibility = 'MYSQL')支持该语法。支持字符集参见表1。 default_collate 修改模式的默认字符序。单独指定时会将模式的默认字符集设置为指定的字符序对应的字符集。 仅在MYSQL模式数据库下(即sql_compatibility = 'MYSQL')支持该语法。支持字符序参见表1。
  • 注意事项 只有模式的所有者或者被授予了模式ALTER权限的用户有权限执行ALTER SCHEMA命令,三权分立开关关闭时,系统管理员默认拥有此权限。但要修改模式的所有者,当前用户必须是该模式的所有者或者系统管理员,且该用户是新所有者角色的成员。 对于除public以外的系统模式,如pg_catalog、sys等,只允许初始用户修改模式的所有者。修改系统自带模式的名称可能会导致部分功能不可用甚至影响数据库正常运行,默认情况下不允许修改系统自带模式的名称,考虑到前向兼容性,仅允许当系统在启动或升级过程中或参数allow_system_table_mods为on时修改。 除初始用户外,其他用户无法将schema的所有者修改为运维管理员。
  • 语法格式 修改模式的防篡改属性。 1 ALTER SCHEMA schema_name { WITH | WITHOUT } BLOCKCHAIN; 修改模式的名称。 1 2 ALTER SCHEMA schema_name RENAME TO new_name; 修改模式的所有者。 1 2 ALTER SCHEMA schema_name OWNER TO new_owner;
  • 开发流程中涉及的API 表1 相关API说明 功能 API 申请句柄资源 SQLAllocHandle:申请句柄资源,可替代如下函数: SQLAllocEnv:申请环境句柄 SQLAllocConnect:申请连接句柄 SQLAllocStmt:申请语句句柄 设置环境属性 SQLSetEnvAttr 设置连接属性 SQLSetConnectAttr 设置语句属性 SQLSetStmtAttr 连接数据源 SQLConnect 绑定缓冲区到结果集的列中 SQLBindCol 绑定SQL语句的参数标志和缓冲区 SQLBindParameter 查看最近一次操作错误信息 SQLGetDiagRec 为执行SQL语句做准备 SQLPrepare 执行一条准备好的SQL语句 SQLExecute 直接执行SQL语句 SQLExecDirect 结果集中取行集 SQLFetch 返回结果集中某一列的数据 SQLGetData 获取结果集中列的描述信息 SQLColAttribute 断开与数据源的连接 SQLDisconnect 释放句柄资源 SQLFreeHandle:释放句柄资源,可替代如下函数: SQLFreeEnv:释放环境句柄 SQLFreeConnect:释放连接句柄 SQLFreeStmt:释放语句句柄 ODBC为应用程序与数据库的中心层,负责把应用程序发出的SQL指令传到数据库当中,自身并不解析SQL语法。故在应用程序中写入带有保密信息的SQL语句时,保密信息会被暴露在驱动日志中。 数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,如果其中有一个语句失败,那么整个请求都将会被回滚。
  • 函数支持自治事务 自治事务可以在函数中定义,标识符为PRAGMA AUTONOMOUS_TRANSACTION,其余语法与函数语法相同,请参见CREATE FUNCTION,示例如下。 gaussdb=# CREATE TABLE t4(a INT, b INT, c TEXT); NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default. HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column. CREATE TABLE gaussdb=# CREATE OR REPLACE FUNCTION autonomous_32(a INT ,b INT ,c TEXT) RETURN INT AS DECLARE PRAGMA AUTONOMOUS_TRANSACTION; BEGIN INSERT INTO t4 VALUES(a, b, c); RETURN 1; END; / CREATE FUNCTION gaussdb=# CREATE OR REPLACE FUNCTION autonomous_33(num1 INT) RETURN INT AS DECLARE num3 INT := 220; tmp INT; PRAGMA AUTONOMOUS_TRANSACTION; BEGIN num3 := num3/num1; RETURN num3; EXCEPTION WHEN DIVISION_BY_ZERO THEN SELECT autonomous_32(num3, num1, SQLERRM) INTO tmp; ROLLBACK; RETURN 0; END; / CREATE FUNCTION gaussdb=# SELECT autonomous_33(0); autonomous_33 --------------- 0 (1 row) gaussdb=# SELECT * FROM t4; a | b | c -----+---+------------------ 220 | 0 | division by zero (1 row) gaussdb=# DROP TABLE t4; DROP TABLE 上述例子,最后在回滚的事务块中执行包含自治事务的函数,也能直接说明了自治事务的特性,即主事务的回滚,不会影响自治事务已经提交的内容。 父主题: 自治事务
共100000条