华为云用户手册

  • HashFunc函数 bucketabstime(value,flag) 描述:对abstime格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为abstime,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 1 2 3 4 5 gaussdb=# select bucketabstime('2011-10-01 10:10:10.112',1); bucketabstime --------------- 13954 (1 row) bucketbool(value,flag) 描述:对bool格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为bool,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 1 2 3 4 5 6 7 8 9 10 gaussdb=# select bucketbool(true,1); bucketbool ------------ 1 (1 row) gaussdb=# select bucketbool(false,1); bucketbool ------------ 0 (1 row) bucketbpchar(value, flag) 描述:对bpchar格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为bpchar,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 1 2 3 4 5 gaussdb=# select bucketbpchar('test',1); bucketbpchar -------------- 9761 (1 row) bucketbytea(value,flag) 描述:对bytea格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为bytea,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 1 2 3 4 5 gaussdb=# select bucketbytea('test',1); bucketbytea ------------- 9761 (1 row) bucketcash(value,flag) 描述:对money格式的数值value计算hash值并找到对应的hashbucket桶。 参数:value为需要转换的数值,类型为money,flag为int类型表示数据分布方式,0表示hash分布。 返回值类型:int32 示例: 1 2 3 4 5 gaussdb=# select bucketcash(10::money,1); bucketcash ------------ 8468 (1 row) getbucket(value,flag) 描述:从分布列获取hashbucket桶。 value为需要输入的数值,类型: “char”,abstime,bigint,boolean,bytea,character varying,character,date,double precision,int2vector,integer,interval,money,name,numeric,nvarchar2,oid,oidvector,raw,real,record,reltime,smalldatetime,smallint,text,time with time zone,time without time zone,timestamp with time zone,timestamp without time zone,tinyint,uuid。 flag表示数据分布方式,类型:integer 返回值类型:integer 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 gaussdb=# select getbucket(10,'H'); getbucket ----------- 14535 (1 row) gaussdb=# select getbucket(11,'H'); getbucket ----------- 13449 (1 row) gaussdb=# select getbucket(11,'R'); getbucket ----------- 13449 (1 row) gaussdb=# select getbucket(12,'R'); getbucket ----------- 9412 (1 row) ora_hash(expression,[seed]) 描述:用于计算给定表达式的哈希值。expression:可输入的类型覆盖字符串,时间类型,数字类型,根据expression进行计算哈希值。seed:可选参数,一个int8值,可以对同一个输入值返回不同的结果, 用于计算带随机数的hash值。 返回类型:int8类型的哈希值。 示例: 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 gaussdb=# select ora_hash(123); ora_hash ------------ 4089882933 (1 row) gaussdb=# select ora_hash('123'); ora_hash ------------ 2034089965 (1 row) gaussdb=# select ora_hash('sample'); ora_hash ------------ 1573005290 (1 row) gaussdb=# select ora_hash(to_date('2012-1-2','yyyy-mm-dd')); ora_hash ------------ 1171473495 (1 row) gaussdb=# select ora_hash(123,234); ora_hash ------------ -9089505052966355682 (1 row) gaussdb=# select ora_hash('123',234); ora_hash ------------ 5742589019960764616 (1 row) gaussdb=# select ora_hash('sample',234); ora_hash ------------ -1747984408055821656 (1 row) gaussdb=# select ora_hash(to_date('2012-1-2','yyyy-mm-dd'),234); ora_hash ------------ -3306025179710572679 (1 row) 此函数在参数a_format_version值为10c和a_format_dev_version值为s2的情况下才能生效。 hash_array(anyarray) 描述:数组哈希,将数组的元素通过哈希函数得到结果,并返回合并结果。 参数:数据类型为anyarray。 返回值类型:integer 示例: 1 2 3 4 5 gaussdb=# select hash_array(ARRAY[[1,2,3],[1,2,3]]); hash_array ------------ -382888479 (1 row) hash_numeric(numeric) 描述:计算Numeric类型的数据的hash值。 参数:Numeric类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 gaussdb=# select hash_numeric(30); hash_numeric -------------- -282860963 (1 row) hash_range(anyrange) 描述:计算range的哈希值。 参数:anyrange类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 gaussdb=# select hash_range(numrange(1.1,2.2)); hash_range ------------ 683508754 (1 row) hashbpchar(character) 描述:计算bpchar的哈希值。 参数:character类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 gaussdb=# select hashbpchar('hello'); hashbpchar ------------- -1870292951 (1 row) hashchar(char) 描述:char和布尔数据转换为哈希值。 参数:char类型的数据或者bool类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 6 7 8 9 10 11 gaussdb=# select hashbpchar('hello'); hashbpchar ------------- -1870292951 (1 row) gaussdb=# select hashchar('true'); hashchar ------------ 1686226652 (1 row) hashenum(anyenum) 描述:枚举类型转哈希值。 参数:anyenum类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 6 7 8 9 gaussdb=# CREATE TYPE b1 AS ENUM('good', 'bad', 'ugly'); CREATE TYPE gaussdb=# call hashenum('good'::b1); hashenum ------------ 1821213359 (1 row) gaussdb=# DROP TYPE b1; DROP TYPE hashfloat4(real) 描述:float4转哈希值。 参数:real类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 gaussdb=# select hashfloat4(12.1234); hashfloat4 ------------ 1398514061 (1 row) hashfloat8(double precision) 描述:float8转哈希值。 参数:double precision类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 gaussdb=# select hashfloat8(123456.1234); hashfloat8 ------------ 1673665593 (1 row) hashinet(inet) 描述:inet / cidr转哈希值。 参数:inet类型的数据。 返回值类型:integer 示例: 1 2 3 4 5 gaussdb=# select hashinet('127.0.0.1'::inet); hashinet ------------- -1435793109 (1 row) hashint1(tinyint) 描述:INT1转哈希值。 参数:tinyint类型的数据。 返回值类型:uint32 示例: 1 2 3 4 5 gaussdb=# select hashint1(20); hashint1 ------------- -2014641093 (1 row) hashint2(smallint) 描述:INT2转哈希值。 参数:smallint类型的数据。 返回值类型:uint32 示例: gaussdb=# select hashint2(20000); hashint2 ------------ -863179081 (1 row) bucketchar 描述:计算入参的哈希值。 参数:char, integer 返回值类型:integer bucketdate 描述:计算入参的哈希值。 参数:date, integer 返回值类型:integer bucketfloat4 描述:计算入参的哈希值。 参数:real, integer 返回值类型:integer bucketfloat8 描述:计算入参的哈希值。 参数:double precision, integer 返回值类型:integer bucketint1 描述:计算入参的哈希值。 参数:tinyint, integer 返回值类型:integer bucketint2 描述:计算入参的哈希值。 参数:smallint, integer 返回值类型:integer bucketint2vector 描述:计算入参的哈希值。 参数:int2vector, integer 返回值类型:integer bucketint4 描述:计算入参的哈希值。 参数:integer, integer 返回值类型:integer bucketint8 描述:计算入参的哈希值。 参数:bigint, integer 返回值类型:integer bucketinterval 描述:计算入参的哈希值。 参数:interval, integer 返回值类型:integer bucketname 描述:计算入参的哈希值。 参数:name, integer 返回值类型:integer bucketnumeric 描述:计算入参的哈希值。 参数:numeric, integer 返回值类型:integer bucketnvarchar2 描述:计算入参的哈希值。 参数:nvarchar2, integer 返回值类型:integer bucketoid 描述:计算入参的哈希值。 参数:oid, integer 返回值类型:integer bucketoidvector 描述:计算入参的哈希值。 参数:oidvector, integer 返回值类型:integer bucketraw 描述:计算入参的哈希值。 参数:raw, integer 返回值类型:integer bucketreltime 描述:计算入参的哈希值。 参数:reltime, integer 返回值类型:integer bucketsmalldatetime 描述:计算入参的哈希值。 参数:smalldatetime, integer 返回值类型:integer buckettext 描述:计算入参的哈希值。 参数:text, integer 返回值类型:integer buckettime 描述:计算入参的哈希值。 参数:time without time zone, integer 返回值类型:integer buckettimestamp 描述:计算入参的哈希值。 参数:timestamp without time zone, integer 返回值类型:integer buckettimestamptz 描述:计算入参的哈希值。 参数:timestamp with time zone, integer 返回值类型:integer buckettimetz 描述:计算入参的哈希值。 参数:time with time zone, integer 返回值类型:integer bucketuuid 描述:计算入参的哈希值。 参数:uuid, integer 返回值类型:integer bucketvarchar 描述:计算入参的哈希值。 参数:character varying, integer 返回值类型:integer 父主题: 函数和操作符
  • PG_APP_WORKLOADGROUP_MAPPING PG_APP_WORKLOADGROUP_MAPPING系统表提供了数据库负载映射组的信息。 表1 PG_APP_WORKLOADGROUP_MAPPING字段 名称 类型 描述 oid oid 行标识符(隐含字段,必须明确选择)。 appname name 应用名称。 workload_gpname name 映射到的负载组名称。 父主题: 系统表
  • 查询结果集 返回单行结果的SELECT语句可以直接使用EXEC SQL执行,请参见执行SQL命令章节。 示例: /* 首先建立一个表并插入数据 */ EXEC SQL CREATE TABLE test_table (number1 integer, number2 integer); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (2, 1); /* 查询结果为单行,:num 为宿主变量 */ EXEC SQL SELECT number1 INTO :num FROM test_table WHERE number2 = 1; 若要处理多行结果集,则必须使用游标,请参见使用游标章节(特殊情况下,应用程序可以一次取出多行结果写入到数组类型的宿主变量中,请参见使用非初级类型的宿主变量章节)。 示例: /* 首先建立一个表并插入数据 */ EXEC SQL CREATE TABLE test_table (number1 integer, number2 integer); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (2, 1); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (3, 1); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (4, 1); EXEC SQL INSERT INTO test_table (number1, number2) VALUES (5, 1); /* 定义宿主变量 */ EXEC SQL BEGIN DECLARE SECTION; int v1; int v2; EXEC SQL END DECLARE SECTION; /* 声明游标 */ EXEC SQL DECLARE test_bar CURSOR FOR SELECT number1, number2 FROM test_table ORDER BY number1; /* 打开游标 */ EXEC SQL OPEN test_bar; /* 当游标到达结果集末尾时跳出循环 */ EXEC SQL WHENEVER NOT FOUND DO BREAK; /* 获取查询结果集 */ while(1) { EXEC SQL FETCH NEXT FROM test_bar INTO :v1, :v2; printf("number1 = %d, number2 = %d\n",v1,v2); } /* 关闭游标 */ EXEC SQL CLOSE test_bar; 父主题: 基于ecpg开发
  • 类型映射 当ecpg应用程序在 GaussDB Kernel服务器和C语言程序之间交换值时(例如:从服务器检索查询结果或者执行带有输入参数的SQL语句),在GaussDB Kernel数据类型和宿主语言变量类型(具体的C语言数据类型)之间需要进行值的转换。有两种数据类型可以使用:简单的GaussDB Kernel数据类型,如integer和text,可以直接被应用程序读取和写入。其他GaussDB Kernel数据类型,如timestamp和numeric,只能通过特殊库函数进行访问,请参见ecpg接口参考章节。 表1 GaussDB Kernel数据类型和C变量类型之间的映射 GaussDB Kernel数据类型 宿主变量数据类型 smallint short integer int bigint long long int boolean boolean character(n), varchar(n), text char[n+1], VARCHAR[n+1] double precision double real float smallserial short serial int bigserial long long int oid unsigned int name char[NAMEDATALEN] date date [a] timestamp timestamp [a] interval interval [a] decimal decimal [a] numeric numeric [a] [a]这种类型可以通过访问特殊数据类型访问。 当前仅支持对于C语言的基本数据类型的使用或者组合,不支持C++语言中string数据类型用作宿主变量数据类型。 当前ecpg仅对GaussDB Kernel SQL的常用数据类型做映射,具体支持项请参见表1。 父主题: 宿主变量
  • 背景信息 ANALYZE语句可收集与数据库中表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。查询优化器会使用这些统计数据,以生成最有效的执行计划。 建议在执行了大批量插入/删除操作后,例行对表或全库执行ANALYZE语句更新统计信息。目前默认收集统计信息的采样比例是30000行(即:guc参数default_statistics_target默认设置为100),如果表的总行数超过一定行数(大于1600000),建议设置guc参数default_statistics_target为-2,即按2%收集样本估算统计信息。 对于在批处理脚本或者存储过程中生成的中间表,也需要在完成数据生成之后显式的调用ANALYZE。 对于表中多个列有相关性且查询中有同时基于这些列的条件或分组操作的情况,可尝试收集多列统计信息,以便查询优化器可以更准确地估算行数,并生成更有效的执行计划。 若表上存在全局二级索引,则需要对基表执行ANALYZE之后再对全局二级索引执行ANALYZE。
  • PG_SHSECLABEL PG_SHSECLABEL系统表存储在共享数据库对象上的安全标签。安全标签可以用SECURITY LABEL命令操作。 查看安全标签的简单点的方法,请参阅PG_SECLABELS。 PG_SECLABEL的作用类似,只是它是用于在单个数据库内部的对象的安全标签的。 不同于大多数的系统表,PG_SHSECLABEL在一个集群中的所有数据库中共享:每个数据库集群只有一个PG_SHSECLABEL,而不是每个数据库一个。 表1 PG_SHSECLABEL字段 名称 类型 引用 描述 objoid oid 任意OID属性 这个安全标签所属的对象的OID。 classoid oid PG_CLASS.oid 出现这个对象的系统目录的OID。 provider text - 与这个标签相关的标签提供程序。 label text - 应用于这个对象的安全标签。 父主题: 系统表
  • DB_INDEXES DB_INDEXES视图显示当前用户可访问的索引信息。该视图同时存在于PG_CATA LOG 和SYS Schema下。 表1 DB_INDEXES字段 名称 类型 描述 owner character varying(64) 索引的所有者。 index_name character varying(64) 索引名称。 table_name character varying(64) 索引对应的表名。 uniqueness text 表示该索引是否为唯一索引。 UNIQUE:唯一索引。 NONUNIQUE:非唯一索引。 partitioned character(3) 表示该索引是否具有分区表的性质。 Yes:索引具有分区表的性质。 No:索引不具有分区表的性质。 generated character varying(1) 表示该索引的名称是否为系统生成。 y:索引名称为系统生成。 n:索引名称非系统生成。 index_type character varying(27) 索引类型。 NORMAL:索引属性都是简单的引用,表达式树为空。 FUNCTION-BASED NORMAL:存在表达式树用于非简单字段引用的索引属性。 table_owner character varying(128) 索引对象的所有者。 table_type character(11) 索引对象的类型。 TABLE:索引对象为表类型。 tablespace_name character varying(30) 包含索引的表空间名称。 status character varying(8) 非分区索引状态。 VALID:非分区索引可以用于查询。 UNUSABLE:非分区索引不可用。 N/A:索引具有分区表性质。 compression character varying(13) 暂不支持,值为NULL。 prefix_length numeric 暂不支持,值为NULL。 ini_trans numeric 暂不支持,值为NULL。 max_trans numeric 暂不支持,值为NULL。 initial_extent numeric 暂不支持,值为NULL。 next_extent numeric 暂不支持,值为NULL。 min_extents numeric 暂不支持,值为NULL。 max_extents numeric 暂不支持,值为NULL。 pct_increase numeric 暂不支持,值为NULL。 pct_threshold numeric 暂不支持,值为NULL。 include_column numeric 暂不支持,值为NULL。 freelists numeric 暂不支持,值为NULL。 freelist_groups numeric 暂不支持,值为NULL。 pct_free numeric 暂不支持,值为NULL。 logging character varying(3) 暂不支持,值为NULL。 blevel numeric 暂不支持,值为NULL。 leaf_blocks numeric 暂不支持,值为NULL。 distinct_keys numeric 暂不支持,值为NULL。 avg_leaf_blocks_per_key numeric 暂不支持,值为NULL。 avg_data_blocks_per_key numeric 暂不支持,值为NULL。 clustering_factor numeric 暂不支持,值为NULL。 num_rows numeric 暂不支持,值为NULL。 sample_size numeric 暂不支持,值为NULL。 last_analyzed date 暂不支持,值为NULL。 degree character varying(40) 暂不支持,值为NULL。 instances character varying(40) 暂不支持,值为NULL。 temporary character varying(1) 暂不支持,值为NULL。 secondary character varying(1) 暂不支持,值为NULL。 buffer_pool character varying(7) 暂不支持,值为NULL。 flash_cache character varying(7) 暂不支持,值为NULL。 cell_flash_cache character varying(7) 暂不支持,值为NULL。 user_stats character varying(3) 暂不支持,值为NULL。 duration character varying(15) 暂不支持,值为NULL。 pct_direct_access numeric 暂不支持,值为NULL。 ityp_owner character varying(128) 暂不支持,值为NULL。 ityp_name character varying(128) 暂不支持,值为NULL。 parameters character varying(1000) 暂不支持,值为NULL。 global_stats character varying(3) 暂不支持,值为NULL。 domidx_status character varying(12) 暂不支持,值为NULL。 domidx_opstatus character varying(6) 暂不支持,值为NULL。 funcidx_status character varying(8) 暂不支持,值为NULL。 join_index character varying(3) 暂不支持,值为NULL。 iot_redundant_pkey_elim character varying(3) 暂不支持,值为NULL。 dropped character varying(3) 暂不支持,值为NULL。 visibility character varying(9) 暂不支持,值为NULL。 domidx_management character varying(14) 暂不支持,值为NULL。 segment_created character varying(3) 暂不支持,值为NULL。 orphaned_entries character varying(3) 暂不支持,值为NULL。 indexing character varying(7) 暂不支持,值为NULL。 auto character varying(3) 暂不支持,值为NULL。 父主题: 系统视图
  • STAT_DATABASE_CONFLI CTS 显示数据库当前节点冲突状态的统计信息。 表1 STAT_DATABASE_CONFLICTS字段 名称 类型 描述 datid oid 数据库标识。 datname name 数据库名称。 confl_tablespace bigint 冲突的表空间的数目。 confl_lock bigint 冲突的锁数目。 confl_snapshot bigint 冲突的快照数目。 confl_bufferpin bigint 冲突的缓冲区数目。 confl_deadlock bigint 冲突的死锁数目。 父主题: Object
  • MY_TYPE_ATTRS MY_TYPE_ATTRS视图显示数据库中当前用户所拥有的所有类型的属性。所有用户均可访问该视图,该视图同时存在于PG_CATALOG和SYS Schema下。 表1 MY_TYPE_ATTRS字段 名称 类型 描述 type_name character varying(128) 数据类型名称。 attr_name character varying(128) 属性名称。 attr_type_mod character varying(7) 属性的类型修饰符: REF POINT attr_type_owner character varying(128) 属性类型的所有者。 attr_type_name character varying(128) 属性类型的名称。 length numeric CHAR属性的长度,或VARCHAR和character varying属性的最大长度。 precision numeric 数字或DECIMAL属性的十进制精度,或FLOAT属性的二进制精度。 scale numeric numeric或DECIMAL属性的小数位。 character_set_name character varying(44) 属性的字符集名称(Char_ CS 或NCHAR_CS)。 attr_no numeric 类型规范或CREATE TYPE语句中指定的属性的语法顺序编号或位置(不用作ID编号)。 inherited character varying(3) 表示属性是否继承自超类型。 YES:表示继承自超类型。 NO:表示没有继承自超类型。 父主题: 系统视图
  • 获取源码包、ODBC包以及依赖库 基于ODBC开发所需的包,依赖库和头文件以及其获取方式如表1所示。 表1 ODBC应用程序开发环境准备 所需资源 获取方式 unixODBC源码包 unixODBC源码包获取参考地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz。 MD5文件下载地址:https://www.unixodbc.org/unixODBC-2.3.7.tar.gz.md5。 下载后需使用MD5文件对unixODBC源码包进行完整性校验(查看MD5值,对比MD5值是否与源码包一致)。 Linux系统下的ODBC包以及依赖库 从发布包中获取,包名为GaussDB-Kernel_数据库版本号_操作系统版本号_64bit_Odbc.tar.gz。Linux环境下,开发应用程序要用到unixODBC提供的头文件(sql.h、sqlext.h等)和库libodbc.so。这些头文件和库可从unixODBC-2.3.7的源码包中获得。 Windows系统下的ODBC包以及依赖库 从发布包中获取,包名为GaussDB-Kernel_数据库版本号_Windows_X86_Odbc.tar.gz(32位)和GaussDB-Kernel_数据库版本号_Windows_X64_Odbc.tar.gz(64位)。Windows环境下,开发应用程序用到的相关头文件和库文件由系统自带。 父主题: 开发步骤
  • JDBC接口参考 JDBC接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述,若涉及其他接口可参考JDK 1.8(软件包)/JDBC 4.2中相关内容。 java.sql.Connection java.sql.CallableStatement java.sql.DatabaseMetaData java.sql.Driver java.sql.PreparedStatement java.sql.ResultSet java.sql.ResultSetMetaData java.sql.Statement javax.sql.ConnectionPoolDataSource javax.sql.DataSource javax.sql.PooledConnection javax.naming.Context javax.naming.spi.InitialContextFactory CopyManager PGReplicationConnection PGReplicationStream ChainedStreamBuilder ChainedCommonStreamBuilder 父主题: 基于JDBC开发
  • COMM_SEND_STREAM COMM_SEND_STREAM展示单个DN上所有的TCP代理通信库发送流状态。 表1 COMM_SEND_STREAM字段 名称 类型 描述 node_name text 节点名称。 local_tid bigint 使用此通信流的线程ID。 remote_name text 连接对端节点名称。 remote_tid bigint 连接对端线程ID。 idx integer 通信对端DN在本DN内的标识编号。 sid integer 通信流在物理连接中的标识编号。 tcp_sock integer 通信流所使用的tcp通信socket。 state text 通信流当前的状态。 query_id bigint 通信流对应的debug_query_id编号。 pn_id integer 通信流所执行查询的plan_node_id编号。 send_smp integer 通信流所执行查询send端的smpid编号。 recv_smp integer 通信流所执行查询recv端的smpid编号。 send_bytes bigint 通信流发送的数据总量(单位:Byte)。 time bigint 通信流当前生命周期使用时长(单位:ms)。 speed bigint 通信流的平均发送速率(单位:Byte/s)。 quota bigint 通信流当前的通信配额值(单位:Byte)。 wait_quota bigint 通信流等待quota值产生的额外时间开销(单位:毫秒)。 父主题: Comm
  • STAT_SYS_TABLES 显示当前节点内pg_catalog、information_schema以及pg_toast模式下所有系统表的状态信息。 表1 STAT_SYS_TABLES字段 名称 类型 描述 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
  • 条件表达式函数 coalesce(expr1, expr2, ..., exprn) 描述: 返回参数列表中第一个非NULL的参数值。 COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。 示例: 1 2 3 4 5 gaussdb=# SELECT coalesce(NULL,'hello'); coalesce ---------- hello (1 row) 备注: 如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。 它常用于在显示数据时用缺省值替换NULL。 和CASE表达式一样,COALESCE不会计算不需要用来判断结果的参数;即在第一个非空参数右边的参数不会被计算。 decode(base_expr, compare1, value1, Compare2,value2, … default) 描述:把base_expr与后面的每个compare(n) 进行比较,如果匹配返回相应的value(n)。如果没有发生匹配,则返回default。 示例: 1 2 3 4 5 gaussdb=# SELECT decode('A','A',1,'B',2,0); case ------ 1 (1 row) 备注:不支持对xml数据类型的操作。 nullif(expr1, expr2) 描述:当且仅当expr1和expr2相等时,NULLIF才返回NULL,否则它返回expr1。 nullif(expr1, expr2) 逻辑上等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END。 示例: 1 2 3 4 5 gaussdb=# SELECT nullif('hello','world'); nullif -------- hello (1 row) 备注:不支持对xml数据类型的操作。 如果两个参数的数据类型不同,则: 若两种数据类型之间存在隐式转换,则以其中优先级较高的数据类型为基准将另一个参数隐式转换成该类型,转换成功则进行计算,转换失败则返回错误。如: 1 2 3 4 5 gaussdb=# SELECT nullif('1234'::VARCHAR,123::INT4); nullif -------- 1234 (1 row) 1 2 gaussdb=# SELECT nullif('1234'::VARCHAR,'2012-12-24'::DATE); ERROR: invalid input syntax for type timestamp: "1234" 若两种数据类型之间不存在隐式转换,则返回错误。如: 1 2 3 4 5 gaussdb=# SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE); ERROR: operator does not exist: boolean = timestamp without time zone LINE 1: SELECT nullif(TRUE::BOOLEAN,'2012-12-24'::DATE) FROM sys_dummy; ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. nvl( expr1 , expr2 ) 描述: 如果expr1为NULL则返回expr2。 如果expr1非NULL,则返回expr1。 示例: 1 2 3 4 5 gaussdb=# SELECT nvl('hello','world'); nvl ------- hello (1 row) 备注:参数expr1和expr2可以为任意类型,当NVL的两个参数不属于同类型时,看第二个参数是否可以向第一个参数进行隐式转换,如果可以则返回第一个参数类型。如果第二个参数不能向第一个参数进行隐式转换而第一个参数可以向第二个参数进行隐式转换,则返回第二个参数的类型。如果两个参数之间不存在隐式类型转换并且也不属于同一类型则报错。 nvl2( expr1 , expr2,expr3 ) 描述: 如果expr1为NULL,则返回expr3。 如果expr1非NULL,则返回expr2。 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。 示例: 1 2 3 4 5 gaussdb=# SELECT nvl2('hello','world','other'); case ------- world (1 row) 备注:参数expr2和expr3可以为任意类型, 当NVL2的后面两个参数不属于同类型时,看expr3参数是否可以向expr2参数进行隐式转换,如果不能隐式转换,会返回错误。如果第一个参数是数值类型,函数将第一个参数和其他参数都转换为numeric类型,然后进行比较,对于不能转换的,提示出错信息;第一个参数是其他类型的,函数将其他参数都转换为第一个参数的类型进行比较,对于不能转换的,提示出错信息。 greatest(expr1 [, ...]) 描述:获取并返回参数列表中值最大的表达式的值。 返回值类型: 示例: 1 2 3 4 5 gaussdb=# SELECT greatest(1*2,2-3,4-1); greatest ---------- 3 (1 row) 1 2 3 4 5 gaussdb=# SELECT greatest('HARRY', 'HARRIOT', 'HAROLD'); greatest ---------- HARRY (1 row) 备注:不支持对xml数据类型的操作。 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下: 如果参数中有任意一个参数的值为null,函数返回null。 如果第一个参数是数值类型,函数将第一个参数和其他参数都转换为numeric类型,然后进行比较,对于不能转换的,提示出错信息;第一个参数是其他类型的,函数将其他参数都转换为第一个参数的类型进行比较,对于不能转换的,提示出错信息。 least(expr1 [, ...]) 描述:获取并返回参数列表中值最小的表达式的值。 示例: 1 2 3 4 5 gaussdb=# SELECT least(1*2,2-3,4-1); least ------- -1 (1 row) 1 2 3 4 5 gaussdb=# SELECT least('HARRY','HARRIOT','HAROLD'); least -------- HAROLD (1 row) 备注:不支持对xml数据类型的操作。 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下: 如果参数中有任意一个参数的值为null,函数返回null。 如果第一个参数是数值类型,函数将第一个参数和其他参数都转换为numeric类型,然后进行比较,对于不能转换的,提示出错信息;第一个参数是其他类型的,函数将其他参数都转换为第一个参数的类型进行比较,对于不能转换的,提示出错信息。 EMPTY_BLOB() 描述:使用EMPTY_BLOB在INSERT或UPDATE语句中初始化一个BLOB变量,取值为NULL。 返回值类型:BLOB 示例: 1 2 3 4 5 6 --新建表 gaussdb=# CREATE TABLE blob_tb(b blob,id int) DISTRIBUTE BY REPLICATION; --插入数据 gaussdb=# INSERT INTO blob_tb VALUES (empty_blob(),1); --删除表 gaussdb=# DROP TABLE blob_tb; 备注:使用DBE_LOB.GET_LENGTH求得的长度为0。 EMPTY_CLOB() 描述:使用EMPTY_CLOB在INSERT或UPDATE语句中初始化一个CLOB变量,取值为空。 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s1的情况下有效。 返回值类型:CLOB 示例: 1 2 3 4 5 6 --新建表 gaussdb=# CREATE TABLE clob_tb(c clob,id int); --插入数据 gaussdb=# INSERT INTO clob_tb VALUES (empty_clob(),1); --删除表 gaussdb=# DROP TABLE clob_tb; 备注:使用DBE_LOB.GET_LENGTH求得的长度为0。 lnnvl(condition) 描述:lnnvl用于某个查询语句的where子句中,如果条件为true就返回false,如果条件为unknown或者false,就返回true。 condition:必须为逻辑表达式。但不能用于复合条件如and、or或者between。 返回类型:bool 示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 --新建表 gaussdb=# CREATE TABLE student_demo (name VARCHAR2(20), grade NUMBER(10,2)); CREATE TABLE --插入数据 gaussdb=# INSERT INTO student_demo VALUES ('name0',0); INSERT 0 1 gaussdb=# INSERT INTO student_demo VALUES ('name1',1); INSERT 0 1 gaussdb=# INSERT INTO student_demo VALUES ('name2',2); INSERT 0 1 --调用lnnvl gaussdb=# SELECT * FROM student_demo WHERE LNNVL(name = 'name1'); name | grade -------+------- name0 | 0.00 name2 | 2.00 (2 rows) --删除表 gaussdb=# drop table student_demo; DROP TABLE 此函数在ORA兼容模式数据库中且参数a_format_version值为10c和a_format_dev_version值为s2的情况下,才支持lnnvl函数。
  • 数据库逻辑结构图 集群的每个DN负责存储数据,其存储介质也是磁盘,本节主要从逻辑视角介绍每个DN上都有哪些对象,以及这些对象之间的关系。另外介绍一下数据在不同节点的分布方式。数据库逻辑结构如图1所示。 图1 数据库逻辑结构图 Tablespace,即表空间,表空间是一个目录,集群中可以存在多个表空间,其中存储的是它所包含的数据库的各种物理文件。每个表空间可以对应多个Database。 Database,即数据库,用于管理各类数据对象,各数据库间相互隔离。数据库管理的对象可分布在多个Tablespace上。 Datafile Segment,即数据文件,通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。 Table,即表,每张表只能属于一个数据库,也只能对应到一个Tablespace。每张表对应的数据文件必须在同一个Tablespace中。 Block,即数据块,是数据库管理的基本单位,默认大小为8KB。 数据在不同的DN上有四种分布方式,可以在建表的时候指定:REPLICATION、HASH、RANGE、LIST。 父主题: 数据库系统概述
  • MY_TAB_HISTOG RAM S MY_TAB_HISTOGRAMS系统视图显示当前用户拥有的表或视图的直方图信息。所有用户都可以访问该视图。该视图同时存在于pg_catalog和sys schema下。 名称 类型 描述 table_name character varying(128) 表名。 column_name character varying(4000) 列名。 endpoint_number numeric 直方图的桶号。 endpoint_value numeric 暂不支持,值为NULL。 endpoint_actual_value character varying(4000) 桶端点的实际值。 endpoint_actual_value_raw raw 暂不支持,值为NULL。 endpoint_repeat_count numeric 暂不支持,值为NULL。 scope character varying(7) 暂不支持,值为SHARED。 父主题: 系统视图
  • SUMMARY_STAT_USER_INDEXES 显示集群内所有Schema中用户自定义普通表的索引状态统计信息(在CN节点使用,对每个节点的用户自定义普通表的索引状态信息汇总求和)。 表1 SUMMARY_STAT_USER_INDEXES字段 名称 类型 描述 schemaname name 索引所在的Schema名。 relname name 索引的表名。 indexrelname name 索引名。 idx_scan numeric 该索引上执行的索引扫描次数。 idx_tup_read numeric 该索引上扫描返回的索引项数。 idx_tup_fetch numeric 使用该索引的简单索引扫描在原表中抓取的活跃行数。 父主题: Object
  • PG_STATIO_USER_TABLES PG_STATIO_USER_TABLES视图显示命名空间中所有用户关系表的I/O状态信息。 表1 PG_STATIO_USER_TABLES字段 名称 类型 描述 relid oid 表OID。 schemaname name 该表的模式名。 relname name 表名。 heap_blks_read bigint 从该表中读取的磁盘块数。 heap_blks_hit bigint 该表命中缓存数。 idx_blks_read bigint 从表中所有索引读取的磁盘块数。 idx_blks_hit bigint 表中所有索引命中缓存数。 toast_blks_read bigint 从该表的TOAST表读取的磁盘块数(如果存在)。 toast_blks_hit bigint 该表的TOAST表命中缓存数(如果存在)。 tidx_blks_read bigint 从该表的TOAST表索引读取的磁盘块数(如果存在)。 tidx_blks_hit bigint 该表的TOAST表索引命中缓存数(如果存在)。 父主题: 系统视图
  • ADM_DATA_FILES ADM_DATA_FILES视图显示关于数据库文件的描述。默认只有系统管理员权限才可以访问此视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 ADM_DATA_FILES字段 名称 类型 描述 tablespace_name name 文件所属的表空间的名称。 bytes double precision 文件的字节长度。 父主题: 系统视图
  • 返回值 SQL_SUC CES S:表示调用正确。 SQL_SUCCESS_WITH_INFO:表示会有一些警告信息。 SQL_NEED_DATA:表示在执行SQL语句前没有提供足够的参数。 SQL_ERROR:表示比较严重的错误,如:内存分配失败、建立连接失败等。 SQL_INVALID_HANDLE:表示调用无效句柄。其他API的返回值同理。 SQL_STILL_EXECUTING:表示语句正在执行。 SQL_NO_DATA:表示SQL语句不返回结果集。
  • 示例 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 gaussdb=# CREATE OR REPLACE PROCEDURE proc_case_branch(pi_result in integer, pi_return out integer) AS BEGIN CASE pi_result WHEN 1 THEN pi_return := 111; WHEN 2 THEN pi_return := 222; WHEN 3 THEN pi_return := 333; WHEN 6 THEN pi_return := 444; WHEN 7 THEN pi_return := 555; WHEN 8 THEN pi_return := 666; WHEN 9 THEN pi_return := 777; WHEN 10 THEN pi_return := 888; ELSE pi_return := 999; END CASE; raise info 'pi_return : %',pi_return ; END; / CREATE PROCEDURE gaussdb=# CALL proc_case_branch(3,0); INFO: pi_return : 333 pi_return ----------- 333 (1 row) --删除存储过程 gaussdb=# DROP PROCEDURE proc_case_branch; DROP PROCEDURE
  • WLM_USER_RESOURCE_RUNTIME WLM_USER_RESOURCE_RUNTIME视图显示所有用户资源使用情况,需要使用管理员用户进行查询。此视图在GUC参数“use_workload_manager”为“on”时才有效。 表1 WLM_USER_RESOURCE_RUNTIME字段 名称 类型 描述 username name 用户名。 used_memory integer 正在使用的内存大小,单位MB。 total_memory integer 可以使用的内存大小,单位MB。值为0表示未限制最大可用内存,其限制取决于数据库最大可用内存。 used_cpu integer 正在使用的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表示未限制最大下盘空间。 父主题: Workload Manager
  • 什么是SQL SQL是用于访问和处理数据库的标准计算机语言。 SQL提供了各种任务的语句,包括: 查询数据。 在表中插入、更新和删除行。 创建、替换、更改和删除对象。 控制对数据库及其对象的访问。 保证数据库的一致性和完整性。 SQL语言由用于处理数据库和数据库对象的命令和函数组成。该语言还会强制实施有关数据类型、表达式和文本使用的规则。因此在SQL参考章节,除了SQL语法参考外,还介绍了有关数据类型、表达式、函数和操作符等信息。
  • 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 1999年,ISO/IEC 9075:1999,SQL:1999 2003年,ISO/IEC 9075:2003,SQL:2003 2011年,ISO/IEC 9075:2011,SQL:2011 2016年,ISO/IEC 9075:2016,SQL:2016 2019年,ISO/IEC 9075:2019,SQL:2019
  • PLAN_TABLE PLAN_TABLE显示用户通过执行EXPLAIN PLAN收集到的计划信息。计划信息的生命周期是session级别,session退出后相应的数据将被清除。同时不同session和不同user间的数据是相互隔离的。该视图同时存在PG_CATALOG和SYS schema下。 表1 PLAN_TABLE字段 名称 类型 描述 statement_id character varying(30) 用户输入的查询标签。 plan_id bigint 查询标识。 id integer 查询生成的计划中的每一个执行算子的编号。 operation character varying(30) 计划中算子的操作描述。 options character varying(255) 操作选项。 object_name name 操作对应的对象名,非查询中使用到的对象别名。来自于用户定义。 object_type character varying(30) 对象类型。 object_owner name 对象所属schema,来自于用户定义。 projection character varying(4000) 操作输出的列信息。 cost double precision 优化器对算子估算的执行代价。 cardinality double precision 优化器对算子估算的结果行数。 remarks character varying(4000) 暂不支持,值为NULL。 timestamp date 暂不支持,值为NULL。 object_node character varying(128) 暂不支持,值为NULL。 object_alias character varying(261) 暂不支持,值为NULL。 object_instance numeric 暂不支持,值为NULL。 optimizer character varying(255) 暂不支持,值为NULL。 search_columns numeric 暂不支持,值为NULL。 parent_id numeric 暂不支持,值为NULL。 depth numeric 暂不支持,值为NULL。 position numeric 暂不支持,值为NULL。 bytes numeric 暂不支持,值为NULL。 other_tag character varying(255) 暂不支持,值为NULL。 partition_start character varying(255) 暂不支持,值为NULL。 partition_stop character varying(255) 暂不支持,值为NULL。 partition_id numeric 暂不支持,值为NULL。 other character varying 暂不支持,值为NULL。 other_xml clob 暂不支持,值为NULL。 distribution character varying(20) 暂不支持,值为NULL。 cpu_cost numeric 暂不支持,值为NULL。 io_cost numeric 暂不支持,值为NULL。 temp_space numeric 暂不支持,值为NULL。 access_predicates character varying(4000) 暂不支持,值为NULL。 filter_predicates character varying(4000) 暂不支持,值为NULL。 time numeric 暂不支持,值为NULL。 qblock_name character varying(128) 暂不支持,值为NULL。 object_type取值范围为PG_CLASS中定义的relkind类型(TABLE普通表,INDEX索引,SEQUENCE序列,VIEW视图,TOASTVALUE TOAST表)和计划使用到的rtekind(SUBQUERY, JOIN, FUNCTION, VALUES, CTE, REMOTE_QUERY)。 object_owner对于RTE来说是计划中使用的对象描述,非用户定义的类型不存在object_owner。 statement_id、object_name、object_owner、projection字段内容遵循用户定义的大小写存储,其它字段内容采用大写存储。 支持用户对PLAN_TABLE进行SELECT和DELETE操作,不支持其它DML操作。 父主题: 系统视图
  • V$SYSTEM_EVENT V$SYSTEM_EVENT视图显示有关事件总等待的信息(自实例启动后各个等待事件的概括)。默认只有系统管理员权限才可以访问此系统视图,普通用户需要授权才可以访问。该视图同时存在于PG_CATALOG和SYS Schema下。 表1 V$SYSTEM_EVENT字段 名称 类型 描述 event character varying(64) 等待事件的名称。 total_waits numeric 等待事件的总次数。 total_timeouts numeric 事件的超时总数。 time_waited numeric 等待事件的总时间(以百分之一秒为单位)。 average_wait numeric 等待事件的平均时间(以百分之一秒为单位)。 time_waited_micro numeric 等待事件的总时间(以微秒为单位)。 total_waits_fg numeric 暂不支持,值为NULL。 total_timeouts_fg numeric 暂不支持,值为NULL。 time_waited_fg numeric 暂不支持,值为NULL。 average_wait_fg numeric 暂不支持,值为NULL。 time_waited_micro_fg numeric 暂不支持,值为NULL。 event_id numeric 暂不支持,值为NULL。 wait_class_id numeric 暂不支持,值为NULL。 wait_class# numeric 暂不支持,值为NULL。 wait_class character varying(64) 等待事件的等待类名称。 con_id numeric 暂不支持,值为0。 父主题: 系统视图
  • 注意事项 序列的所有者或者被授予了序列ALTER权限的用户或者被授予了ALTER ANY SEQUENCE权限的用户才能执行ALTER SEQUENCE命令,系统管理员默认拥有该权限。但要修改序列的所有者,当前用户必须是该序列的所有者或者系统管理员,且该用户是新所有者角色的成员。 当前版本仅支持修改拥有者、归属列和最大值。若要修改其他参数,可以删除重建,并用Setval函数恢复当前值。 ALTER SEQUENCE MAXVALUE不支持在事务、函数和存储过程中使用。 修改序列的最大值后,会清空该序列在所有会话的cache。 ALTER SEQUENCE会阻塞nextval、setval、currval和lastval的调用、
  • 参数说明 name 将要修改的序列名称。 IF EXISTS 当序列不存在时使用该选项不会出现错误消息,仅有一个通知。 MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE 执行序列的最大值。新修改的最大值必须大于当前gtm存储的最大值;如果没有指定,将保持原有的最大值。 取值范围:(gtm_last_value, 263-1]。 OWNED BY 将序列和一个表的指定字段进行关联。这样,在删除那个字段或其所在表的时候会自动删除已关联的序列。 如果序列已经和表有关联后,使用这个选项后新的关联关系会覆盖旧的关联。 关联的表和序列的所有者必须是同一个用户,并且在同一个模式中。 使用OWNED BY NONE将删除任何已经存在的关联。 new_owner 序列新所有者的用户名。用户要修改序列的所有者,必须是新角色的直接或者间接成员,并且那个角色必须有序列所在模式上的CREATE权限。
  • 示例 1 2 3 4 5 6 7 8 9 10 11 12 --创建一个名为serial的递增序列,从101开始。 gaussdb=# CREATE SEQUENCE serial START 101; --创建一个表,定义默认值。 gaussdb=# CREATE TABLE t1(c1 bigint default nextval('serial')); --将序列serial的归属列变为t1.c1。 gaussdb=# ALTER SEQUENCE serial OWNED BY t1.c1; --删除序列 gaussdb=# DROP SEQUENCE serial cascade; gaussdb=# DROP TABLE t1;
  • 语法格式 修改序列归属列和最大值。 1 2 3 ALTER SEQUENCE [ IF EXISTS ] name [MAXVALUE maxvalue | NO MAXVALUE | NOMAXVALUE] [ OWNED BY { table_name.column_name | NONE } ] ; 修改序列的拥有者。 1 ALTER SEQUENCE [ IF EXISTS ] name OWNER TO new_owner;
共100000条
提示

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