# 数据仓库服务 DWS > 极致性能、稳定、按需扩展的数据仓库 ## SQL语法参考(9.1.0.x) - [DWS SQL概述](https://support.huaweicloud.com/sqlreference-dws/dws_06_0001.md): SQL是用于访问和处理数据库的标准计算机语言。SQL提供了各种任务的语句,包括:查询数据。在表中插入、更新和删除行。创建、替换、更改和删除对象。控制对数据库及其对象的访问。保证数据库的一致性和完整性。SQL语言由用于处理数据库和数据库对象的命令和函数组成。该语言还会强制实施有关数据类型、表达式和文本使用的规则。因此在SQL参考章节,除了S - [与PostgreSQL的差异](https://support.huaweicloud.com/sqlreference-dws/dws_06_0002.md): DWS与PostgreSQL的差异基于PostgreSQL 9.X版本整理,具体差异如下:DWS gsql相较于PostgreSQL psql做了如下安全加固变更:取消通过元命令\password设置用户密码。新增元命令\i+、 \ir+、\include_relative+和输入输出参数-k,以支持给导入导出的文件加密。取消打印命令行历 - [DWS SQL语法格式说明](https://support.huaweicloud.com/sqlreference-dws/dws_06_0003.md): 为了方便对语法使用的理解,在文档中对SQL语法文本按如下格式进行表述。 - [关键字](https://support.huaweicloud.com/sqlreference-dws/dws_06_0007.md): SQL里有保留关键字和非保留关键字之分。根据标准,保留关键字绝不能用做其他标识符。非保留关键字只是在特定的环境里有特殊的含义,而在其他环境里是可以用做标识符的,即便如此,也尽量避免使用非保留关键字。可以使用SELECT * FROM pg_get_keywords();查询DWS的关键字。举例:“AUTHORIZATION”为保留关键字, - [数值类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0009.md): 数值类型也叫数字类型。由1、2、4或8字节的整数以及4或8字节的浮点数和可选精度小数组成。对应的操作符和相关函数,请参见数学函数和运算符。DWS支持的数值类型按精度可以分为:整数类型,任意精度型,浮点类型和序列整型。TINYINT、SMALLINT、INTEGER、BINARY_INTEGER和BIGINT类型存储整个数值(不带有小数部分 - [货币类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0010.md): 货币类型存储带有固定小数精度的货币金额。表1中显示的范围假设有两位小数。可以以任意格式输入,包括整型、浮点型或者典型的货币格式(如“$1,000.00”)。根据区域字符集,输出一般是最后一种形式。numeric,int和bigint类型的值可以转化为money类型。如果从real和double precision类型转换到money类型, - [布尔类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0011.md): “真”值的有效文本值是:TRUE、't'、'true'、'y'、'yes'、'1'。“假”值的有效文本值是:FALSE、'f'、'false'、'n'、'no'、'0'。使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。显示用字母t和f输出boolean值。 - [字符类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0012.md): DWS支持的字符类型请参见表1。字符串操作符和相关的内置函数请参见字符串处理函数和操作符。除了每列的大小限制以外,每个元组的总大小也不可超过1GB-8203B(即1073733621B)。对于字符串数据,建议使用变长字符串数据类型,并指定最大长度。请务必确保指定的最大长度大于需要存储的最大字符数,避免超出最大长度时出现字符截断现象。除非明 - [二进制类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0013.md): DWS支持的二进制类型请参见表1。除了每列的大小限制以外,每个元组的总大小也不可超过1G-8203字节。示例 - [日期/时间类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0014.md): DWS支持的日期/时间类型请参见表1。该类型的操作符和内置函数请参见时间日期函数和操作符。如果其他的数据库时间格式和DWS的时间格式不一致,可通过修改配置参数DateStyle的值来保持一致。示例:日期和时间的输入几乎可以是任何合理的格式,包括ISO-8601格式、SQL-兼容格式、传统POSTGRES格式或者其它的形式。系统支持按照日、 - [几何类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0015.md): DWS支持的几何类型请参见表1。最基本的类型:点,是其它类型的基础。DWS提供了一系列的函数和操作符用来进行各种几何计算,如拉伸、转换、旋转、计算相交等。详细信息请参考几何函数和操作符。点是几何类型的基本二维构造单位。用下面语法描述point的数值:x和y是用浮点数表示的点的坐标。点输出使用第一种语法。线段(lseg)是用一对点来代表的。 - [网络地址类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0016.md): DWS提供用于存储IPv4、IPv6、MAC地址的数据类型。网络地址类型提供输入错误检查和特殊的操作和功能(请参见网络地址函数和操作符),比纯文本类型更适合存储IPv4、IPv6、MAC地址的数据类型。在对inet或cidr数据类型进行排序的时候,IPv4地址总是排在IPv6地址前面,包括那些封装或者是映射在IPv6地址里的IPv4地址, - [位串类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0017.md): 位串就是一串1和0的字符串。它们可以用于存储位掩码。DWS支持两种位串类型:bit(n)和bit varying(n),其中n是一个正整数。bit类型的数据必须准确匹配长度n,如果存储短或者长的数据都会报错。bit varying类型的数据是最长为n的变长类型,超过n的类型会被拒绝。一个没有长度的bit等效于bit(1),没有长度的bit - [文本搜索类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0018.md): DWS提供了tsvector和tsquery两种数据类型用于支持全文检索。tsvector类型表示为文本搜索优化的文件格式,tsquery类型表示文本查询。tsvector类型表示一个检索单元,通常是一个数据库表中的一行文本字段或者这些字段的组合。tsvector类型的值是唯一分词的分类列表,把一句话的词格式化为不同的词条,在进行分词处理 - [UUID类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0019.md): UUID:通用唯一识别码(Universally Unique Identifier)是用于计算机体系中以识别信息的一个128位标识符。UUID的作用是让分布式系统中的所有元素都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。很多应用场景需要一个ID,仅用来标识一个对象。常见的例子有数据库表的ID字段。另一个例子是前端的各种 - [JSON类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0020.md): JSON数据类型可以用来存储JSON(JavaScript Object Notation)数据。可以是单独的一个标量,也可以是一个数组,也可以是一个键值对象,其中数组和对象可以统称容器(container):标量(scalar):单一的数字、bool、string、null都可以叫做标量。数组(array):[]结构,里面存放的元素可以 - [HLL数据类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0021.md): HLL(HyperLoglog)是统计数据集中唯一值个数的高效近似算法。它有着计算速度快,节省空间的特点,不需要直接存储集合本身,而是存储一种名为HLL的数据结构。每当有新数据加入进行统计时,只需要把数据经过哈希计算并插入到HLL中,最后根据HLL就可以得到结果。HLL与其他算法的比较请参见表1。HLL在计算速度和所占存储空间上都占优势。 - [对象标识符类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0022.md): DWS在内部使用对象标识符(OID)作为各种系统表的主键。系统不会给用户创建的表增加一个OID系统字段,OID类型代表一个对象标识符。目前OID类型用一个四字节的无符号整数实现。因此不建议在创建的表中使用OID字段做主键。OID类型:主要作为数据库系统表中字段使用。示例:OID别名类型REGCLASS:主要用于对象OID值的简化查找。示例 - [伪类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0023.md): DWS数据类型中包含一系列特殊用途的类型,这些类型按照类别被称为伪类型。伪类型不能作为字段的数据类型,但是可以用于声明函数的参数或者结果类型。当一个函数不仅仅是简单地接受并返回某种SQL数据类型,伪类型能起到很大的作用。表1列出了所有的伪类型。声明用C编写的函数(不管是内置的还是动态装载的)都可以接受或者返回任何这样的伪数据类型。当伪类型 - [列存表支持的数据类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0024.md): 列存表支持的数据类型如表1所示。其他未列举的数据类型,暂不支持。 - [XML类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0025.md): XML数据类型可以被用来存储XML(eXtensible Markup Language)数据。XML数据也可以存储为text类型,但是XML数据类型的优势在于会检查每个存储的值是不是结构良好的XML值。XML可以存储由XML标准定义的格式良好的文档,以及由XML标准中定义的“内容”片段,内容片段中可以有多个顶级元素或字符节点。XML类型 - [常量与宏](https://support.huaweicloud.com/sqlreference-dws/dws_06_0026.md): DWS支持的常量和宏请参见表1。 - [逻辑操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0028.md): 常用的逻辑操作符有AND、OR和NOT,其运算结果有三个值,分别为TRUE、FALSE和NULL,其中NULL代表未知。运算优先级顺序为:NOT>AND>OR。运算规则请参见表1,表中的a和b代表逻辑表达式。操作符AND和OR具有交换性,即交换左右两个操作数,不影响其结果。 - [比较操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0029.md): 比较操作符可用于所有相关的数据类型,并返回布尔类型数值。所有比较操作符都是双目操作符,被比较的两个数据类型必须是相同的数据类型或者是可以进行隐式转换的类型。例如1<2<3这样的表达式为非法的,因为布尔值和3之间不能做比较。DWS提供的比较操作符请参见表1。 - [二进制字符串函数和操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0031.md): SQL定义了一些二进制字符串函数,这些函数使用关键字而不是逗号来分隔参数。另外,DWS提供了函数调用所使用的常用语法。描述:二进制字符串中的字节数。返回值类型:integer示例:描述:替换子串。返回值类型:bytea示例:描述:特定子字符串的位置。返回值类型:integer示例:描述:截取子串。返回值类型:bytea示例:截取时间,获取 - [位串函数和操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0032.md): 除了常用的比较操作符之外,还可以使用以下的操作符。&,|和#的位串操作数必须等长。在位移的时候,保留原始的位串长度(并以0填充)。描述:位串之间进行连接。示例:描述:位串之间进行“与”操作。示例:描述:位串之间进行“或”操作。示例:描述:位串之间如果不一致进行“或”操作。如果两个位串中对应位置都为1或者0,则该位置返回为0。示例:描述:位 - [模式匹配操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0033.md): 数据库提供了三种实现模式匹配的方法:SQL LIKE操作符、SIMILAR TO操作符和POSIX-风格的正则表达式。除了这些基本的操作符外,还有一些函数可用于提取或替换匹配子串并在匹配位置分离一个串。判断字符串是否能匹配上LIKE后的模式字符串。如果字符串与提供的模式匹配,则LIKE表达式返回为真(NOT LIKE表达式返回假),否则返 - [类型转换函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0036.md): 描述:类型转换函数,将x转换成y指定的类型。示例:描述:类型转换函数,将x转换成y指定的类型。该函数仅8.2.0及以上集群版本支持。示例:描述:将x转换成给定的type类型值,若转换失败且当前类型转换为DWS允许的转换,则返回NULL,否则报错。该函数仅8.2.0及以上集群版本支持。示例:描述:将一个十六进制构成的字符串转换为二进制。返回 - [UUID函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0040.md): UUID函数表示可以用于生成UUID类型(请参考UUID类型)数据的函数。描述:生成一个UUID类型的序列号。返回类型:UUID示例:uuid_generate_v1函数根据时间信息、集群节点编号和生成该序列的线程号生成UUID,该UUID在单个集群内是全局唯一的,但在多个集群间的时间信息、集群节点编号、线程号和时钟序列仍然存在同时相等的 - [SEQUENCE函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0043.md): 序列函数为用户从序列对象中获取后续的序列值提供了简单的多用户安全的方法。递增序列并返回新值。为了避免从同一个序列获取值的并发事务被阻塞, nextval操作不会回滚;也就是说,一旦获取了一个值,它就会被认为已被使用,并且不会再次返回。 即使该操作处于事务中,当事务随后中断,或者调用查询最终没有使用该值,也会出现这种情况。这种情况将在指定值 - [聚集函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0046.md): 聚集函数是数据库中常用的函数,它将多行数据合并计算为单个统计值,帮助用户快速从大量数据中获取关键数据概览,如总数、平均数、最大值和去重计数等,广泛应用于数据报表和业务分析等场景。描述:计算所有输入行的expression总和。返回类型:通常情况下输入数据类型和输出数据类型是相同的,但以下情况会发生类型转换:对于SMALLINT或INT输入 - [窗口函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0047.md): 普通的聚集函数将多行数据聚集为一行结果,而窗口函数可以跨行计算,并将计算结果填充到每一行中。窗口函数基于查询结果集的子集(即“窗口”)进行计算,实现了与聚集函数类似的聚集功能,因此聚集函数也可以作为窗口函数使用。 窗口函数可以扫描所有的行的同时,将原始数据和聚集计算结果一并输出。列存表目前只支持窗口函数rank(expression)、r - [安全函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0048.md): 描述:显示当前账户距离密码过期的时间。密码过期后提示用户修改密码。与GUC参数password_effect_time相关。返回值类型:interval示例:描述:显示当前账户距离密码过期的时间。密码过期后用户无法登录数据库。与创建用户的DDL语句PASSWORD EXPIRATION period相关,函数返回值大于等于-1,如果创建用 - [条件表达式函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0050.md): 描述:返回参数列表中第一个非NULL的参数值。COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。示例:如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。它常用于在显示数据时用缺省值替换NULL。和CASE表达式一样 - [配置设置函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0053.md): 配置设置函数是用于查询及修改运行时配置参数的函数。描述:当前的设置值。返回值类型:text备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如:描述:用于读取全局变量当前的设置值。返回值类型:text备注:read_global_var用于以查询形式获取global_s - [通用文件访问函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0054.md): 通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有数据库集群目录和log_directory目录里面的文件可以访问。使用相对路径访问集群目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库系统管理员才能使用这些函数。描述:列出目录中的文件。返回值类型:setof text备注:pg_ls - [服务器信号函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0055.md): 服务器信号函数向其他服务器进程发送控制信号。只有系统管理员才能使用这些函数。描述:取消一个后端的当前查询。返回值类型:boolean备注:pg_cancel_backend向由pid标识的后端进程发送一个查询取消(SIGINT)信号。一个活动的后端进程的PID可以从pg_stat_activity视图的pid字段找到,或者在服务器上用ps - [快照同步函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0057.md): 快照同步函数是导出当前快照的标识符。描述:创建性能数据快照。返回值类型:text该函数只有数据库管理员SYSADMIN才可以执行,非管理员执行会提示无权限。该函数只能在CN上执行,在DN上执行会返回:“WDR snapshot can only be created on coordinator.”。执行该函数前需确认enable_wdr - [咨询锁函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0059.md): 咨询锁函数用于管理咨询锁(Advisory Lock),此类函数目前仅内部使用。描述:获取会话级别的排它咨询锁。返回值类型:void备注:pg_advisory_lock锁定应用程序定义的资源,该资源可以用一个64位或两个不重叠的32位键值标识。如果已经有另外的会话锁定了该资源,则该函数将阻塞到该资源可用为止。这个锁是排它的。多个锁定请求 - [复制函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0061.md): 复制函数是系统为实现高可用在各个实例间进行日志同步或数据同步所提供的统计或操作方法。除统计查询外的复制函数为内部调用函数,不建议用户直接使用。描述:创建逻辑复制槽。该函数在9.1.0.200及之后版本已废弃,为兼容历史版本功能保留该函数。参数说明:slot_name流复制槽名称。取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的 - [其它函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0062.md): 描述:检查连接池中缓存的连接数据是否与pgxc_node一致。8.3.0及以上集群版本中该参数已废弃。返回值类型:boolean描述:更新连接池中缓存的连接信息。返回值类型:boolean描述:清理CN上无效的后台线程(这些后台线程持有无效的pooler连接,这里无效的pooler连接指的是连接到当前DN备实例的连接)。返回值类型:rec - [资源管理函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0063.md): 资源管理模块相关函数介绍。描述:作业切换资源池函数,9.1.0及以上集群版本支持。入参要求resource_pool_name必须小于64字符。调用该函数后,如果作业处于排队阶段,作业切到新资源池会进行判断是否需要启动运行;如果作业处于运行阶段,作业切到新资源池可以启动原资源池的排队作业,同时受到新资源池的CPU管控限制。该函数同时支持静 - [数据脱敏函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0064.md): 数据脱敏函数提供一系列不同脱敏形式的函数接口,可以覆盖常见的脱敏场景。通常结合数据脱敏语法,与脱敏列绑定使用,不推荐直接作用在查询语句上。描述:不作任何脱敏处理,仅内部测试用。返回值类型:与入参column_name数据类型相同描述:全脱敏成固定值。脱敏列的数据类型不同,脱敏的固定值不同。返回值类型:与入参column_name数据类型相 - [统计信息函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0065.md): 统计信息函数根据访问对象分为两种类型:针对某个数据库进行访问的函数,以数据库中每个表或索引的OID作为参数,标识需要报告的数据库;针对某个服务器进行访问的函数,以一个服务器进程号为参数,其范围从1到当前活跃服务器的数目。对于全局临时表,函数入参是表在pg_class中的OID,函数返回当前会话数据的统计信息,所以同一张全局临时表在不同会话 - [触发器函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0066.md): 描述:获取触发器的定义信息。参数:待查触发器的OID。返回值类型:text示例:描述:获取触发器的定义信息。参数:待查触发器的OID及是否以pretty方式展示。返回值类型:text仅在创建trigger时指定WHEN条件的情况下,布尔类型参数才生效。示例: - [调用栈记录函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0068.md): DWS通过pv_memory_profiling(type int)和环境变量MALLOC_CONF,控制gaussdb进程中malloc等内存分配调用栈记录模块开启关闭、以及进程级内存调用栈输出等,使用流程如下图所示:环境变量MALLOC_CONF用于控制监控模块是否开启,位于${BIGDATA_HOME}/mppdb/.mppdbgs - [简单表达式](https://support.huaweicloud.com/sqlreference-dws/dws_06_0070.md): 逻辑表达式的操作符和运算规则,请参见逻辑操作符。常用的比较操作符,请参见比较操作符。除比较操作符外,还可以使用以下句式结构:BETWEEN操作符a BETWEEN x AND y等效于a >= x AND a <= ya NOT BETWEEN x AND y等效于a < x OR a > ya BETWEEN x AND - [条件表达式](https://support.huaweicloud.com/sqlreference-dws/dws_06_0071.md): 在执行SQL语句时,可通过条件表达式筛选出符合条件的数据。条件表达式主要有以下几种:CASECASE表达式是条件表达式,类似于其他编程语言中的CASE语句。CASE表达式的语法图请参考图1。case::=CASE子句可以用于合法的表达式中。condition是一个返回BOOLEAN数据类型的表达式:如果结果为真,CASE表达式的结果就是符 - [子查询表达式](https://support.huaweicloud.com/sqlreference-dws/dws_06_0072.md): 子查询表达式主要有以下几种:EXISTS/NOT EXISTSEXISTS/NOT EXISTS的语法图请参见图1。EXISTS/NOT EXISTS::=EXISTS的参数是一个任意的SELECT语句,或者说子查询。系统对子查询进行运算以判断它是否返回行。如果它至少返回一行,则EXISTS结果就为"真";如果子查询没有返回任何行, EX - [数组表达式](https://support.huaweicloud.com/sqlreference-dws/dws_06_0073.md): expressionIN(value [, ...])右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果列表中的内容符合左侧表达式的结果,则IN的结果为true。如果没有相符的结果,则IN的结果为false。示例如下:如果表达式结果为null,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空 - [行表达式](https://support.huaweicloud.com/sqlreference-dws/dws_06_0074.md): 语法:row_constructor operator row_constructor两边都是一个行构造器,两行值必须具有相同数目的字段,每一行都进行比较,行比较允许使用=,<>,<,<=,>=等操作符,或其中一个相似的语义符。=<>和别的操作符使用略有不同。如果两行值的所有字段都是非空并且相等,则认为两行是相等的;如果两行值的任意字段为 - [概述](https://support.huaweicloud.com/sqlreference-dws/dws_06_0076.md): 在SQL语言中,每个数据都与一个决定其行为和用法的数据类型相关。DWS提供一个可扩展的数据类型系统,该系统比其它SQL实现更具通用性和灵活性。因而,DWS中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式。DWS扫描/分析器只将词法元素分解成五个基本种类:整数、浮点数、字符串、标识符和关键字。大多数非数字类型首先表现为 - [操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0077.md): 从系统表pg_operator中选出要考虑的操作符。如果可以找到一个参数类型以及参数个数都一致的操作符,那么这个操作符就是最终使用的操作符。如果找到了多个备选的操作符,将从中选择一个最合适的。寻找最优匹配。丢弃输入类型不匹配以及无法隐式转换成匹配的候选操作符。unknown文本在这种情况下可以转换成任何类型。如果只剩下一个候选操作符,则使 - [函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0078.md): 从系统表pg_proc中选择所有可能被选到的函数。如果使用了一个不带模式修饰的函数名称,那么认为该函数是那些在当前搜索路径中的函数。如果给出一个带修饰的函数名,那么只考虑指定模式中的函数。如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。查找和输入参 - [值存储](https://support.huaweicloud.com/sqlreference-dws/dws_06_0079.md): 查找与目标字段准确的匹配。试着将表达式直接转换成目标类型。如果已知这两种类型之间存在一个已登记的转换函数,那么直接调用该转换函数即可。如果表达式是一个未知类型文本,该文本字符串的内容将交给目标类型的输入转换过程。检查目标类型是否有长度转换。长度转换是一个从某类型到自身的转换。如果在pg_cast表里面找到一个,那么在存储到目标字段之前先在 - [UNION,CASE和相关构造](https://support.huaweicloud.com/sqlreference-dws/dws_06_0080.md): SQL UNION构造把不相同的数据类型进行匹配输出为统一的数据类型结果集。因为SELECT UNION语句中的所有查询结果必须在一列里显示出来,所以每个SELECT子句中的元素类型必须相互匹配并转换成一个统一的数据类型。类似地,一个CASE构造的结果表达式必须转换成统一的类型,这样整个case表达式会有一个统一的输出类型。同样的要求也存 - [全文检索概述](https://support.huaweicloud.com/sqlreference-dws/dws_06_0083.md): 文本搜索操作符在数据库中已存在多年。DWS为文本数据类型提供~、~*、LIKE和ILIKE操作符,但这些操作符缺乏现代信息系统所要求的许多必要属性,不过这一问题可以通过使用索引及词典进行解决。文本检索缺乏信息系统所要求的必要属性:没有语义支持,即使是英语。由于要识别派生词并不是那么容易,因此正则表达式也不能满足要求。如,satisfies - [文档概念](https://support.huaweicloud.com/sqlreference-dws/dws_06_0084.md): 文档是全文搜索系统的搜索单元,例如:杂志上的一篇文章或电子邮件消息。文本搜索引擎必须能够解析文档,而且可以存储父文档的关联词素(关键词)。后续,这些关联词素用来搜索包含查询词的文档。在DWS中,文档通常是一个数据库表中一行的文本字段,或者这些字段的可能组合(级联)。文档可能存储在多个表中或者需动态获取。换句话说,一个文档由被索引化的不同部 - [基本文本匹配](https://support.huaweicloud.com/sqlreference-dws/dws_06_0085.md): DWS的全文检索基于匹配算子@@,当一个tsvector(document)匹配到一个tsquery(query)时,则返回true。其中,tsvector(document)和tsquery(query)两种数据类型可以任意排序。正如上面例子表明,tsquery不仅是文本,且比tsvector包含的要多。tsquery包含已经标注化为词 - [分词器](https://support.huaweicloud.com/sqlreference-dws/dws_06_0086.md): 全文检索功能还可以做更多事情:忽略索引某个词(停用词),处理同义词和使用复杂解析,例如,不仅基于空格的解析。这些功能通过文本搜索分词器控制。DWS支持多语言的预定义的分词器,并且可以创建分词器(gsql的\dF命令显示了所有可用分词器)。在安装期间选择一个合适的分词器,并且在postgresql.conf中相应的设置default_tex - [搜索表](https://support.huaweicloud.com/sqlreference-dws/dws_06_0088.md): 在不使用索引的情况下也可以进行全文检索。一个简单查询:将body字段中包含science的每一行打印出来。DROP SCHEMA IF EXISTS tsearch CASCADE; CREATE SCHEMA tsearch; CREATE TABLE tsearch.pgweb(id int, body text, title t - [创建索引](https://support.huaweicloud.com/sqlreference-dws/dws_06_0089.md): 为了加速文本搜索,可以创建GIN索引。to_tsvector()函数有两个版本,只输一个参数的版本和输两个参数的版本。只输一个参数时,系统默认采用default_text_search_config所指定的分词器。创建索引时必须使用to_tsvector的两参数版本,否则索引内容可能不一致。只有指定了分词器名称的全文检索函数才可以在索引表 - [索引使用约束](https://support.huaweicloud.com/sqlreference-dws/dws_06_0090.md): 下面是一个使用索引的示例:该例子的关键点是表table1的同一个列c_text上建立了两个GIN索引:idx1和idx2,但这两个索引是在不同default_text_search_config的设置下建立的。该例子和同一张表的同一个列上建立普通索引的不同之处在于:GIN索引使用了不同的parser(即分隔符不同),那么idx1和idx2 - [解析文档](https://support.huaweicloud.com/sqlreference-dws/dws_06_0092.md): DWS中提供了to_tsvector函数把文档处理成tsvector数据类型。to_tsvector将文本文档解析为token,再将token简化到词素,并返回一个tsvector。其中tsvector中列出了词素及它们在文档中的位置。文档是根据指定的或默认的文本搜索分词器进行处理的。这里有一个简单的例子:通过以上例子可发现结果tsvec - [解析查询](https://support.huaweicloud.com/sqlreference-dws/dws_06_0093.md): DWS提供了函数to_tsquery和plainto_tsquery将查询转换为tsquery数据类型,to_tsquery提供比plainto_tsquery更多的功能,但对其输入要求更严格。to_tsquery从querytext中创建一个tsquery,querytext必须由布尔运算符& (AND),| (OR)和! (NOT)分 - [排序查询结果](https://support.huaweicloud.com/sqlreference-dws/dws_06_0094.md): 排序会根据查询内容评估文档的相关性,将最匹配的结果优先展示。DWS提供了两个预置的排序函数。函数考虑了词法,距离,和结构信息;也就是,考虑查询词在文档中出现的频率、紧密程度、以及出现的地方在文档中的重要性。然而,相关性的概念是模糊的,并且是跟应用强相关的。不同的应用程序可能需要额外的信息来排序,比如,文档的修改时间,内置的排序函数等。也可 - [高亮搜索结果](https://support.huaweicloud.com/sqlreference-dws/dws_06_0095.md): 搜索结果的理想显示是:列出每篇文档中与搜索相关的部分,并标识为什么与查询相关。搜索引擎能够显示标识了搜索词的文档片段。DWS提供了函数ts_headline支持这部分功能。ts_headline的输入是带有查询条件的文档,其返回文档中的摘录,在摘录中查询词是高亮显示的。用来解析文档的分词器由config参数指定。如果省略config,则使 - [处理tsvector](https://support.huaweicloud.com/sqlreference-dws/dws_06_0097.md): DWS提供了用来操作tsvector类型的函数和操作符。tsvector || tsvectortsvector连接操作符返回一个新的tsvector类型,它综合了两个tsvector中词素和位置信息,并保留词素的位置信息和权重标签。右侧的tsvector的起始位置位于左侧tsvector的最后位置,因此,新生成的tsvector几乎等同 - [处理查询](https://support.huaweicloud.com/sqlreference-dws/dws_06_0098.md): DWS提供了函数和操作符用来操作tsquery类型的查询。tsquery && tsquery返回两个给定查询tsquery的与结果。返回两个给定查询tsquery的与结果。tsquery || tsquery返回两个给定查询tsquery的或结果。返回两个给定查询tsquery的或结果。!! tsquery返回给定查询tsquery的非 - [查询重写](https://support.huaweicloud.com/sqlreference-dws/dws_06_0099.md): ts_rewrite函数族可以从tsquery中搜索一个特定的目标子查询,并在该子查询每次出现的地方都替换为另一个子查询。 实际上这只是通过字符串替换而得到的一个特定tsquery版本。目标子查询和替换查询组合起来可以被认为是一个重写规则。一组类似的重写规则可以为搜索提供强大的帮助。例如,可以使用同义词扩大搜索范围(例如,new york - [收集文献统计](https://support.huaweicloud.com/sqlreference-dws/dws_06_0100.md): 函数ts_stat可用于检查配置和查找候选停用词。sqlquery是一个包含SQL查询语句的文本,该SQL查询将返回一个tsvector。ts_stat执行SQL查询语句并返回一个包含tsvector中每一个不同的语素(词)的统计信息。返回信息包括:word text:词素。ndoc integer:词素在文档(tsvector)中的编号 - [解析器](https://support.huaweicloud.com/sqlreference-dws/dws_06_0101.md): 文本搜索解析器负责将原文档文本分解为多个token,并标识每个token的类型。这里的类型集由解析器本身定义。注意,解析器并不修改文本,它只是确定合理的单词边界。由于这一限制,人们更需要定制词典,而不是为每个应用程序定制解析器。目前DWS提供了四个内置的解析器,分别为pg_catalog.default/pg_catalog.ngram/ - [词典概述](https://support.huaweicloud.com/sqlreference-dws/dws_06_0103.md): 词典用于定义停用词(stop words),即全文检索时不搜索哪些词。词典还可以用于对同一词的不同形式进行规范化,这样同一个词的不同派生形式都可以进行匹配。规范化后的词称为词位(lexeme)。除了提高检索质量外,词的规范化和删除停用词可以减少文档tsvector格式的大小, 从而提高性能。词的规范化和删除停用词并不总是具有语言学意义,用 - [停用词](https://support.huaweicloud.com/sqlreference-dws/dws_06_0104.md): 停用词是很常见的词,几乎出现在每一个文档中,并且没有区分值。因此,在全文搜索的语境下可忽视它们。停用词处理逻辑和词典类型相关。例如,Ispell词典会先对标记进行规范化,然后再查看停用词表,而Snowball词典会最先检查输入标记是否为停用词。例如,每个英文文本包含像a和the的单词,因此没必要将它们存储在索引中。然而,停用词影响tsve - [Simple词典](https://support.huaweicloud.com/sqlreference-dws/dws_06_0105.md): Simple词典首先将输入标记转换为小写字母,然后检查停用词表。如果识别为停用词则返回空数组,即表示该标记会被丢弃。否则,输入标记的小写形式作为规范化后的lexeme返回。此外,Simple词典可通过设置参数Accept为false(默认值true),将非停用词报告为未识别,传递给后继词典继续处理。大多数词典的功能依赖于词典定义文件,词典 - [Synonym词典](https://support.huaweicloud.com/sqlreference-dws/dws_06_0106.md): Synonym词典用于定义、识别token的同义词并转化,不支持词组(词组形式的同义词可用Thesaurus词典定义,详细请参见Thesaurus词典)。Synonym词典可用于解决语言学相关问题,例如,为避免使单词"Paris"变成"pari",可在Synonym词典文件中定义一行"Paris paris",并将该词典放置在预定义的en - [Thesaurus词典](https://support.huaweicloud.com/sqlreference-dws/dws_06_0107.md): Thesaurus词典,也叫做分类词典(缩写为TZ),是一组定义了词以及词组间关系的集合,包括广义词(BT)、狭义词(NT)、首选词、非首选词、相关词等。根据词典文件中的定义,TZ词典用一个指定的短语替换对应匹配的所有短语,并且可选择保留原始短语进行索引。TZ词典实际上是Synonym词典的一个扩展,增加了短语支持。由于TZ词典需要识别短 - [Ispell词典](https://support.huaweicloud.com/sqlreference-dws/dws_06_0108.md): Ispell词典模板支持词法词典,它可以把一个词的各种语言学形式规范化成相同的词位。比如,一个Ispell英语词典可以匹配搜索词bank的词尾变化和词形变化,如banking、banked、banks、banks'和bank's等。DWS不提供任何预定义的Ispell类型词典或词典文件。dict文件和affix文件支持多种开源词典格式,包 - [Snowball词典](https://support.huaweicloud.com/sqlreference-dws/dws_06_0109.md): Snowball词典模板支持词干分析词典,基于Martin Porter的Snowball项目,内置有许多语言的词干分析算法。DWS中预定义有多种语言的Snowball词典,可通过系统表PG_TS_DICT查看预定义的词干分析词典以及支持的语言词干分析算法。无论是否可以简化,Snowball词典将标识所有输入为已识别,因此它应当被放置在词 - [配置示例](https://support.huaweicloud.com/sqlreference-dws/dws_06_0110.md): 文本搜索配置(Text Search Configuration),指定了将文档转换成tsvector过程中所必需的组件:解析器,用于把文本分解成标记token;词典列表,用于将每个token转换成词位lexeme。每次to_tsvector或to_tsquery函数调用时,都需要指定一个文本搜索配置来指定具体的处理过程。GUC参数def - [分词器测试](https://support.huaweicloud.com/sqlreference-dws/dws_06_0112.md): 函数ts_debug允许简单测试文本搜索分词器。ts_debug显示document的每个token信息,token是由解析器生成,由指定的词典进行处理。如果忽略对应参数,则使用config指定的分词器或者default_text_search_config指定的分词器。ts_debug为文本解析器标识的每个token返回一行记录。记录中 - [解析器测试](https://support.huaweicloud.com/sqlreference-dws/dws_06_0113.md): 函数ts_parse可以直接测试文本搜索解析器。ts_parse解析指定的document并返回一系列的记录,一条记录代表一个解析生成的token。每条记录包括标识token类型的tokid,及token文本。比如:ts_token_type返回一个表,这个表描述了指定解析器可以识别的每种token类型。对于每个token类型,表中给出了 - [词典测试](https://support.huaweicloud.com/sqlreference-dws/dws_06_0114.md): 函数ts_lexize用于进行词典测试。ts_lexize(dict regdictionary, token text) returns text[]如果输入的token可以被词典识别,那么ts_lexize返回词素的数组;如果token可以被词典识别但它是一个停用词,则返回空数组;如果是一个不可识别的词则返回NULL。比如:ts_le - [限制约束](https://support.huaweicloud.com/sqlreference-dws/dws_06_0115.md): DWS的全文检索功能当前限制约束是:每个分词长度必须小于2K字节。tsvector结构(分词+位置)的长度必须小于1兆字节。tsvector的位置值必须大于0,小于等于16,383。每个分词在文档中位置数必须小于256,若超过将舍弃后面的位置信息。tsquery中的关键字及对应运算符最大支持到32,768。 - [系统操作](https://support.huaweicloud.com/sqlreference-dws/dws_06_0116.md): DWS通过SQL语句执行不同的系统操作,比如:设置变量,显示执行计划和垃圾收集等操作。设置会话或事务中需要使用的各种参数,请参考SET。显示DWS为SQL语句规划的执行计划,请参考EXPLAIN。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。CHECKPOINT强制立即进行检查,而不是等到下一次调度时的检查点。请参考C - [事务管理](https://support.huaweicloud.com/sqlreference-dws/dws_06_0117.md): DWS支持数据库事务ACID属性,提供了事务的读已提交隔离级别和可重复读隔离级别。客户端显式开启事务或手动关闭Autocommit场景,业务最后必须手动执行Commit提交事务。针对执行时长超过30分钟的语句,建议进行优化。尽量避免出现执行时长超过2小时的业务,避免长事务、长持锁等影响。更多开发设计规范参见总体开发设计规范。事务指一个操作 - [DDL语法一览表](https://support.huaweicloud.com/sqlreference-dws/dws_06_0119.md): DDL(Data Definition Language数据定义语言),用于定义或修改数据库中的对象。如:表、索引、视图等。DWS不支持CN不完整的情况下执行DDL操作。例如:集群中存在1个CN故障时,执行新建数据库、表等操作都会失败。数据库是组织、存储和管理数据的仓库,而数据库定义主要包括:创建数据库、修改数据库属性,以及删除数据库。所 - [ALTER DATABASE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0120.md): 修改数据库的属性,包括它的名称、所有者、连接数限制、对象隔离属性等。只有拥有数据库所有者权限的用户才能执行ALTER DATABASE命令,系统管理员默认拥有此权限。如果是非系统管理员,针对所要修改属性的不同,对其还有以下权限约束:修改数据库名称,必须拥有CREATEDB权限。修改数据库所有者,当前用户必须是该数据库的所有者,且拥有CRE - [ALTER FOREIGN TABLE (GDS导入导出)](https://support.huaweicloud.com/sqlreference-dws/dws_06_0123.md): 对GDS外表进行修改。无。设置外表属性。ALTER FOREIGN TABLE [ IF EXISTS ] table_name OPTIONS ( {[ ADD | SET | DROP ] option ['value']}[, ... ]);设置外表新的所有者。ALTER FOREIGN TABLE [ IF EXISTS - [ALTER FOREIGN TABLE (For HDFS or OBS)](https://support.huaweicloud.com/sqlreference-dws/dws_06_0124.md): 对HDFS外表和OBS外表进行修改。外表(Foreign Table)是数据库或大数据平台中一种虚拟表结构,它不实际存储数据,而是通过元数据信息(如表结构、存储位置、文件格式等)将外部存储系统(如HDFS、OBS等)中的数据映射到数据库内部,使用户能够以标准SQL操作直接访问或操作外部数据。外表的本质是一种“数据代理”,将外部文件系统的数 - [ALTER FUNCTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0126.md): 修改自定义函数的属性。只有该函数的所有者或者授予了函数ALTER权限的用户才有权限执行ALTER FUNCTION,系统管理员默认拥有该权限。要修改函数的所有者的用户必须是新拥有角色的直接或间接成员。要修改函数的所有者,新所有者必须拥有该函数所属模式的CREATE权限。要修改函数的所属模式,必须拥有新模式的CREATE权限。如果函数中涉及 - [ALTER GROUP](https://support.huaweicloud.com/sqlreference-dws/dws_06_0127.md): 修改用户组的属性。ALTER GROUP是ALTER ROLE的别名,非SQL标准语法,不推荐使用,建议用户直接使用ALTER ROLE替代。向用户组中添加用户。ALTER GROUP group_name ADD USER user_name [, ... ];从用户组中删除用户。ALTER GROUP group_name - [ALTER INDEX](https://support.huaweicloud.com/sqlreference-dws/dws_06_0128.md): ALTER INDEX用于修改索引的定义。只有索引的所有者有权限执行此命令,系统管理员默认拥有此权限。重命名表索引的名称,支持新的索引名称前带有原索引所在的schema名,但是不支持同时修改schema名。ALTER INDEX [ IF EXISTS ] index_name RENAME TO new_name; ALTER - [ALTER LARGE OBJECT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0129.md): 用于修改大对象的定义。ALTER LARGE OBJECT的唯一的功能是分配一个新的所有者。只有大对象的所有者有权限执行此命令,系统管理员默认拥有此权限。无。 - [ALTER REDACTION POLICY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0132.md): 修改数据库表上已有的数据脱敏策略,包括脱敏策略生效/失效、策略名称及脱敏列的增删改等内容。只有待修改脱敏策略所应用表对象的属主和被授予gs_role_redaction预置角色的用户才有修改脱敏策略的权限。修改脱敏策略的生效表达式。ALTER REDACTION POLICY policy_name ON table_name WHEN - [ALTER RESOURCE POOL](https://support.huaweicloud.com/sqlreference-dws/dws_06_0133.md): 修改一个资源池,指定其他控制组。只要用户对当前数据库有ALTER权限,就可以修改资源池。设置控制组名称“group_name”时,语法可以使用双引号,也可以使用单引号。group_name对大小写敏感。不指定group_name时,默认指定的字符串为“Medium”,代表指定DefaultClass控制组的“Medium”Timeshar - [ALTER ROLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0134.md): 修改角色属性。无。修改角色的权限。ALTER ROLE role_name [ [ WITH ] option [ ... ] ];其中权限项子句option为:{CREATEDB | NOCREATEDB} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} - [ALTER ROW LEVEL SECURITY POLICY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0135.md): 修改已有行级访问控制策略的定义,包括行级访问控制策略的名称、策略应用的用户及策略表达式等。表的所有者或管理员用户才能执行ALTER ROW LEVEL SECURITY POLICY。创建示例表all_data和用户alice、bob。开启表all_data的行级访问控制策略功能。在表all_data上创建行级访问控制策略all_data - [ALTER SCHEMA](https://support.huaweicloud.com/sqlreference-dws/dws_06_0136.md): 修改模式属性,包括模式名称、所有者、永久表存储空间上限。只有模式的所有者或者被授予了模式ALTER权限的用户,有权限执行ALTER SCHEMA命令,系统管理员默认拥有此权限。非系统管理员要修改模式的所有者或模式的永久表存储空间上限,该用户还必须是新的所有角色的直接或间接成员, 并且该成员必须在此数据库上有CREATE权限。修改模式的名称 - [ALTER SEQUENCE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0137.md): 修改序列定义。使用ALTER SEQUENCE的用户必须是该序列的所有者。用户要修改序列的所有者,必须是新角色的直接或者间接成员,并且所有者角色必须有序列所在模式上的CREATE权限。当前版本仅支持修改拥有者、归属列和最大值。若要修改其他参数,可以删除重建,并用Setval函数恢复当前值。ALTER SEQUENCE MAXVALUE不支 - [ALTER SERVER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0138.md): 增加、修改和删除外部服务器的定义。现有外部服务器(server)可以使用pg_foreign_server系统表查询。只有服务器的所有者有权限执行ALTER SERVER命令,系统管理员默认拥有此权限。要更改服务器的所有者,必须是外部服务器的OWNER并且也是新的所有者角色的直接或者间接成员,且必须对外部服务器的外部数据封装器有USAGE - [ALTER SESSION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0139.md): ALTER SESSION命令用于定义或修改那些对当前会话有影响的条件或参数。修改后的会话参数会一直保持,直到断开当前会话。如果执行SET TRANSACTION之前没有执行START TRANSACTION,则事务立即结束,命令无法显示效果。可以用START TRANSACTION里面声明所需要的transaction_mode(s)的 - [ALTER SYNONYM](https://support.huaweicloud.com/sqlreference-dws/dws_06_0140.md): 修改SYNONYM对象的属性。目前仅支持修改SYNONYM对象的所有者。只有系统管理员和同义词的所有者有权限修改SYNONYM对象的所有者信息。修改者必须是新所有者的直接或间接成员,并且新的所有者必须拥有该同义词所属模式的CREATE权限。创建同义词t1。创建新用户u1。修改同义词t1的所有者为u1。CREATE SYNONYM,DROP - [ALTER SYSTEM KILL SESSION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0141.md): ALTER SYSTEM KILL SESSION命令用于结束一个会话。无。查询会话信息。结束SID为140131075880720的会话。 - [ALTER TABLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0142.md): 修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。只有表的所有者或者被授予了表ALTER权限的用户有权限执行ALTER TABLE命令,系统管理员默认拥有此权限。但要修改表的所有者或者修改表的模式,当前用户必须是该表的所有者或者系统管理员,且该用户是新的所 - [ALTER TABLE PARTITION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0143.md): 本章节介绍修改表分区的语法功能,包括增删分区、切割分区、合成分区、从普通表数据迁移到分区表,以及修改分区属性等。逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。常见的分区策略都是按照某一列或者某几列定义一些数据分布范围,然后每个分区承 - [ALTER TEXT SEARCH CONFIGURATION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0145.md): 修改文本搜索配置的定义。用户可以将映射从标记类型调整为字典,更改配置的名称或者所有者,或者修改搜索配置的配置参数。当一个搜索配置已经被引用(如被用来创建索引),则不允许用户修改此文本搜索配置。要使用ALTER TEXT SEARCH CONFIGURATION,用户必须是配置的所有者。增加文本搜索配置标记类型映射。ALTER TEXT S - [ALTER TEXT SEARCH DICTIONARY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0146.md): 修改全文检索词典的相关定义,包括参数、名称、所有者以及模式等。预定义词典不支持ALTER操作。只有词典的所有者可以执行ALTER操作,系统管理员默认拥有此权限。创建或修改词典之后,任何对于filepath路径下用户自定义的词典定义文件的修改,将不会影响到数据库中的词典。如果需要在数据库中使用这些修改,需使用ALTER TEXT SEARC - [ALTER TRIGGER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0147.md): 修改触发器定义。只有触发器所在表的所有者可以执行ALTER TRIGGER操作,系统管理员默认拥有此权限。创建示例表test_trigger_src_tbl和test_trigger_des_tbl。创建触发器函数tri_insert_func()。创建触发器insert_trigger。修改触发器insert_trigger。禁用触发器 - [ALTER TYPE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0148.md): 修改一个类型的定义。要使用ALTER TYPE,必须是该类型的所有者。要修改类型的模式,还必须在新模式上拥有CREATE权限。要修改所有者,必须是新的所有角色的直接或间接成员, 并且该角色必须在此类型的模式上有CREATE权限。 这些限制强制要求修改所有者不能执行任何通过删除和重建该类型无法实现的操作。系统管理员拥有以任何方式修改任意类型 - [ALTER USER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0149.md): 修改数据库用户的属性。ALTER USER修改的会话参数只针对指定的用户,且在下一次会话中有效。修改用户的权限等信息。ALTER USER user_name [ [ WITH ] option [ ... ] ];其中option子句为:{ CREATEDB | NOCREATEDB } | { CREATEROLE | NOC - [ALTER VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0150.md): ALTER VIEW更改视图的各种辅助属性。(如果用户是更改视图的查询定义,要使用CREATE OR REPLACE VIEW。)用户必须是视图的所有者才可以执行ALTER VIEW。要修改视图的模式,用户必须要有新模式的CREATE权限。要修改视图的所有者,用户必须是新所属角色的直接或者间接的成员,并且此角色必须有视图模式的CREATE - [CLEAN CONNECTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0151.md): 用于清理数据库连接。允许在指定节点上清理指定数据库的指定用户的相关连接。主要用于处理数据库异常、清理空闲/无效连接以及用于DROP DATABASE之前的连接访问检查,防止操作失败。参数dbname和username必须至少指定一个。删除数据库template1在dn1和dn2节点上的连接。删除用户jack在dn1节点上的连接。删除在数据 - [CLOSE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0152.md): CLOSE用于释放与游标关联的所有资源。不允许对一个已关闭的游标再进行任何操作。不再使用的游标应将其关闭。当创建游标的事务用COMMIT或ROLLBACK终止之后,每个非持有的已打开游标都隐式关闭。当创建游标的事务通过ROLLBACK退出之后,则该游标将隐式关闭。当创建游标的事务成功提交,则持有的游标将保持打开状态,直到执行了显式的CLO - [CLUSTER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0153.md): 根据索引对表进行聚簇排序。CLUSTER基于索引名指定的索引来聚簇由表名指定的表。索引名指定的索引必须已经定义在指定表上。当对一个表聚簇后,该表将基于索引信息进行物理排序。聚簇是一次性操作:当表被更新之后, 更改的内容不会被聚簇。也就是说,系统不会试图按照索引顺序对新的存储内容及更新记录进行重新聚簇。在对表聚簇时,DWS会记录在哪个索引上 - [COMMENT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0154.md): 定义或修改对象的注释。每个对象只存储一条注释,因此要修改对象的注释,对同一个对象发出一条新的COMMENT命令即可。要删除注释,在文本字符串的位置写入NULL。删除对象时,注释将自动删除。目前查看注释没有相关安全机制:连接到数据库的任何用户都可以查看该数据库中对象的所有注释。共享对象(比如数据库、角色、表空间)的注释是全局存储的,连接到集 - [CREATE BARRIER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0155.md): 创建一个新集群节点间的同步点。该同步点可用于数据恢复。在创建同步点之前,首先要确认集群中CN和DN的gtm_backup_barrier和enable_cbm_tracking参数都已设置为on。barrier_name可选参数。同步点名称。取值范围:字符串,需符合标识符命名规范。创建一个同步点,不指定名称。创建一个同步点并指定其名称为b - [CREATE DATABASE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0156.md): 创建新的数据库。DWS采用从模板数据库复制的方式来创建新的数据库。DWS系统提供了两个模板数据库(template0和template1)以及一个默认的用户数据库(gaussdb)。默认情况下,新的数据库基于template1创建。template1不允许修改字符编码,因此若要变更编码,用户可以通过指定template参数选择templa - [CREATE FOREIGN TABLE (GDS导入导出)](https://support.huaweicloud.com/sqlreference-dws/dws_06_0159.md): 在当前数据库创建一个GDS外表,用于数据并行导入导出。GDS外表分为只读外表和只写外表,分别用于数据并行导入和并行导出,缺省为只读外表。GDS是一款运行在Linux操作系统的命令行工具,通过和外表机制的配合,实现数据的高速导入导出。GDS工具包需要安装在数据源文件所在的服务器上,数据源文件所在的服务器称为数据服务器,也叫GDS服务器。安装 - [CREATE FOREIGN TABLE (OBS导入导出)](https://support.huaweicloud.com/sqlreference-dws/dws_06_0160.md): 在当前数据库创建一个OBS外表,用于OBS数据并行导入导出。该方式不需要用户再额外创建外部服务器server,使用数据库默认创建的gsmpp_server即可。本语法功能仅支持OBS桶上的TEXT和CSV格式数据,如果需要处理ORC、CARBONDATA、PARQUET等格式,请参见CREATE FOREIGN TABLE (SQL on - [CREATE FOREIGN TABLE (SQL on OBS or Hadoop)](https://support.huaweicloud.com/sqlreference-dws/dws_06_0161.md): 在当前数据库创建一个HDFS或OBS外表,用来访问存储在HDFS或者OBS分布式集群文件系统上的结构化数据,也可以通过HDFS或OBS外表导出ORC和PARQUET格式数据到HDFS或者OBS上。外表(Foreign Table)是数据库或大数据平台中一种虚拟表结构,它不实际存储数据,而是通过元数据信息(如表结构、存储位置、文件格式等)将 - [CREATE FUNCTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0163.md): FUNCTION(函数)是一段可重用的代码块,它接受输入参数,执行特定操作,并返回一个值或结果集。CREATE FUNCTION语句用于在数据库中创建用户自定义函数(UDF),实现DWS当前内置的系统函数中还未支持的其他计算功能,覆盖用户特定的复杂计算场景。函数的主要特点包括:支持输入参数,可根据不同条件返回结果。需声明返回值的数据类型, - [CREATE GROUP](https://support.huaweicloud.com/sqlreference-dws/dws_06_0164.md): 创建一个新用户组。CREATE GROUP是CREATE ROLE的别名,非SQL标准语法,不推荐使用,建议用户直接使用CREATE ROLE替代。其中可选项action子句语法为:请参考CREATE ROLE的参数说明。ALTER GROUP,DROP GROUP,CREATE ROLE - [CREATE INDEX](https://support.huaweicloud.com/sqlreference-dws/dws_06_0165.md): 在指定的表上创建索引。索引(Index)是一种通过优化数据检索效率的数据结构,其核心作用类似于书籍的目录——通过预先组织关键信息,帮助数据库快速定位所需数据,减少查询时需要扫描的数据量。索引的核心作用是:加速查询速度:在处理大量数据的数据库应用中,用户经常遇到查询速度慢的问题,尤其是在没有索引的情况下,数据库查询需要扫描整个表(全表扫描) - [CREATE REDACTION POLICY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0168.md): 在数据库表上创建数据脱敏策略。DWS提供列级别的数据脱敏策略(REDACTION POLICY)功能。针对某些敏感信息(如身份证号、手机号、银行卡号等),通过应用脱敏函数进行原始数据的变形改写,实现敏感隐私数据的可靠保护,增强产品在数据安全和隐私保护方面的能力。数据脱敏特性使用GUC参数feature_support_options进行控 - [CREATE ROW LEVEL SECURITY POLICY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0169.md): 对表创建行级访问控制策略。行级访问控制策略(ROW LEVEL SECURITY POLICY)表示将数据库访问控制权限精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,系统将自动根据创建的控制策略返回不同的读取结果。对表创建行级访问控制策略时,需打开该表的行级访问控制开关(ALTER TABLE .. - [CREATE PROCEDURE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0170.md): 创建一个新的存储过程。存储过程(PROCEDURE)是由一组预编译的SQL语句组成的集合,可以在数据库中进行存储并反复调用。创建存储过程时,请显式指定表对象的所属模式(如schema.table),否则可能引发执行异常。创建存储过程时,存储过程内部通过SET语句设置的current_schema/search_path无效,函数searc - [CREATE RESOURCE POOL](https://support.huaweicloud.com/sqlreference-dws/dws_06_0171.md): 创建一个资源池,并指定此资源池相关联的控制组。数据库的系统资源(CPU资源、内存资源、IO资源和存储资源)是有限的,DWS在同时运行多种类型的业务(如数据加载、批量分析、实时查询等)时,各类型业务之间可能会竞争资源,从而出现资源性能瓶颈,导致吞吐量下降,造成整体性能低下。那么对系统的资源进行合理的分配,能避免产生资源不合理利用而导致的系统 - [CREATE ROLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0172.md): 创建角色。角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。在数据库中添加一个新角色,角色无登录权限。创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。使用CREATE ROLE创建的角色必须使用ALTER ROLE语法进行修改,不能使用ALTER USER。其中角色信息设置子句 - [CREATE SCHEMA](https://support.huaweicloud.com/sqlreference-dws/dws_06_0173.md): 创建Schema。Schema又称作模式,从逻辑上组织一个数据库中的对象和数据。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,同时便于将第三方应用添加到相应的Schema下而不引起冲突。Schema的核心作用是:逻辑隔离:实现数据、功能、租户的隔离。权限控制:提供细粒度的安全边界。组织管理:使数据库结构清晰可维护。命名空间 - [CREATE SEQUENCE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0174.md): 向当前数据库里增加一个新的序列。序列是一个数据库对象,主要用于生成一系列唯一的、递增或递减的数值,通常用作表中的主键或唯一标识符。创建序列的用户为该序列的所有者。如果指定了模式名称,则会在指定模式中创建序列,否则会在当前模式中创建。序列名必须和同一个模式中的其他序列、表、索引、视图或外表的名字不同。创建序列后,在表中使用序列的nextva - [CREATE SERVER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0175.md): 创建一个外部服务器。外部服务器是存储HDFS集群信息、OBS服务器信息、DLI连接信息或其他同构集群信息的载体。默认只有系统管理员才可以创建外部服务器,否则需要对所使用的FOREIGN DATA WRAPPER授权,授权语法为:其中fdw_name为FOREIGN DATA WRAPPER的名字,username为创建SERVER的用户名 - [CREATE SYNONYM](https://support.huaweicloud.com/sqlreference-dws/dws_06_0176.md): 创建一个同义词对象。同义词是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同义词访问关联的数据库对象。定义同义词的用户成为其所有者。若指定模式名称,则同义词在指定模式中创建。否则,在当前模式创建。支持通过同义词访问的数据库对象包括:表、视图、函数和存储过程。使用同义词时,用户需要具有对关联对象的相应权限。支持使用同 - [CREATE TABLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0177.md): 在当前数据库中创建一个新的空白表。该表由命令执行者所有,如果系统管理员在某个与普通用户同名的schema下创建表,则该表的所有者为该schema对应的普通用户,而非系统管理员。不建议创建普通表时指定自定义TABLESPACE。创建行存表时应避免指定COMPRESS压缩属性。创建HASH分布的表对象时,要确保数据分布均匀(10G以上数据量的 - [CREATE TABLE AS](https://support.huaweicloud.com/sqlreference-dws/dws_06_0178.md): 根据查询结果创建表。适用于数据迁移或复制场景。CREATE TABLE AS创建一个表,并使用SELECT查询结果填充该表。该表的字段与SELECT输出字段的名称及数据类型关联。不过用户可以通过明确地给出一个字段名称列表来覆盖SELECT输出字段的名称。CREATE TABLE AS对源表进行一次查询,然后将数据写入新表中,而查询视图结果 - [CREATE TABLE PARTITION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0179.md): 创建分区表。逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。常见的分区策略都是按照某一列或者某几列定义一些数据分布范围,然后每个分区承载一个范围的数据,这些列称之为分区键。目前DWS行存表、列存表支持的分区类型包括范围分区和列表分区。 - [CREATE TEXT SEARCH CONFIGURATION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0182.md): 创建新的文本搜索配置。文本搜索配置通过文本搜索解析器(PARSER)将原始字符串解析为标记,再使用词典(DICTIONARY)决定哪些标记是搜索感兴趣的,从而满足搜索需求,提升全文搜索效率。如果仅指定了解析器,则新的文本搜索配置初始没有从标记类型到词典的映射, 因此会忽略所有的单词。后面必须使用ALTER TEXT SEARCH CONF - [CREATE TEXT SEARCH DICTIONARY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0183.md): 创建一个新的全文检索词典。全文检索词典指定在全文检索时识别特定词并处理的方法。词典的创建依赖于预定义模板(在系统表PG_TS_TEMPLATE中定义),支持创建五种类型的词典,分别是Simple、Ispell、Synonym、Thesaurus、以及Snowball,每种类型的词典可以完成不同的任务。具有SYSADMIN权限的用户可以执行 - [CREATE TRIGGER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0184.md): 创建一个新触发器。 触发器将与指定的表或视图关联,并在特定条件下执行指定的函数。当前仅支持在普通行存表上创建触发器,不支持在列存表、临时表、unlogged表等类型表上创建触发器。如果为同一事件定义了多个相同类型的触发器,则按触发器的名称字母顺序触发它们。一个触发器只能作用在一张表上,对创建的触发器数量无限制但一个表上的触发器越多,性能消 - [CREATE TYPE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0185.md): 该语法用于创建用户自定义类型(User-defined type,简称UDT),本质是将一组相关字段或值封装成一个新的、可复用的数据类型,类似编程语言中的“结构体”,让数据库表设计更贴合业务逻辑,减少冗余、提升可读性。该功能仅适用于行存表。当前支持创建的UDT包括:复合类型、基本类型、shell类型和枚举类型。复合类型复合类型通过“属性名 - [CREATE USER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0186.md): 创建新的数据库用户。通过CREATE USER创建的用户,默认具有LOGIN权限。通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。系统管理员在普 - [CREATE VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0187.md): CREATE VIEW用于创建视图。视图(View)是基于SQL查询定义的逻辑虚拟表,仅保存视图定义而不物理存储数据。当基表数据发生变化时,视图查询结果自动同步更新,视图提供动态数据窗口,帮助用户高效聚焦目标数据。GUC参数view_independent打开时,支持普通视图删除列。但如果存在列级约束,不支持该列的删除。视图解耦功能下不支 - [CURSOR](https://support.huaweicloud.com/sqlreference-dws/dws_06_0188.md): CURSOR语句定义游标,用于从查询里面检索出指定的几行数据。为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。游标命令只能在事务块里使用。通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以 - [DROP DATABASE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0189.md): 删除数据库。只有数据库所有者有权限执行DROP DATABASE命令,系统管理员默认拥有此权限。不能对系统默认安装的三个数据库(gaussdb、TEMPLATE0和TEMPLATE1)执行删除操作,系统做了保护。如果想查看当前服务中有哪几个数据库,可以用gsql的\l命令查看。如果有用户正在与要删除的数据库连接,则删除操作失败。如果要查看 - [DROP FOREIGN TABLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0192.md): 删除指定的外表。DROP FOREIGN TABLE会强制删除指定的外表,删除外表后,依赖该外表的索引会被删除,而使用到该外表的函数和存储过程将无法执行。删除名称为customer_ft的外表。ALTER FOREIGN TABLE (GDS导入导出),ALTER FOREIGN TABLE (For HDFS or OBS),CREAT - [DROP FUNCTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0193.md): 删除一个已存在的函数。如果所删除的函数为重载函数,则删除时需要指明该函数的参数类型,如为非重载函数,则可直接指定函数名进行删除。如果函数中涉及对临时表相关操作,则无法使用DROP FUNCTION删除函数。删除名称为add_two_number的函数。ALTER FUNCTION,CREATE FUNCTION - [DROP GROUP](https://support.huaweicloud.com/sqlreference-dws/dws_06_0194.md): 删除用户组。DROP GROUP是DROP ROLE的别名。DROP GROUP是集群管理工具封装的内部接口,用来实现集群管理。该接口不建议用户直接使用,以免对集群状态造成影响。请参见DROP ROLE的参数说明。CREATE GROUP,ALTER GROUP,DROP ROLE - [DROP INDEX](https://support.huaweicloud.com/sqlreference-dws/dws_06_0195.md): 删除索引。只有索引的所有者有权限执行DROP INDEX命令,系统管理员默认拥有此权限。删除现有的索引ds_ship_mode_t1_index2。ALTER INDEX,CREATE INDEX - [DROP OWNED](https://support.huaweicloud.com/sqlreference-dws/dws_06_0198.md): 删除一个数据库角色所拥有的数据库对象。所有该角色在当前数据库里和共享对象(数据库,表空间) 上的所有对象上的权限都将被撤销。创建角色u1并创建一个由u1拥有的表。删除名称为u1的角色拥有的所有数据库对象。 - [DROP REDACTION POLICY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0199.md): 删除应用在指定表上的脱敏策略。只有表的属主和被授予gs_role_redaction预置角色的用户才有权限删除脱敏策略。删除表emp上的脱敏策略mask_emp。ALTER REDACTION POLICY,CREATE REDACTION POLICY - [DROP ROW LEVEL SECURITY POLICY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0200.md): 删除表上指定的行级访问控制策略。仅表的所有者或者管理员用户才能执行DROP ROW LEVEL SECURITY POLICY。删除表all_data上的行级访问控制策略all_data_rls。ALTER ROW LEVEL SECURITY POLICY,CREATE ROW LEVEL SECURITY POLICY - [DROP PROCEDURE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0201.md): 删除已存在的存储过程。无。删除存储过程。CREATE PROCEDURE - [DROP RESOURCE POOL](https://support.huaweicloud.com/sqlreference-dws/dws_06_0202.md): 删除一个资源池。如果某个角色已关联到该资源池,则无法删除该资源池。只要用户对当前数据库有DROP权限,就可以删除资源池。删除资源池pool。ALTER RESOURCE POOL,CREATE RESOURCE POOL - [DROP ROLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0203.md): 删除指定的角色。DROP ROLE若提示role is being used by other users错误,可能原因为CLEAN CONNECTION过程存在线程无法及时响应信号,出现连接清理不完全的情况,需要再次执行CLEAN CONNECTION。DROP对象操作(如DATABASE、USER/ROLE、SCHEMA、TABLE、 - [DROP SCHEMA](https://support.huaweicloud.com/sqlreference-dws/dws_06_0204.md): 从数据库中删除模式。只有模式的所有者或者被授予了模式DROP权限的用户有权限执行DROP SCHEMA命令,系统管理员默认拥有此权限。DROP对象操作(如DATABASE、USER/ROLE、SCHEMA、TABLE、VIEW等对象)存在数据丢失风险,尤其含带CASCADE级联删除场景,会将关联的对象一并删除,操作需谨慎,操作前需考虑数据 - [DROP SEQUENCE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0205.md): 从当前数据库里删除序列。只有序列的所有者或者系统管理员才能删除。删除序列serial。ALTER SEQUENCE,CREATE SEQUENCE - [DROP SERVER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0206.md): 删除现有的一个数据服务器。只有server的owner才可以删除。删除hdfs_server。ALTER SERVER,CREATE SERVER - [DROP SYNONYM](https://support.huaweicloud.com/sqlreference-dws/dws_06_0207.md): 删除指定的SYNONYM对象。只有SYNONYM的所有者有权限执行DROP SYNONYM命令,系统管理员默认拥有此权限。删除同义词。ALTER SYNONYM,CREATE SYNONYM - [DROP TABLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0208.md): 删除指定的表。DROP TABLE会强制删除指定的表,删除表后,依赖该表的索引会被删除,而使用到该表的函数和存储过程将无法执行。删除分区表,会同时删除分区表中的所有分区。只有表的所有者、模式所有者或者被授予了表的DROP权限的用户才能执行DROP TABLE,系统管理员默认拥有该权限。要清空指定表中的行但是不删除该表定义,可以使用TRUN - [DROP TEXT SEARCH CONFIGURATION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0210.md): 删除已有文本搜索配置。要执行DROP TEXT SEARCH CONFIGURATION命令,用户必须是该文本搜索配置的所有者。删除文本搜索配置ngram1。ALTER TEXT SEARCH CONFIGURATION,CREATE TEXT SEARCH CONFIGURATION - [DROP TEXT SEARCH DICTIONARY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0211.md): 删除全文检索词典。预定义词典不支持DROP操作。只有词典的所有者可以执行DROP操作,系统管理员默认拥有此权限。谨慎执行DROP...CASCADE操作,该操作将级联删除使用该词典的文本搜索配置(TEXT SEARCH CONFIGURATION)。删除词典english。ALTER TEXT SEARCH DICTIONARY,CREA - [DROP TRIGGER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0212.md): 删除触发器。只有触发器的所有者可以执行DROP TRIGGER操作,系统管理员默认拥有此权限。删除触发器insert_trigger。CREATE TRIGGER,ALTER TRIGGER,ALTER TABLE - [DROP TYPE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0213.md): 删除一个用户定义的数据类型。只有类型所有者才有删除权限。先创建compfoo类型。删除compfoo类型。ALTER TYPE,CREATE TYPE - [DROP USER](https://support.huaweicloud.com/sqlreference-dws/dws_06_0214.md): 删除用户,同时会删除同名的schema。须使用CASCADE级联删除依赖用户的对象(除数据库外)。当删除用户的级联对象时,如果级联对象处于锁定状态,则此级联对象无法被删除,直到对象被解锁或锁定级联对象的进程被终止。在数据库中删除用户时,如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库,请用户先手动删除其他数据库中的依赖对象或 - [DROP VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0215.md): 删除已有的视图。只有视图的所有者有权限执行DROP VIEW的命令,系统管理员默认拥有此权限。DROP对象操作(如DATABASE、USER/ROLE、SCHEMA、TABLE、VIEW等对象)存在数据丢失风险,尤其含带CASCADE级联删除场景,会将关联的对象一并删除,操作需谨慎,操作前需考虑数据备份。更多开发设计规范参见总体开发设计规 - [FETCH](https://support.huaweicloud.com/sqlreference-dws/dws_06_0216.md): FETCH通过已创建的游标来检索数据。每个游标都有一个供FETCH使用的关联位置。游标的关联位置可以在查询结果的第一行之前,或者在结果中的任意行,或者在结果的最后一行之后:游标刚创建完之后,关联位置在第一行之前的。在抓取了一些移动行之后,关联位置在检索到的最后一行上。如果FETCH抓取完了所有可用行,它就停在最后一行后面,或者在反向抓取的 - [MOVE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0217.md): MOVE在不检索数据的情况下重新定位一个游标。MOVE的作用类似于FETCH命令,但只是重定位游标而不返回行。无。其中direction子句为可选参数。MOVE命令的参数与FETCH的相同,详细请参见FETCH的参数说明。成功完成时,MOVE命令将返回一个“MOVE count”的标签,count是一个使用相同参数的FETCH命令会返回的 - [REINDEX](https://support.huaweicloud.com/sqlreference-dws/dws_06_0218.md): 为表中的数据重建索引。在以下几种情况下需要使用REINDEX重建索引:索引崩溃,并且不再包含有效的数据。索引变得“臃肿”,包含大量的空页或接近空页。为索引更改了存储参数(例如填充因子),并且希望这个更改完全生效。使用CONCURRENTLY选项创建索引失败,留下了一个“非法”索引。使用CONCURRENTLY选项创建索引失败,留下了一个“ - [RESET](https://support.huaweicloud.com/sqlreference-dws/dws_06_0219.md): RESET将指定的运行时参数恢复为缺省值。这些参数的缺省值是指postgresql.conf配置文件中所描述的参数缺省值。RESET命令与如下命令的作用相同:SET configuration_parameter TO DEFAULTRESET的事务性行为和SET相同:它的影响将会被事务回滚撤销。将timezone设为缺省值。将所有参数设 - [SET](https://support.huaweicloud.com/sqlreference-dws/dws_06_0220.md): 用于修改运行时配置参数。大多数运行时参数都可以用SET在运行时设置,但有些则在服务运行过程中或会话开始之后不能修改。设置所处的时区。SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT };设置所属的模式。SET [ SESSION | LOCAL ] {C - [SET CONSTRAINTS](https://support.huaweicloud.com/sqlreference-dws/dws_06_0221.md): SET CONSTRAINTS设置当前事务检查行为的约束条件。IMMEDIATE约束是在每条语句后面进行检查。DEFERRED约束一直到事务提交时才检查。每个约束都有自己的模式。从创建约束条件开始,一个约束总是设定为DEFERRABLE INITIALLY DEFERRED,DEFERRABLE INITIALLY IMMEDIATE,N - [SET ROLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0222.md): 设置当前会话的当前用户标识符,即在当前数据库会话中切换或启用指定角色。当前会话的用户必须是指定的role_name角色的成员,系统管理员可以切换至任意角色。可以使用SET ROLE添加权限或限制某个用户的权限。如果会话用户的角色具有INHERITS属性,则它将自动拥有SET ROLE所设置角色的所有权限;在这种情况下,SET ROLE实际 - [SET SESSION AUTHORIZATION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0223.md): 把当前会话里的会话用户标识和当前用户标识都设置为指定的用户。只有在初始会话用户有系统管理员权限的时候,会话用户标识符才能改变。否则,只有在指定了被认证的用户名的情况下,系统才接受该命令。为当前会话设置会话用户标识符和当前用户标识符。SET [ SESSION | LOCAL ] SESSION AUTHORIZATION role_nam - [SHOW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0224.md): SHOW将显示当前运行时参数的数值。可以使用SET语句来设置这些参数。SHOW可以查看的某些参数是只读的,可以查看但不能设置它们的值。显示变量的参数请参见RESET的参数说明。显示timezone参数值。显示参数DateStyle的当前设置。显示所有参数的当前设置。SET,RESET - [TRUNCATE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0225.md): TRUNCATE语法用于清理表数据,快速地从表中删除所有行。它与在目标表上进行无条件的DELETE的效果相同,但由于TRUNCATE实际上并不扫描表,因此速度更快,尤其在大表上操作效果更明显。请谨慎执行TRUNCATE TABLE,确认表数据可以删除或者已有备份后,再执行删除操作。TRUNCATE TABLE命令删除表数据后,数据将无法恢 - [VACUUM](https://support.huaweicloud.com/sqlreference-dws/dws_06_0226.md): VACUUM回收表或B-Tree索引中已经删除的行所占据的存储空间。在一般的数据库操作里,那些已经DELETE的行并没有从它们所属的表中物理删除;在完成VACUUM之前它们仍然存在。因此有必要周期地运行VACUUM,特别是在经常更新的表上。VACUUM命令存在两种形式,VACUUM和VACUUM FULL,VACUUM命令做的是LAZY - [DML语法一览表](https://support.huaweicloud.com/sqlreference-dws/dws_06_0228.md): DML(Data Manipulation Language数据操作语言),用于对数据库表中的数据进行操作。如:插入、更新、查询、删除。插入数据是往数据库表中添加一条或多条记录,请参考INSERT。修改数据是修改数据库表中的一条或多条记录,请参考UPDATE。数据库查询语句SELECT用于在数据库中检索符合条件的信息,请参考SELECT。 - [CALL](https://support.huaweicloud.com/sqlreference-dws/dws_06_0229.md): 使用CALL命令可以调用已定义的函数和存储过程。如果自定义函数的函数名与系统函数同名,调用自定义函数时需指定schema,否则系统会优先调用系统函数。创建一个函数func_add_sql,计算两个整数的和,并返回结果:按参数值传递:使用命名标记法传参:删除函数:创建带出参的函数:出参传入常量:出参传入变量:创建重载的函数:函数调用:删除函 - [COPY](https://support.huaweicloud.com/sqlreference-dws/dws_06_0230.md): 通过COPY命令实现在表和文件之间拷贝数据。COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据拷贝到一个文件。COPY FROM/TO适用于低并发,本地小数据量导入导出的场景。由于云上DWS是全托管服务,用户无法登录后台集群节点,所以云上禁止使用COPY语法,可采用“\COPY”命令进行操作(仅gsql客户端支持, - [DELETE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0231.md): 从指定的表里删除满足WHERE子句的行。如果WHERE子句不存在,将删除表中所有行,结果只保留表结构。要删除表中的数据,用户必须对它有DELETE权限。同样也必须有USING子句引用的表以及condition上读取的表的SELECT权限。对于复制表,仅支持两种场景下的DELETE操作:有主键约束的场景。执行计划能下推的场景。有主键约束的场 - [EXPLAIN](https://support.huaweicloud.com/sqlreference-dws/dws_06_0232.md): EXPLAIN命令输出SQL语句的执行计划,通过分析执行计划来定位慢SQL,优化SQL语句。执行计划将显示SQL语句所引用的表采用的扫描方式,如:简单的顺序扫描、索引扫描等。如果引用了多个表,执行计划还会显示使用的JOIN算法。执行计划的最关键部分是语句的预计执行开销,即计划生成器估算执行该语句将花费多长的时间。指定ANALYZE选项(E - [EXPLAIN PLAN](https://support.huaweicloud.com/sqlreference-dws/dws_06_0233.md): 通过EXPLAIN PLAN命令可以将查询执行的计划信息存储于PLAN_TABLE表中。与EXPLAIN命令不同的是,EXPLAIN PLAN仅将计划信息进行存储,而不会打印到屏幕。EXPLAIN PLAN不支持在DN上执行。对于执行错误的SQL无法进行计划信息的收集。PLAN_TABLE中的数据是session级生命周期并且sessio - [LOCK](https://support.huaweicloud.com/sqlreference-dws/dws_06_0234.md): LOCK TABLE获取表级锁。当自动获取引用表的命令的锁时,DWS会始终使用限制最小的锁模式。如果用户需要一种更为严格的锁模式,可以使用LOCK命令。例如,某个应用是在Read Committed隔离级别上运行事务,并且需要保证表中的数据在事务运行期间保持稳定。为实现这个目的,则可以在查询之前对表使用SHARE锁模式进行锁定。这样将防止 - [MERGE INTO](https://support.huaweicloud.com/sqlreference-dws/dws_06_0235.md): MERGE INTO语句将目标表和源表中数据根据关联条件进行匹配,若关联条件匹配时对目标表进行UPDATE,不匹配时对目标表执行INSERT。MERGE INTO合并执行UPDATE和INSERT,避免多次执行以提高执行效率。执行MERGE INTO操作的用户需要同时拥有目标表的UPDATE和INSERT权限,以及源表的SELECT权限。 - [INSERT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0236.md): 向表中添加一行或多行数据。使用INSERT请遵守INSERT开发规范。只有拥有表INSERT权限的用户,才可以向表中插入数据。如果使用RETURNING子句,用户必须要有该表的SELECT权限。如果使用QUERY子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的SELECT权限。如果使用OVERWRITE子句覆盖式插入数据,用户 - [UPSERT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0237.md): 向表中添加一行或多行数据。当出现主键或者唯一约束冲突时,它可以选择更新冲突的数据,或者忽略这些冲突。UPSERT语法仅8.1.1及以上版本支持。避免UPDATE/UPSERT并发更新同一张列存表。更多开发设计规范参见总体开发设计规范。权限要求:只有拥有表INSERT、UPDATE权限的用户,才可以通过UPSERT语句向表中插入或更新数据。 - [SELECT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0238.md): SELECT用于从表或视图中读取数据。SELECT语句就像叠加在数据库表上的过滤器,利用SQL关键字从数据表中过滤出用户需要的数据。使用SELECT请遵循SELECT操作规范。SELECT支持普通表与HDFS之间的JOIN,不支持普通表与GDS外表之间的JOIN。即SELECT语句中不能同时出现普通表和GDS外表。需确认对每个在SELEC - [SELECT INTO](https://support.huaweicloud.com/sqlreference-dws/dws_06_0239.md): SELECT INTO用于根据查询结果创建一个新表,并且将查询到的数据插入到新表中。数据并不返回给客户端,这一点和普通的SELECT不同。新表的字段具有和SELECT的输出字段相同的名字和数据类型。CREATE TABLE AS的作用和SELECT INTO类似,且提供了SELECT INTO所提供功能的超集。建议使用CREATE TAB - [UPDATE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0240.md): 更新表中的数据。UPDATE修改满足条件的所有行中指定的字段值,WHERE子句声明条件,SET子句指定的字段会被修改,没有出现的字段则保持原值。使用UPDATE请遵循UPDATE操作规范。权限要求:要修改表,用户必须对该表有UPDATE权限,对expression或condition条件里涉及到的任何表要有SELECT权限。不允许对表的分 - [VALUES](https://support.huaweicloud.com/sqlreference-dws/dws_06_0241.md): 根据给定的值表达式计算一个或一组行的值。它通常用于在一个较大的命令内生成一个“常数表”。应当避免使用VALUES返回数量非常大的结果行,否则可能会遭遇内存耗尽或者性能低下。出现在INSERT中的VALUES是一个特殊情况,因为目标字段类型可以从INSERT的目标表获知,并不需要通过扫描VALUES列表来推测,所以此情况下可以处理非常大的结 - [DCL语法一览表](https://support.huaweicloud.com/sqlreference-dws/dws_06_0243.md): DCL(Data Control Language数据控制语言),是用来设置或更改数据库用户或角色权限的语句。DWS提供了针对数据对象和角色授权的语句,请参考GRANT。DWS提供了收回权限的语句,请参考REVOKE。DWS允许设置应用于将来创建的对象的权限,请参考ALTER DEFAULT PRIVILEGES。 - [ALTER DEFAULT PRIVILEGES](https://support.huaweicloud.com/sqlreference-dws/dws_06_0244.md): 设置应用于将来要创建的对象的权限(不会影响现有对象的权限)。用户只可以修改由用户本身或者用户本身所属的角色所创建的对象的默认权限,这些权限可以对全局范围设置(即数据库中创建的所有对象),也可以为指定模式下的对象设置。可使用PG_DEFAULT_ACL系统表查看数据库用户的默认权限的信息。目前只支持表(包括视图)、序列、函数和类型(包括域) - [ANALYZE | ANALYSE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0245.md): 用于收集有关数据库中表内容的统计信息,统计信息分为表级和列级。其中,表级统计信息存储在PG_CLASS中,列级统计结果存储在系统表PG_STATISTIC下。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。它的主要作用是:优化查询性能:为查询优化器提供数据分布信息,帮助生成更高效的执行计划。提高查询计划准确性:使优化器能更准确地 - [DEALLOCATE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0246.md): DEALLOCATE用于删除先前编写的预备语句。如果未显式删除一个预备语句,则在会话结束时将其删除。有关预备语句可参考PREPARE。无。无。 - [DO](https://support.huaweicloud.com/sqlreference-dws/dws_06_0247.md): 执行匿名代码块。代码块被视为没有参数的函数主体,返回值类型是void。它的解析和执行是同一时刻发生的。程序语言在使用之前,必须通过命令CREATE LANGUAGE安装到当前的数据库中。 plpgsql是默认的安装语言,其它语言安装时必须指定。如果语言是不受信任的,用户必须有使用程序语言的USAGE权限,或者是系统管理员。授予用户webu - [EXECUTE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0248.md): 执行一个前面准备好的预备语句。由于预备语句只在会话的生命期里存在,那么该预备语句必须在当前会话中由一个更早执行的PREPARE语句创建。如果创建预备语句的PREPARE语句声明了一些参数,那么传递给EXECUTE语句的必须是一个兼容的参数集,否则就会生成一个错误。准备数据:为一个INSERT语句创建一个预备语句,然后执行它:PREPARE - [EXECUTE DIRECT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0249.md): 在指定的节点上执行SQL语句。一般情况下,SQL语句的执行是由集群负载自动分配到合适的节点上,execute direct主要用于数据库维护和测试。只有系统管理员才能执行EXECUTE DIRECT。为了各个节点上数据的一致性,SQL语句仅支持SELECT,不允许执行事务语句、DDL、DML。使用此类型语句在指定的DN执行AVG聚集计算时 - [GRANT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0250.md): 对角色和用户进行授权操作。使用GRANT命令进行用户授权包括以下三种场景:系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。系统权限一般在创建或修改角色阶段,通过CREATE/ALTER ROLE语法来指定。其中,SYSADMIN权限可以通过GRANT/REVOKE A - [PREPARE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0251.md): 创建一个预备语句。预备语句是服务端的对象,可以用于优化性能。在执行PREPARE语句的时候,指定的查询被解析、分析、重写。当随后发出EXECUTE语句的时候,预备语句被规划和执行。这种设计避免了重复解析、分析工作。PREPARE语句创建后在整个数据库会话期间一直存在,一旦创建成功,即便是在事务块中创建,事务回滚,PREPARE也不会删除。 - [REASSIGN OWNED](https://support.huaweicloud.com/sqlreference-dws/dws_06_0252.md): 修改数据库对象的属主。REASSIGN OWNED要求系统将所有old_role拥有的数据库对象的属主更改为new_role。REASSIGN OWNED常用于在删除角色之前的准备工作。由于不会影响其他数据库中的对象, 因此通常需要在每个数据库中执行此命令,该数据库包含要删除的角色所拥有的对象。执行REASSIGN OWNED需要有原角色 - [REVOKE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0253.md): REVOKE用于撤销一个或多个角色的权限。非对象所有者试图在对象上REVOKE权限,命令按照以下规则执行:如果授权用户没有该对象上的权限,则命令立即失败。如果授权用户有部分权限,则只撤销那些有授权选项的权限。如果授权用户没有授权选项,REVOKE ALL PRIVILEGES形式将发出一个错误信息,而对于其他形式的命令而言,如果是命令中指 - [TCL语法一览表](https://support.huaweicloud.com/sqlreference-dws/dws_06_0255.md): TCL(Transaction Control Language事务控制语言 ),用来控制数据库操纵事务发生的时间及效果,对数据库实行监视等。DWS通过COMMIT或者END可完成提交事务的功能。请参考COMMIT | END。DWS用于在当前事务里建立一个新的保存点。请参考SAVEPOINT。DWS回滚当前事务状态回到上次最后提交的状态 - [ABORT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0256.md): 回滚当前事务并且撤销所有当前事务中所做的更改。作用等同于ROLLBACK,早期SQL有用ABORT,现在推荐使用ROLLBACK。关于更多事务管理,请参见事务管理。在事务外部执行ABORT语句不会影响事务的执行,但是会产生一个警告信息。WORK | TRANSACTION可选关键字,对ABORT操作没有影响。以下演示,使用ABORT语句回 - [BEGIN](https://support.huaweicloud.com/sqlreference-dws/dws_06_0257.md): BEGIN可以用于开始一个匿名块,也可以用于开始一个事务。本节描述用BEGIN开始匿名块的语法,以BEGIN开始事务的语法见START TRANSACTION。匿名块是能够动态地创建和执行过程代码的结构,而不需要以持久化的方式将代码作为数据库对象储存在数据库中。无。开启匿名块[DECLARE [declare_statements]] - [CHECKPOINT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0258.md): 检查点(CHECKPOINT)是一个事务日志中的点,所有数据文件都在该点被更新以反映日志中的信息,所有数据文件都将被刷新到磁盘。设置事务日志检查点。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。可以设置相关运行时参数(checkpoint_segments和checkpoint_timeout)来调整这个原子化检查点的 - [COMMIT | END](https://support.huaweicloud.com/sqlreference-dws/dws_06_0259.md): 通过COMMIT或者END可完成提交事务的功能,即提交事务的所有操作。执行COMMIT这个命令的时候,命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。提交事务,让所有更改永久化:ROLLBACK - [COMMIT PREPARED](https://support.huaweicloud.com/sqlreference-dws/dws_06_0260.md): 提交一个早先为两阶段提交准备好的事务。该功能仅在维护模式(GUC参数xc_maintenance_mode为on时)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。事务功能由数据库自动维护,不应显式使用事务功能。PREPARE T - [PREPARE TRANSACTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0262.md): 为当前事务做两阶段提交的准备。在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。一旦准备好了,一个事务就可以在稍后用COMMIT PREPARED或 ROLLBACK PREPARED命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初 - [SAVEPOINT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0263.md): SAVEPOINT用于在当前事务里建立一个新的保存点。保存点是事务中的一个特殊记号,它允许将那些在它建立后执行的命令全部回滚,把事务的状态恢复到保存点所在的时刻。使用ROLLBACK TO SAVEPOINT回滚到一个保存点。使用RELEASE SAVEPOINT删除一个保存点,但是保留该保存点建立后执行的命令的效果。保存点只能在一个事务 - [SET TRANSACTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0264.md): 为当前事务设置特性。它对后面的事务没有影响。事务特性包括事务隔离级别、事务访问模式(读/写或者只读)。无。设置事务的隔离级别、读写模式。{ SET [ LOCAL ] TRANSACTION|SET SESSION CHARACTERISTICS AS TRANSACTION } { ISOLATION LEVEL { READ CO - [START TRANSACTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0265.md): 通过START TRANSACTION启动事务。如果声明了隔离级别、读写模式,那么新事务就使用这些特性,类似执行了SET TRANSACTION。无。格式一:START TRANSACTION格式格式二:BEGIN格式准备数据:DROP SCHEMA IF EXISTS tpcds CASCADE; CREATE SCHEMA tpcds - [ROLLBACK](https://support.huaweicloud.com/sqlreference-dws/dws_06_0266.md): 回滚当前事务并取消当前事务中的所有更新。在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,数据库状态回到事务开始时。如果不在一个事务内部发出ROLLBACK不会有问题,但是将抛出一个警告信息。WORK | TRANSACTION可选关键字。除了增加可读性,对ROLLBACK操作没有影响。取 - [RELEASE SAVEPOINT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0267.md): RELEASE SAVEPOINT删除当前事务先前定义的保存点。保存点删除后便无法再作为回滚点使用,除此之外没有其它用户可见的行为。删除保存点并不能撤销在保存点建立起来之后执行的命令的影响。要撤销那些命令可以使用ROLLBACK TO SAVEPOINT 。在不再需要的时候删除保存点可以令系统在事务结束之前提前回收一些资源。RELEASE - [ROLLBACK PREPARED](https://support.huaweicloud.com/sqlreference-dws/dws_06_0268.md): 取消一个先前为两阶段提交准备好的事务。该功能仅在维护模式(GUC参数xc_maintenance_mode为on时)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。要想回滚一个预备事务,必须是最初发起事务的用户,或者是系统管理员。事务功能由数据库自动维护,不应显式使用事务功能。transaction_id待提交 - [ROLLBACK TO SAVEPOINT](https://support.huaweicloud.com/sqlreference-dws/dws_06_0269.md): ROLLBACK TO SAVEPOINT用于回滚到保存点,隐含地删除所有在该保存点之后建立的保存点。回滚所有指定保存点建立之后执行的命令。保存点仍然有效,并且需要时可以再次回滚到该点。不能回滚到未定义的保存点,语法上会报错。在保存点方面,游标有一些非事务性的行为。任何在保存点里打开的游标都会在回滚掉这个保存点之后关闭。如果一个前面打开了 - [RENAME TABLE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0276.md): 重命名指定表。RENAME TABLE命令与如下命令的作用相同:不支持跨schema对表进行重命名操作。创建列存表指定存储格式和压缩方式。修改表名。CREATE TABLE,ALTER TABLE,DROP TABLE - [DQL语法一览表](https://support.huaweicloud.com/sqlreference-dws/dws_06_0278.md): DQL(Data Query Language数据查询语言),用于从表或视图中获取数据。DWS提供了用于从表或视图中获取数据的语句,请参考SELECT。DWS提供了根据查询结果创建一个新表,并且将查询到的数据插入到新表中的语句,请参考SELECT INTO。 - [RoaringBitmap类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0279.md): DWS自8.1.3集群版本开始,支持RoaringBitmap数据类型,用于存储位图数据集。RoaringBitmap数据类型支持行存,列存表。示例:创建带有RoaringBitmap数据类型的表。 - [ALTER EXCEPT RULE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0280.md): 修改一个异常规则集合,可以修改一组规则集中的任意一个或者多个具体的规则阈值。使用ALTER语法添加某个新规则阈值时,WITH参数中原来的其他的规则会保留,并不是全部清空覆盖。例如原来一组规则中只有一条规则:作业排队阻塞的最大时间blocktime = 100秒,通过以下语法新添加一条作业执行最大时间elapsedtime为1000秒,则最 - [CREATE EXCEPT RULE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0281.md): 用于创建一个异常规则集合。创建时可以指定任意一个或者多个具体的规则阈值,也可以指定触发异常规则后所采取的操作,当前支持终止(abort)和降级(penalty)操作。分布式数据库中,查询任务由多个节点并行执行,每个节点独立处理部分数据并汇总结果。但若任一节点出现性能瓶颈,即使其他节点快速完成,整个查询仍会被拖慢。在某些极端情况下,一个查询 - [DROP EXCEPT RULE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0282.md): 用于删除指定异常规则集合。只有系统管理员才能执行DROP EXCEPT RULE操作。创建异常规则集合except_rule_1。删除名称为except_rule_1的规则集合。如果存在名为except_rule_2的规则集合,则将其删除。CREATE EXCEPT RULE,ALTER EXCEPT RULE - [DISCARD](https://support.huaweicloud.com/sqlreference-dws/dws_06_0283.md): 释放与数据库会话相关的内部资源。DISCARD命令用于重设部分或全部的会话的状态,不同的DISCARD子命令释放不同类型的资源;DISCARD ALL释放所有与当前会话相关的临时资源,并重置到其初始状态。执行DISCARD VOLATILE { TEMPORARY | TEMP }操作后,当前session内所有volatile临时表资源 - [ALTER PUBLICATION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0284.md): 更改发布的属性。该语法仅8.2.0.100及以上集群版本支持。发布的所有者和系统管理员才能执行ALTER PUBLICATION。要更改发布的所有者,用户必须是新所有者角色的直接或者间接成员,并且新的所有者必须具有当前数据库的CREATE权限。FOR ALL TABLES发布的新所有者必须是系统管理员。管理员用户可以更改任何发布的所属关系 - [CREATE PUBLICATION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0285.md): 为当前数据库添加一个新的发布(PUBLICATION)。发布本质上是通过逻辑复制将一组表的数据变更进行复制。数据库将自动跟踪并捕获这些源表上发生的数据操作(INSERT, UPDATE,DELETE和TRUNCATE),并通过逻辑复制机制,持续地将这些变更数据传输给所有配置并订阅(CREATE SUBSCRIPTION)该发布的目标数据库 - [DROP PUBLICATION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0286.md): 删除已有的发布。该语法仅8.2.0.100及以上集群版本支持。只有发布的所有者可以执行DROP PUBLICATION操作,系统管理员默认拥有此权限。删除发布。DROP PUBLICATION pub_sales;ALTER PUBLICATION,CREATE PUBLICATION - [ALTER SUBSCRIPTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0287.md): 更改订阅的属性。该语法仅8.2.0.100及以上集群版本支持。订阅的所有者才能执行ALTER SUBSCRIPTION,并且新的所有者必须是系统管理员。更新订阅的连接信息。ALTER SUBSCRIPTION name CONNECTION 'conninfo';更新订阅的发布端的发布名称。ALTER SUBSCRIPTION name - [CREATE SUBSCRIPTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0288.md): 为当前数据库添加一个新的订阅(SUBSCRIPTION)。订阅(Subscription) 是指一个数据库实例(称为订阅者)从另一个数据库实例(称为发布者)接收数据变更的过程。订阅者通过订阅发布者的数据变更,实现数据的同步和分发。该语法仅8.2.0.100及以上集群版本支持。只有系统管理员才可以创建订阅。新创建的订阅名称不能与当前数据库中 - [DROP SUBSCRIPTION](https://support.huaweicloud.com/sqlreference-dws/dws_06_0289.md): 删除一个订阅。该语法仅8.2.0.100及以上集群版本支持。只有系统管理员才可以删除订阅。删除订阅。DROP SUBSCRIPTION sub_demo;ALTER SUBSCRIPTION,CREATE SUBSCRIPTION - [ALTER BLOCK RULE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0291.md): 修改查询过滤规则属性,包括查询过滤规则名称、绑定的客户端名称、客户端IP、用户以及匹配方式等。在日常数据库操作中,异常SQL的执行可能会导致资源过度消耗,影响数据库性能和稳定性,通过创建查询过滤规则,可以将此类SQL语句进行拦截。该语法仅9.1.0.100及以上集群版本支持。只有拥有数据库所有者权限的用户或者授予gs_role_block - [CREATE BLOCK RULE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0292.md): 该语法用于创建一条查询过滤规则,包括查询过滤规则名称、绑定的客户端名称、客户端IP、用户以及匹配方式等。在日常数据库操作中,异常SQL的执行可能会导致资源过度消耗,影响数据库性能和稳定性,通过创建查询过滤规则,可以将此类SQL语句进行拦截。当前支持指定某个SQL语句的正则匹配进行拦截,例如针对某用户对某张表的SELECT进行拦截;也支持指 - [DROP BLOCK RULE](https://support.huaweicloud.com/sqlreference-dws/dws_06_0293.md): 该语法用于删除查询过滤规则。查询过滤规则,包括查询过滤规则名称、绑定的客户端名称、客户端IP、用户以及匹配方式等。在日常数据库操作中,异常SQL的执行可能会导致资源过度消耗,影响数据库性能和稳定性,通过创建查询过滤规则,可以将此类SQL语句进行拦截。该语法仅9.1.0.100及以上集群版本支持。只有拥有数据库所有者权限的用户或者授予gs_ - [时序函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0294.md): DWS支持的时序计算函数参见表1。描述:计算按照时间排序后两行之间的差值。该函数通常用于时序场景计算按照时间排序后相邻两行差值,用于流量,速度等指标监控。参数说明:field,需要计算的列。delta是一个窗口函数,需要与over窗口函数使用。且over中rows语句不会改变delta函数结果,比如,delta(value) over(o - [备份控制函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0300.md): 备份控制函数可帮助进行在线备份。描述:为执行恢复创建一个命名点。(需要管理员角色)返回值类型:text备注:pg_create_restore_point创建了一个可以用作恢复目的、有命名的事务日志记录,并返回相应的事务日志位置。在恢复过程中,recovery_target_name可以通过这个名称定位对应的日志恢复点,并从此处开始执行恢 - [恢复控制函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0301.md): 恢复控制函数提供了当前备机状态的信息。此类函数可在恢复期间或数据库正常运行时执行。描述:如果恢复仍然在进行中则返回true。返回值类型:bool示例:描述:获取最后接收事务日志的位置并通过流媒体复制同步到磁盘。当流复制仍在进行,事务日志将持续递增。如果恢复已完成,则这个值将保持最后接收事务记录的状态并在恢复期间同步到磁盘。如果不能用流复制 - [数据库对象尺寸函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0302.md): 数据库对象尺寸函数用于计算数据库对象使用的实际磁盘空间,其计算结果都返回以字节为单位的大小。描述:存储一个指定的数值需要的字节数(可能压缩过)。返回值类型:integer备注:pg_column_size显示用于存储某个独立数据值的空间。描述:指定OID代表的数据库使用的磁盘空间。返回值类型:bigint描述:指定名称的数据库使用的磁盘空 - [数据库对象位置函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0303.md): 描述:指定关系的文件节点数。返回值类型:oid备注:pg_relation_filenode接收一个表、索引、序列或压缩表的OID或者名字,并且返回当前分配给它的“filenode”数。文件节点是关系使用的文件名字的基本组件。对大多数表来说,结果和pg_class.relfilenode相同,但对确定的系统目录来说, relfilenod - [分区管理函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0304.md): 描述:用于给开启自动创建分区功能的表添加分区。返回值类型:void备注:该函数运行时,会在现有分区boundary的基础上,创建多个时间范围为boundaries_interval的新分区,直到new_part_boundary – now_time >= 29 * boundaries_interval,之后再额外多创建一个分区,保证该 - [排序规则版本函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0305.md): 描述:返回当前安装在操作系统中的该排序规则对象的实际版本,目前仅对case_insensitive有效。返回值类型:text示例: - [数学运算符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0306.md): 数学运算操作符用于执行各种操作(如数学计算、位操作)的特殊符号。 - [数学函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0307.md): 描述:计算x的绝对值。输入参数x支持bigint、double precision、integer、numeric、real或smallint类型。返回值类型:和输入相同。示例:描述:计算x的反余弦。输入参数为double precision类型。取值范围为[-1,1]。返回值类型:double precision示例:描述:计算x的反正 - [时间和日期操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0308.md): 在使用时间和日期操作符时,对应的操作数请使用明确的类型前缀修饰,以确保数据库在解析操作数的时候能够与用户预期一致,不会产生非预期的结果。如下示例,没有明确数据类型就会出现异常错误。 - [时间和日期函数概述](https://support.huaweicloud.com/sqlreference-dws/dws_06_0310.md): DWS的时间和日期函数用于在数据业务中加减日期,获取当前时间、格式化日期显示、提取年月日等操作,广泛应用于数据分析、日程管理、财务报表等领域,帮助用户提高数据处理效率和准确性。 - [时间和日期基本函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0311.md): 描述:获取给定日期时间中的日(即月份中的第几天)。与dayofmonth(date)函数相同。取值范围:1~31返回值类型:integer示例:描述:获取给定日期时间对应的星期值,星期一作为一周的开始日。取值范围:0~6返回值类型:integer示例:描述:根据模式(mode)返回指定日期时间所处年份中对应的周数,默认模式为0。date, - [时间和日期运算函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0312.md): 描述:将两个参数相减,并以年、月、日作为返回值。若相减值为负,则函数返回亦为负。返回值类型:interval示例:描述:当前时间和参数相减。返回值类型:interval示例:描述:返回给定日期时间加上指定单位的时间间隔的结果。默认单位(即第二个参数为整型时)为天数。返回值类型:timestamp示例:当入参为text类型时:当入参为dat - [时间和日期截取函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0313.md): date_part函数用于从一个日期时间表达式(timestamp或interval)中提取指定的部分(text),等效于extract(field from timestamp)函数。语法:source,必须是一个timestamp、time或interval类型的值表达式(类型为date的表达式转换为timestamp,因此也可以用) - [几何操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0314.md): 描述:平移,即从第一个参数的每个点的坐标中加上第二个point的坐标。示例:描述:平移,从第一个参数的每个点的坐标中减去第二个point的坐标。示例:描述:伸展/旋转。示例:描述:收缩/旋转。示例:描述:两个图形交点或者交面。示例:描述:图形的路径数目或多边形顶点数。示例:描述:图形的长度或者周长。示例:描述:图形的中心。示例:描述:第一 - [几何函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0315.md): 描述:计算图形的面积。返回类型:double precision示例:描述:计算图形的中心。返回类型:point示例:描述:计算圆的直径。返回类型:double precision示例:描述:矩形的竖直高度。返回类型:double precision示例:描述:图形是否为闭合路径。返回类型:boolean示例:描述:图形是否为开放路径。返 - [几何类型转换函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0316.md): 描述:将圆转换成矩形。返回类型:box示例:描述:将点转换成矩形。返回类型:box示例:描述:将多边形转换成矩形。返回类型:box示例:描述:矩形转换成圆。返回类型:circle示例:描述:将圆心和半径转换成圆。返回类型:circle示例:描述:将多边形转换成圆。返回类型:circle示例:描述:矩形对角线转化成线段。返回类型:lseg示 - [cidr和inet操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0317.md): 操作符<<,<<=,>>,>>=对子网包含进行测试。它们只考虑两个地址的网络部分(忽略任何主机部分),然后判断其中一个网络是等于另外一个网络,还是另外一个网络的子网。描述:小于示例:描述:小于或等于示例:描述:等于示例:描述:大于或等于示例:描述:大于示例:描述:不等于示例:描述:包含于示例:描述:包含于或等于示例:描述:包含示例:描述: - [网络地址函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0318.md): 函数abbrev,host,text主要是为了提供可选的显示格式。任何cidr值都能以显式或者隐式的方式转换为inet值,因此能够操作inet值的函数也同样能够操作cidr值。inet值也可以转换为cidr值,此时inet子网掩码右侧的所有位都将转换为零,以创建一个有效的cidr值。另外,用户还可以使用常规的类型转换语法将一个文本字符串转 - [文本检索操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0319.md): 描述:tsvector类型的词汇与tsquery类型的词汇是否匹配示例:描述:@@的同义词示例:描述:将两个tsquery类型的词汇进行“与”操作示例:描述:将两个tsquery类型的词汇进行“或”操作示例:描述:tsquery类型词汇的非关系示例:描述:一个tsquery类型的词汇是否包含另一个tsquery类型的词汇示例:描述:一个t - [文本检索函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0320.md): 描述:获取文本检索的默认配置。返回类型:regconfig示例:描述:tsvector类型词汇的单词数。返回类型:integer示例:描述:tsquery类型的单词加上操作符的数量。返回类型:integer示例:描述:产生tsquery类型的词汇,并忽略标点。返回类型:tsquery示例:描述:获取tsquery类型的词汇可加索引的部分。 - [文本检索调试函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0321.md): 描述:测试一个配置。返回类型:setof record示例:描述:测试一个数据字典。返回类型:text[]示例:描述:测试一个解析。返回类型:setof record示例:描述:测试一个解析。返回类型:setof record示例:描述:获取分析器定义的记号类型。返回类型:setof record示例:描述:获取分析器定义的记号类型。返回 - [Roaring Bitmap操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0322.md): DWS自8.1.3集群版本开始,支持高效的位图处理操作符,可用于用户画像,精准营销等场景,极大的提高了查询性能。描述:比较两个roaringbitmap是否相等。返回值类型:bool示例:描述:比较两个roaringbitmap是否不相等。返回值类型:bool示例:描述:计算两个roaringbitmap交集以后的结果。返回值类型:roa - [位图函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0323.md): DWS自8.1.3集群版本开始,支持高效的位图处理函数和操作符,可用于用户画像,精准营销等场景,极大的提高了查询性能。描述:将int数组转成roaringbitmap类型。返回值类型:roaringbitmap示例:描述:把roaringbitmap数据转成int,按照多行输出。返回值类型:record类型(多行int值)示例:描述:rb - [Roaring Bitmap聚合函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0324.md): DWS自8.1.3集群版本开始,支持高效的位图聚合函数,可用于用户画像,精准营销等场景,极大的提高了查询性能。描述:将分组内的int值聚合成一个roaringbitmap值。返回值类型:roaringbitmap示例:描述:将分组内的roaringbitmap数据按照交的操作聚合成一个roaringbitmap集合。示例:描述:将分组内的 - [使用场景](https://support.huaweicloud.com/sqlreference-dws/dws_06_0325.md): 目前在互联网、教育、游戏等行业都有实时精准营销的需求。通过系统生成用户画像,在营销时通过条件组合筛选用户,快速提取目标群体。例如:在电商行业中,商家在进行营销活动前,需要根据活动的目的,圈选一批满足特定特征的目标用户群体进行广告推送。在教育行业中,需要根据学生不同的特征,推送有针对性的练习题目,帮助学生查漏补缺。在搜索、视频、门户网站中, - [HLL操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0326.md): HLL类型支持如下操作符: - [哈希函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0327.md): 描述:对bool类型数据计算哈希值。返回值类型:hll_hashval示例:SELECT hll_hash_boolean(FALSE); hll_hash_boolean --------------------- 5048724184180415669 (1 row)描述:设置hash seed(即改变哈希策略)并对boo - [精度函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0328.md): HLL(HyperLogLog)主要存在三种模式Explicit,Sparse,Full。当数据规模比较小的时候会使用Explicit模式和Sparse模式, 这两种模式在计算结果上基本上没有误差。 随着distinct值越来越多,就会转换成Full模式,但结果也会存在一定误差。下列函数用于查看HLL中精度参数。描述:查看当前hll中的s - [聚合函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0329.md): 描述:把哈希后的数据按照分组放到hll中。返回值类型:hll示例:准备数据。CREATE TABLE t_id(id int); INSERT INTO t_id VALUES(generate_series(1,500)); CREATE TABLE t_data(a int, c text); INSERT INTO t_data S - [功能函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0330.md): 描述:打印hll的一些debug参数信息。返回值类型:cstring示例:描述:创建一个空的hll。返回值类型:hll示例:描述:创建空的hll并指定参数log2m,取值范围是10到16。返回值类型: hll示例:描述:创建空的hll并依次指定参数log2m、regwidth。regwidth取值范围是1到5。返回值类型: hll - [内置函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0331.md): HLL(HyperLogLog)有一系列内置函数用于内部对数据进行处理,一般情况下不建议用户使用。 - [数组操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0332.md): 数组比较是使用默认的B-Tree比较函数对所有元素逐一进行比较的。多维数组的元素按照行顺序进行访问。如果两个数组的内容相同但维数不等,决定排序顺序的首要因素是维数。DWS支持的数组操作符如表1所示描述:两个数组是否相等示例:描述:两个数组是否不相等示例:描述:一个数组是否小于另一个数组示例:描述:一个数组是否大于另一个数组示例:描述:一个 - [数组函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0333.md): 数组操作函数对输入的数组数据进行一些基本操作,如添加元素、查找元素,转换数组并返回操作后的数组数据。DWS支持的数组函数参考表1。描述:向数组末尾添加元素,只支持一维数组。返回类型:anyarray示例:向数组[1,2]末尾添加元素3。描述:向数组开头添加元素,只支持一维数组。返回类型:anyarray示例:向数组[2,3]开头添加元素1 - [范围操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0334.md): 范围操作符用于处理范围类型数据的运算(如 @>、&&)。范围操作符支持直接应用于查询表达式,快速筛选特定区间内的数据,常用于范围比较、查询限制及区间界定。比较操作符<、>、<=和>=先比较下界,只有下界相等时才比较上界。<<、>>和-|-操作符当包含空范围时也会返回false,即不认为空范围在其他范围之前或之后。并集和差集操作符的执行结果 - [范围函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0335.md): 范围函数用于定义范围的上下限以及判断某个值是否在范围限制内。描述:获取范围的下界。如果范围是空或者下界为无限,则返回null。返回类型:范围元素类型示例:描述:获取范围的上界。如果范围是空或者上界为无限,则返回null。返回类型:范围元素类型示例:描述:判断范围是否为空。返回类型:boolean示例:描述:判断范围的下界是否被包含在内。返 - [序列号生成函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0336.md): generate_series()函数根据指定的开始值(start)、结束值(stop)和步长(step)返回一个基于系列的集合。generate_series()函数的入参中,当step是正数且start大于stop,则返回零行。相反,当step是负数且start小于stop,则返回零行。如果任何输入为NULL也会返回零行。如果step - [下标生成函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0337.md): 描述:生成一系列包括给定数组的下标。返回值类型:setof int示例:描述:生成一系列包括给定数组的下标。当reverse为真时,该系列则以相反的顺序返回。返回值类型:setof int示例:generate_subscripts是为给定数组的指定维度生成有效下标集的函数。如果数组中没有所请求的维度或者任何输入NULL数组,均返回零行( - [会话信息函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0338.md): 描述:当前数据库的名字(在标准SQL中称“catalog”),与current_database()同义。返回值类型:name示例:描述:当前数据库的名字。返回值类型:name示例:描述:用于获取当前客户端的字符编码方式。当遇到字符显示问题时,通过检查客户端编码可快速定位问题。返回值类型:name示例:描述:由客户端提交的当前执行语句(可 - [访问权限查询函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0339.md): 描述:指定用户是否有访问表任何列的权限。返回类型:boolean描述:当前用户是否有访问表任何列的权限。返回类型:boolean备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或 - [模式可见性查询函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0340.md): 每个函数对数据库对象执行可见性检查。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名字和相关索引的访问方法。所有这些函数都需使用OID来标识要检查的对象。如果用户想通过名字测试对象,则可使用OID别名类型(regclass、regtype、regprocedure、 - [系统表信息函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0341.md): 描述:获取数据类型的SQL名称。返回类型:text备注:format_type通过数据类型的类型OID以及可能的类型修饰词,返回其SQL名称。如果不知道具体的修饰词,则在类型修饰词的位置传入NULL。类型修饰词一般只对有长度限制的数据类型有意义。format_type所返回的SQL名称中包含数据类型的长度值,其大小是:实际存储长度len - [系统函数信息函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0342.md): 描述:查询系统内置函数的信息。返回类型:record描述:获取函数的定义。返回类型:textfunc_oid为函数的OID,可以通过PG_PROC系统表查询。示例:查询函数justify_days的OID及其函数定义。备注:pg_get_functiondef返回函数查询结果为存储过程原始文本格式,自带转义符'\',便于后续应用的正确解析 - [注释信息函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0343.md): 描述:获取一个表字段的注释。返回类型:text备注:col_description返回一个表中字段的注释,通过表OID和字段号来声明。示例:查询pg_class系统表获取表OID,查询INFORMATION_SCHEMA.COLUMNS系统视图获取column_number。描述:获取一个数据库对象的注释。返回类型:text备注:带有两个 - [事务ID和快照](https://support.huaweicloud.com/sqlreference-dws/dws_06_0344.md): 以下的函数在输出形式中提供服务器事务信息。这些函数的主要用途是为了确定在两个快照之间有哪个事务提交。描述:如果提交或忽略给定的XID(gxid)。NULL表示的状态是未知的(运行,准备,冻结等)。返回类型:bool描述:获取当前事务ID。返回类型:bigint描述:获取当前快照。返回类型:txid_snapshot描述:在快照中获取正在进 - [计算子集群函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0345.md): 描述:返回计算子集群当前的负载状态。返回类型:void示例: - [锁信息函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0346.md): 描述:返回集群中有冲突的锁信息。当某个锁正在等待另一个锁,或正被另一个锁等待,则认为该锁是冲突的。返回类型:setof record示例: - [获取残留文件列表函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0347.md): 描述:用于获取当前节点的所有残留文件记录。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。返回值类型:record返回信息如下:示例:描述:pg_get_residualfiles()的CN统一查询函数。该函数为集群级函数,与当前所在的数据库无关,在CN实例上运行。返回值类型:record返回信息如下:示例: - [验证残留文件函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0348.md): 描述:用于验证参数指定文件中记录的文件是否为残留文件。该函数为实例级函数,与当前所在的数据库相关,可以在任意实例上运行。参数类型:text返回值类型:bool函数返回字段如下:示例:本函数只能验证记录的文件在当前登录的数据库中是否是残留文件。如果记录的文件不属于当前登录的数据库,则不会进行校验行为。描述:用于验证当前实例上所有残留文件列表 - [删除残留文件函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0349.md): 描述:用于删除当前实例中指定残留文件列表中的文件。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。参数类型:text返回值类型:record函数返回字段如下:示例:残留文件只有在调用pg_verify_residualfiles()进行验证后才能被真正删除。删除动作不区分数据库,指定文件中所有已经验证的文件都会被删除。如 - [残留文件管理函数应用](https://support.huaweicloud.com/sqlreference-dws/dws_06_0350.md): pgxc类残留文件管理函数只对CN和当前主DN进行操作,不会验证和清理备DN上的残留文件。所以主DN完成清理后,应在备DN上及时执行残留文件清理操作或对备机进行build,防止主备切换后由于增量build导致备机残留文件被重新复制回主DN,导致未成功清理的假象。以当前两个用户自建的数据库db1、db2为例:在CN上获取集群的所有残留文件记 - [产生XML内容](https://support.huaweicloud.com/sqlreference-dws/dws_06_0351.md): 本节函数和类函数的表达式可以用来从SQL数据产生XML内容。适用于将查询结果格式化成XML文档以便于在客户端应用中处理。描述:从字符数据中生成一个XML类型的值。返回值类型:xml示例:描述:从XML类型的值生成一个字符串。返回值类型:type,可以是character,character varying或text(或其别名)示例:描述: - [XML谓词](https://support.huaweicloud.com/sqlreference-dws/dws_06_0352.md): 本节的函数用于检查xml值的属性。描述:如果参数XML值是一个正确的XML文档,则IS DOCUMENT返回真;如果非正确XML文档,则返回假;参数为空时返回空。返回值类型:bool描述:如果参数XML值不是一个正确的XML文档,则IS NOT DOCUMENT返回真;如果是正确XML文档,则返回假;参数为空时返回空。返回值类型:bool - [处理XML](https://support.huaweicloud.com/sqlreference-dws/dws_06_0353.md): 为了处理数据类型XML的值,DWS提供了函数xpath和xpath_exists计算XPath表达式以及XMLTABLE表函数。描述:它返回一个XML值的数组对应xpath表达式所产生的节点集。如果xpath表达式返回一个标量值而不是节点集,将返回一个单个元素的数组。该函数的第二个参数xml必须是一个完整的XML文档,它必须有一个根节点元 - [将表映射到XML](https://support.huaweicloud.com/sqlreference-dws/dws_06_0354.md): 描述:把表的内容映射成XML值。返回值类型:xml描述:把关系表的模式映射成XML模式文档。返回值类型:xml描述:把关系表映射成XML值和模式文档。返回值类型:xml描述:把SQL查询的内容映射成XML值。返回值类型:xml描述:把SQL查询映射成XML模式文档。返回值类型:xml描述:把SQL查询映射成XML值和模式文档。返回值类型: - [JSON/JSONB操作符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0355.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [JSON/JSONB函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0356.md): JSON/JSONB函数表示可以用于JSON类型(请参考JSON类型)数据的函数。JSON/JSONB函数只提供基础功能,如有其他复杂或特殊性能要求场景,请联系技术工程师进行评估。描述:返回JSON类型的数组。一个多维数组成为一个JSON数组的数组。如果pretty_bool设置为true,将在一维元素之间添加换行符。返回类型:json示 - [CREATE MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0357.md): 创建新的物化视图。物化视图语法仅8.2.1.220及以上集群支持。物化视图(Materialized View)是数据库中一种特殊类型的数据库对象。它将复杂计算的查询结果预计算并存储在数据库中,实现加速查询的目的。适用于频繁对大量数据进行复杂的查询和分析场景,使用物化视图可以预先计算和存储该场景的查询结果,显著提高查询性能。创建权限:创建 - [ALTER MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0358.md): 修改物化视图属性。物化视图语法仅8.2.1.220及以上集群支持。使用ALTER MATERIALIZED VIEW语句需确保enable_matview设置为on。设置是否对物化视图启动查询重写。ALTER MATERIALIZED VIEW [ IF EXISTS ] { materialized_view_name } [ - [Hudi系统函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0359.md): Hudi系统函数仅9.1.0.100及以上集群版本支持。描述:查询Hudi外表参数设置详情。返回值类型:setof record示例:描述:查询Hudi外表的属性信息(hoodie.properties)。以key-value键值对表示。返回值类型:setof record示例:描述:获取当前Hudi外表最新commit的时间戳和数据写入 - [DROP MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0360.md): 删除物化视图。物化视图语法仅8.2.1.220及以上集群支持。无删除物化视图。ALTER MATERIALIZED VIEW,CREATE MATERIALIZED VIEW,REFRESH MATERIALIZED VIEW - [REFRESH MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-dws/dws_06_0361.md): 刷新物化视图。该语法仅8.2.1.220及以上集群支持。刷新方式由CREATE MATERIALIZED VIEW语法中的REFRESH参数指定。目前支持全量刷新或者定时刷新。刷新操作会阻塞基表的DML操作。刷新物化视图。级联向下刷新物化视图。CREATE MATERIALIZED VIEW,ALTER MATERIALIZED VIEW - [冷热表用户函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0362.md): 描述:用来修改冷热表的冷数据切换至OBS上的时间,默认为每日0点。table_name为冷热表的表名,类型为name,time为数据切换任务调度时间,类型为Time。返回值:SUCCESS,任务时间修改成功。示例:描述:切换所有冷热表,将符合冷热切换规则的数据由热数据切换至冷数据(OBS中)。返回值类型:int返回值字段:success_ - [CREATE STATISTICS](https://support.huaweicloud.com/sqlreference-dws/dws_06_0364.md): 在当前数据库中为表创建一个扩展统计信息对象,该对象由命令的执行者所有。该语法仅8.2.1.200及以上集群版本支持(8.3.0集群版本不支持)。目前该命令仅支持创建表达式统计信息。不支持对临时表创建表达式统计信息。不支持在表的分区上创建表达式统计信息。不支持对包含聚集函数、子查询、窗口函数、返回集合类型的表达式创建统计信息。创建示例表并插 - [DROP STATISTICS](https://support.huaweicloud.com/sqlreference-dws/dws_06_0365.md): 删除一个扩展统计信息对象。该语法仅8.2.1.200及以上集群版本支持(8.3.0集群版本不支持)。无删除一个扩展统计信息对象。DROP STATISTICS s1_t1_row;CREATE STATISTICS - [ALTER EXTERNAL SCHEMA](https://support.huaweicloud.com/sqlreference-dws/dws_06_0366.md): 修改EXTERNAL SCHEMA(外部模式)的属性。该语法仅8.3.0及以上版本支持。根据指定的名称修改EXTERNAL SCHEMA。ALTER EXTERNAL SCHEMA schema_name WITH [ SOURCE source_name ] [ DATABASE 'database_name - [CREATE EXTERNAL SCHEMA](https://support.huaweicloud.com/sqlreference-dws/dws_06_0367.md): 创建EXTERNAL SCHEMA,即外部模式。该语法仅8.3.0及以上版本支持。使用CREATE EXTERNAL SCHEMA建立DWS集群与外部数据源(如Lakeformation、DLI、Hive Metastore)的元数据映射通道,实时高效访问外部数据源。用户通过“外部模式名.表名” 直接查询,无需手动创建外表或数据搬迁,显著 - [数组类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0368.md): 数组是一组数据的集合。数组类型允许在单个数据库字段中存储多个值。数组类型通常用于存储和处理具有相似属性的数据。或其中参数param说明如下:param :数组包含的值,允许出现零个或多个,多个值之间用逗号分隔,没有值可填写为NULL。以'{ param}' 这种格式作为数组常量时,其中的字符串类型的元素不能再以单引号开始和结束,需要使用双 - [枚举类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0369.md): 枚举(enum)类型是由一个静态、值的有序集合构成的数据类型。它们等效于很多编程语言所支持的enum类型。枚举类型可以是一周中的日期,或者一个数据的状态值集合。枚举类型可以使用CREATE TYPE命令创建,例如:枚举类型被创建后,可以在表和函数定义中使用:枚举类型值的排序是该类型被创建时所列出的值的顺序。每一种枚举数据类型都是独立的并且 - [范围类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0370.md): 范围类型是表示某些元素类型(称为范围的子类型)的值范围的数据类型。例如,时间戳范围可用于表示保留会议室的时间范围。在这种情况下,数据类型为tsrange(“时间戳范围”的缩写),时间戳是子类型。子类型必须具有总体的顺序,以便很好地定义元素值是在值的范围内、之前还是之后。范围类型可以表达单一范围值中的多个元素值,并且可以很清晰地表达诸如范围 - [复合类型](https://support.huaweicloud.com/sqlreference-dws/dws_06_0371.md): 复合类型表示行或记录的结构,它本质上就是字段名及其数据类型的列表。DWS允许支持将表的列声明为复合类型。复合类型本质上和表的行类型相同,但是如果只想定义一种类型,使用CREATE TYPE可避免创建一个实际的表。单独的复合类型也是很有用的,例如可以作为函数的参数或者返回类型。DWS支持用户使用CREATE TYPE定义复合类型:定义复合类 - [漏斗函数和留存函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0372.md): 漏斗和留存相关函数仅8.3.0及以上集群版本支持。漏斗函数与留存函数都是常见的用户行为分析工具,广泛应用于产品分析和数据分析领域,尤其是在产品经理、数据科学家和市场营销人员的工作中。这些函数的目标是帮助分析用户的行为路径、理解用户的流失和转化问题,以及评估产品的长期吸引力和用户忠诚度。漏斗分析:一种用于分析用户在执行某一目标过程中所经历的 - [扫描残留文件函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0373.md): 扫描残留文件函数仅8.3.0及以上集群版本支持,本章节所有函数仅限sysadmin角色调用。描述:用于扫描当前节点所连接数据库的所有残留文件记录。该函数为库级函数,与当前所在的数据库相关,可以在任意实例上运行。连接到CN执行时,扫描当前CN节点所在数据库的本地残留文件和OBS全部残留文件。连接到DN执行时,扫描当前DN节点所在数据库的本地 - [EXTERNAL SCHEMA系统函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0374.md): EXTERNAL SCHEMA相关系统函数仅8.3.0及以上集群版本支持。描述:获取external schema的全量表名信息,仅支持lakeformation。入参: schema_name为external schema名称。返回值类型:setof record示例:描述:获取external schema表的属性信息。入参: - [内存管理函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0379.md): 内存管理函数仅9.1.0及以上集群版本支持。描述:查询指定共享内存下内存上下文申请的所有chunk信息。参数contextname,表示内存上下文名称。使用该函数需先使用pg_shared_chunk_dump(contextname char(64))函数将相关信息打印成文件。返回值类型:record示例:描述:查询指定线程创建的某个内 - [数据共享函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0383.md): 描述:存算分离架构下,逻辑集群(Virtual Warehouse,以下简称VW)之间建立KV订阅关系,建立了订阅关系之后,消费者VW的KVcache会定期的从生产者的obs cudesc快照目录增量同步sst文件到本地,后续就可以支持在消费者VW中跨VW查询生产者VW中的表。 创建的订阅关系可以在pgxc_group_subscript - [获取tablespace垃圾桶文件信息函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0404.md): 描述:存算分离架构下获取filesystem为OBS的tablespace在垃圾桶目录下的文件统计信息,包括文件数量、文件总大小以及对应垃圾桶目录是否开启了自动清理生命周期策略。该函数仅9.1.0.222及以上集群版本支持。返回值类型:record函数返回字段如下:示例: - [字符串处理函数和操作符总体介绍](https://support.huaweicloud.com/sqlreference-dws/dws_06_0410.md): DWS提供的字符处理函数和操作符主要用于字符串处理,例如获取字符串长度、数据截取、拼接、转化、比较等操作。在了解字符串处理函数前,您可以先简单了解位、字节、字符的相关概念:位(bit):计算机中最小的信息单位,表示二进制中的0或1,只有两种状态(对应电路的通 / 断、磁介质的正 / 反向磁化)。字节(byte):1字节=8位,是计算机存储 - [获取字符串长度](https://support.huaweicloud.com/sqlreference-dws/dws_06_0411.md): DWS支持以下函数计算字符串的长度,包括获取位数、字节数和字符数。关于位数、字节数和字符数的区别可参见字符串处理函数和操作符总体介绍。描述:字符串的位数。返回结果为字节数乘以8,得到总位数。字符串的位数取决于数据库编码方式,例如GBK字符编码下,一个中文为2个字节,UTF8和SQL_ASCII字符编码下,一个中文字为3个字节。返回值类型: - [截取字符串](https://support.huaweicloud.com/sqlreference-dws/dws_06_0412.md): 在数据仓库多维分析场景中,字符串截取是支撑业务分析的关键技术能力。典型场景包括:提取核心信息:对复合订单号进行智能分割,例如将"EC2023-BJ-0129A"拆解出核心序列号"0129A",在18位身份证编码中使用substring()函数同时捕获行政区划代码、出生年月信息等。脱敏数据:用户隐私数据处理,例如通过right()函数精准提 - [拼接字符串](https://support.huaweicloud.com/sqlreference-dws/dws_06_0413.md): 描述:字符串拼接函数。返回值类型:raw示例:描述:按照设置的次数将字符串重复输出。如果指定的重复次数为零或负数,函数返回空字符串。返回值类型:text示例:描述:连接字符串。返回值类型:text示例:描述:连接字符串和非字符串。返回值类型:text示例:描述:将字符串str1和str2连接并返回。ORA和TD兼容模式下,返回结果为所有非 - [替换和填充字符串](https://support.huaweicloud.com/sqlreference-dws/dws_06_0414.md): 描述:通过填充字符fill(缺省时为空白),把string填充为length长度。如果string已经比length长则将其尾部截断。返回值类型:text示例:描述:用指定的字符串替换原字符串中从指定位置开始的字符串部分,它可以灵活地处理字符串的替换操作。参数说明:FROM int,表示从第一个string的第几个字符开始替换。for i - [删除指定字符](https://support.huaweicloud.com/sqlreference-dws/dws_06_0415.md): 描述:删除字符串首部、尾部或者两端的特定字符。参数说明:leading,仅删除字符串开头的空格或指定字符。trailing,仅删除字符串结尾的空格或指定字符。both,删除字符串开头和结尾的空格或指定字符(默认行为)。characters:可选参数,指定要去除的特定字符。如果不指定,默认去除空格。string:要处理的原字符串。返回值类型 - [分割字符串](https://support.huaweicloud.com/sqlreference-dws/dws_06_0416.md): 描述:用POSIX正则表达式作为分隔符,分隔string。和regexp_split_to_table相同,不过regexp_split_to_array会把它的结果以一个text数组的形式返回。返回值类型:text[]示例:描述:用POSIX正则表达式作为分隔符,分隔string。如果没有与pattern的匹配,该函数返回string。 - [转换字符串](https://support.huaweicloud.com/sqlreference-dws/dws_06_0417.md): 描述:把字符串转化为大写。返回值类型:varchar示例:描述:把字符串转化为大写。返回值类型:varchar示例:描述:把字符串转化为小写。返回值类型:varchar示例:描述:把字符串转化为小写。返回值类型:varchar示例:描述:将字符串中的每个单词的首字母转化为大写,其他字母转化为小写。返回值类型:text示例:描述:返回适用于 - [比较字符串](https://support.huaweicloud.com/sqlreference-dws/dws_06_0418.md): 描述:比较两个字符串大小,若所有的字符串均相同,则返回0,若根据当前分类次序,第一个字符串小于第二个,则返回-1,其它情况返回1。若参数含有NULL值,返回NULL。返回值类型:text示例: - [获取某一个字符或子字符串的位置](https://support.huaweicloud.com/sqlreference-dws/dws_06_0419.md): 描述:获取子字符串在目标字符串中的位置。如果没有获取到匹配项,则返回0。第一个text:必选,目标字符串。第二个text,必选,待匹配的子字符串。第一个int,表示开始匹配起始位置,若未配置该参数,默认从头开始匹配。第二个int,表示匹配的次数,若未配置该参数,默认是第一次出现的位置。返回值类型:integer示例:获取子字符串“bcd” - [判断某个字符串是否符合某种匹配模式(字符串相关的模式匹配函数)](https://support.huaweicloud.com/sqlreference-dws/dws_06_0420.md): 模式匹配函数(LIKE)是一种字符串比较函数,用于判断目标字符串是否符合指定的模式规则,返回布尔值(true/false,示例中用 t/f 表示)。它与操作符=的区别如下:=:严格匹配整个字符串(字符数、内容完全一致)。LIKE:模糊匹配(通过通配符忽略部分字符差异,只关注「关键模式」)。适用场景:这类函数主要用于模糊查询,例如:查找姓名 - [获取当前时间和日期函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0421.md): 描述:实时时钟的当前时间戳。返回值类型:timestamp with time zone示例:描述:返回当前日期。返回值类型:date示例:描述:返回当前日期。此函数为MySQL兼容性函数。该函数仅8.2.0及以上集群版本支持。返回值类型:date示例:描述:返回当前时间。返回值类型:time with time zone示例:描述:返回 - [时间和日期格式化函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0422.md): date_format函数将日期参数按照fmt指定的格式转换为字符串。示例:表1显示了可以用于将日期参数格式化输出的格式类型,这些格式类型适用于函数date_format、time_format、str_to_date、str_to_time和from_unixtime。date_format支持的输出格式中,%U、%u、%V、%v、%X - [其他时间和日期处理函数](https://support.huaweicloud.com/sqlreference-dws/dws_06_0423.md): 描述:调整间隔,使得30天时间周期表示为月。返回值类型:interval示例:描述:调整时间间隔,使得24小时时间周期表示为日。返回值类型:interval示例:描述:结合justify_days和justify_hours,调整时间间隔。返回值类型:interval示例:描述:将数字加时间间隔单位转换为INTERVAL DAY TO S ## SQL语法参考(9.1.1.x) - [DWS SQL概述](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0001.md): SQL是用于访问和处理数据库的标准计算机语言。SQL提供了各种任务的语句,包括:查询数据。在表中插入、更新和删除行。创建、替换、更改和删除对象。控制对数据库及其对象的访问。保证数据库的一致性和完整性。SQL语言由用于处理数据库和数据库对象的命令和函数组成。该语言还会强制实施有关数据类型、表达式和文本使用的规则。因此在SQL参考章节,除了S - [与PostgreSQL的差异](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0002.md): DWS与PostgreSQL的差异基于PostgreSQL 9.X版本整理,具体差异如下:DWS gsql相较于PostgreSQL psql做了如下安全加固变更:取消通过元命令\password设置用户密码。新增元命令\i+、 \ir+、\include_relative+和输入输出参数-k,以支持给导入导出的文件加密。取消打印命令行历 - [DWS SQL语法格式说明](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0003.md): 为了方便对语法使用的理解,在文档中对SQL语法文本按如下格式进行表述。 - [关键字](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0007.md): SQL里有保留关键字和非保留关键字之分。根据标准,保留关键字绝不能用做其他标识符。非保留关键字只是在特定的环境里有特殊的含义,而在其他环境里是可以用做标识符的,即便如此,也尽量避免使用非保留关键字。可以使用SELECT * FROM pg_get_keywords();查询DWS的关键字。举例:“AUTHORIZATION”为保留关键字, - [数值类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0009.md): 数值类型也叫数字类型。由1、2、4或8字节的整数以及4或8字节的浮点数和可选精度小数组成。对应的操作符和相关函数,请参见数学函数和运算符。DWS支持的数值类型按精度可以分为:整数类型,任意精度型,浮点类型和序列整型。TINYINT、SMALLINT、INTEGER、BINARY_INTEGER和BIGINT类型存储整个数值(不带有小数部分 - [货币类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0010.md): 货币类型存储带有固定小数精度的货币金额。表1中显示的范围假设有两位小数。可以以任意格式输入,包括整型、浮点型或者典型的货币格式(如“$1,000.00”)。根据区域字符集,输出一般是最后一种形式。numeric,int和bigint类型的值可以转化为money类型。如果从real和double precision类型转换到money类型, - [布尔类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0011.md): “真”值的有效文本值是:TRUE、't'、'true'、'y'、'yes'、'1'。“假”值的有效文本值是:FALSE、'f'、'false'、'n'、'no'、'0'。使用TRUE和FALSE是比较规范的用法(也是SQL兼容的用法)。显示用字母t和f输出boolean值。 - [字符类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0012.md): DWS支持的字符类型请参见表1。字符串操作符和相关的内置函数请参见字符串处理函数和操作符。除了每列的大小限制以外,每个元组的总大小也不可超过1GB-8203B(即1073733621B)。对于字符串数据,建议使用变长字符串数据类型,并指定最大长度。请务必确保指定的最大长度大于需要存储的最大字符数,避免超出最大长度时出现字符截断现象。除非明 - [二进制类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0013.md): DWS支持的二进制类型请参见表1。除了每列的大小限制以外,每个元组的总大小也不可超过1G-8203字节。示例 - [日期/时间类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0014.md): DWS支持的日期/时间类型请参见表1。该类型的操作符和内置函数请参见时间日期函数和操作符。如果其他的数据库时间格式和DWS的时间格式不一致,可通过修改配置参数DateStyle的值来保持一致。示例:日期和时间的输入几乎可以是任何合理的格式,包括ISO-8601格式、SQL-兼容格式、传统POSTGRES格式或者其它的形式。系统支持按照日、 - [几何类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0015.md): DWS支持的几何类型请参见表1。最基本的类型:点,是其它类型的基础。DWS提供了一系列的函数和操作符用来进行各种几何计算,如拉伸、转换、旋转、计算相交等。详细信息请参考几何函数和操作符。点是几何类型的基本二维构造单位。用下面语法描述point的数值:x和y是用浮点数表示的点的坐标。点输出使用第一种语法。线段(lseg)是用一对点来代表的。 - [网络地址类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0016.md): DWS提供用于存储IPv4、IPv6、MAC地址的数据类型。网络地址类型提供输入错误检查和特殊的操作和功能(请参见网络地址函数和操作符),比纯文本类型更适合存储IPv4、IPv6、MAC地址的数据类型。在对inet或cidr数据类型进行排序的时候,IPv4地址总是排在IPv6地址前面,包括那些封装或者是映射在IPv6地址里的IPv4地址, - [位串类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0017.md): 位串就是一串1和0的字符串。它们可以用于存储位掩码。DWS支持两种位串类型:bit(n)和bit varying(n),其中n是一个正整数。bit类型的数据必须准确匹配长度n,如果存储短或者长的数据都会报错。bit varying类型的数据是最长为n的变长类型,超过n的类型会被拒绝。一个没有长度的bit等效于bit(1),没有长度的bit - [文本搜索类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0018.md): DWS提供了tsvector和tsquery两种数据类型用于支持全文检索。tsvector类型表示为文本搜索优化的文件格式,tsquery类型表示文本查询。tsvector类型表示一个检索单元,通常是一个数据库表中的一行文本字段或者这些字段的组合。tsvector类型的值是唯一分词的分类列表,把一句话的词格式化为不同的词条,在进行分词处理 - [UUID类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0019.md): UUID:通用唯一识别码(Universally Unique Identifier)是用于计算机体系中以识别信息的一个128位标识符。UUID的作用是让分布式系统中的所有元素都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。很多应用场景需要一个ID,仅用来标识一个对象。常见的例子有数据库表的ID字段。另一个例子是前端的各种 - [JSON类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0020.md): JSON数据类型可以用来存储JSON(JavaScript Object Notation)数据。可以是单独的一个标量,也可以是一个数组,也可以是一个键值对象,其中数组和对象可以统称容器(container):标量(scalar):单一的数字、bool、string、null都可以叫做标量。数组(array):[]结构,里面存放的元素可以 - [HLL数据类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0021.md): HLL(HyperLoglog)是统计数据集中唯一值个数的高效近似算法。它有着计算速度快,节省空间的特点,不需要直接存储集合本身,而是存储一种名为HLL的数据结构。每当有新数据加入进行统计时,只需要把数据经过哈希计算并插入到HLL中,最后根据HLL就可以得到结果。HLL与其他算法的比较请参见表1。HLL在计算速度和所占存储空间上都占优势。 - [对象标识符类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0022.md): DWS在内部使用对象标识符(OID)作为各种系统表的主键。系统不会给用户创建的表增加一个OID系统字段,OID类型代表一个对象标识符。目前OID类型用一个四字节的无符号整数实现。因此不建议在创建的表中使用OID字段做主键。OID类型:主要作为数据库系统表中字段使用。示例:OID别名类型REGCLASS:主要用于对象OID值的简化查找。示例 - [伪类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0023.md): DWS数据类型中包含一系列特殊用途的类型,这些类型按照类别被称为伪类型。伪类型不能作为字段的数据类型,但是可以用于声明函数的参数或者结果类型。当一个函数不仅仅是简单地接受并返回某种SQL数据类型,伪类型能起到很大的作用。表1列出了所有的伪类型。声明用C编写的函数(不管是内置的还是动态装载的)都可以接受或者返回任何这样的伪数据类型。当伪类型 - [列存表支持的数据类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0024.md): 列存表支持的普通数据类型如表1所示。数组类型支持情况与GUC参数enable_vectorization_array相关,具体如下:当GUC参数enable_vectorization_array(该参数仅9.1.1.100及以上集群版本支持)打开时,列存表可支持的数组类型包括bool, tiny int, small int, int, - [XML类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0025.md): XML数据类型可以被用来存储XML(eXtensible Markup Language)数据。XML数据也可以存储为text类型,但是XML数据类型的优势在于会检查每个存储的值是不是结构良好的XML值。XML可以存储由XML标准定义的格式良好的文档,以及由XML标准中定义的“内容”片段,内容片段中可以有多个顶级元素或字符节点。XML类型 - [常量与宏](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0026.md): DWS支持的常量和宏请参见表1。 - [逻辑操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0028.md): 常用的逻辑操作符有AND、OR和NOT,其运算结果有三个值,分别为TRUE、FALSE和NULL,其中NULL代表未知。运算优先级顺序为:NOT>AND>OR。运算规则请参见表1,表中的a和b代表逻辑表达式。操作符AND和OR具有交换性,即交换左右两个操作数,不影响其结果。 - [比较操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0029.md): 比较操作符可用于所有相关的数据类型,并返回布尔类型数值。所有比较操作符都是双目操作符,被比较的两个数据类型必须是相同的数据类型或者是可以进行隐式转换的类型。例如1<2<3这样的表达式为非法的,因为布尔值和3之间不能做比较。DWS提供的比较操作符请参见表1。 - [二进制字符串函数和操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0031.md): SQL定义了一些二进制字符串函数,这些函数使用关键字而不是逗号来分隔参数。另外,DWS提供了函数调用所使用的常用语法。描述:二进制字符串中的字节数。返回值类型:integer示例:描述:替换子串。返回值类型:bytea示例:描述:特定子字符串的位置。返回值类型:integer示例:描述:截取子串。返回值类型:bytea示例:截取时间,获取 - [位串函数和操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0032.md): 除了常用的比较操作符之外,还可以使用以下的操作符。&,|和#的位串操作数必须等长。在位移的时候,保留原始的位串长度(并以0填充)。描述:位串之间进行连接。示例:描述:位串之间进行“与”操作。示例:描述:位串之间进行“或”操作。示例:描述:位串之间如果不一致进行“或”操作。如果两个位串中对应位置都为1或者0,则该位置返回为0。示例:描述:位 - [模式匹配操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0033.md): 数据库提供了三种实现模式匹配的方法:SQL LIKE操作符、SIMILAR TO操作符和POSIX-风格的正则表达式。除了这些基本的操作符外,还有一些函数可用于提取或替换匹配子串并在匹配位置分离一个串。判断字符串是否能匹配上LIKE后的模式字符串。如果字符串与提供的模式匹配,则LIKE表达式返回为真(NOT LIKE表达式返回假),否则返 - [类型转换函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0036.md): 描述:类型转换函数,将x转换成y指定的类型。示例:描述:类型转换函数,将x转换成y指定的类型。该函数仅8.2.0及以上集群版本支持。示例:描述:将x转换成给定的type类型值,若转换失败且当前类型转换为DWS允许的转换,则返回NULL,否则报错。该函数仅8.2.0及以上集群版本支持。示例:描述:将一个十六进制构成的字符串转换为二进制。返回 - [UUID函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0040.md): UUID函数表示可以用于生成UUID类型(请参考UUID类型)数据的函数。描述:生成一个UUID类型的序列号。返回类型:UUID示例:uuid_generate_v1函数根据时间信息、集群节点编号和生成该序列的线程号生成UUID,该UUID在单个集群内是全局唯一的,但在多个集群间的时间信息、集群节点编号、线程号和时钟序列仍然存在同时相等的 - [SEQUENCE函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0043.md): 序列函数为用户从序列对象中获取后续的序列值提供了简单的多用户安全的方法。递增序列并返回新值。为了避免从同一个序列获取值的并发事务被阻塞, nextval操作不会回滚;也就是说,一旦获取了一个值,它就会被认为已被使用,并且不会再次返回。 即使该操作处于事务中,当事务随后中断,或者调用查询最终没有使用该值,也会出现这种情况。这种情况将在指定值 - [聚集函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0046.md): 聚集函数是数据库中常用的函数,它将多行数据合并计算为单个统计值,帮助用户快速从大量数据中获取关键数据概览,如总数、平均数、最大值和去重计数等,广泛应用于数据报表和业务分析等场景。描述:计算所有输入行的expression总和。返回类型:通常情况下输入数据类型和输出数据类型是相同的,但以下情况会发生类型转换:对于SMALLINT或INT输入 - [窗口函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0047.md): 普通的聚集函数将多行数据聚集为一行结果,而窗口函数可以跨行计算,并将计算结果填充到每一行中。窗口函数基于查询结果集的子集(即“窗口”)进行计算,实现了与聚集函数类似的聚集功能,因此聚集函数也可以作为窗口函数使用。 窗口函数可以扫描所有的行的同时,将原始数据和聚集计算结果一并输出。列存表目前只支持窗口函数rank(expression)、r - [安全函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0048.md): 描述:显示当前账户距离密码过期的时间。密码过期后提示用户修改密码。与GUC参数password_effect_time相关。返回值类型:interval示例:描述:显示当前账户距离密码过期的时间。密码过期后用户无法登录数据库。与创建用户的DDL语句PASSWORD EXPIRATION period相关,函数返回值大于等于-1,如果创建用 - [条件表达式函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0050.md): 描述:返回参数列表中第一个非NULL的参数值。COALESCE(expr1, expr2) 等价于CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END。示例:如果表达式列表中的所有表达式都等于NULL,则本函数返回NULL。它常用于在显示数据时用缺省值替换NULL。和CASE表达式一样 - [配置设置函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0053.md): 配置设置函数是用于查询及修改运行时配置参数的函数。描述:当前的设置值。返回值类型:text备注:current_setting用于以查询形式获取setting_name的当前值。和SQL语句SHOW是等效的。比如:描述:用于读取全局变量当前的设置值。返回值类型:text备注:read_global_var用于以查询形式获取global_s - [通用文件访问函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0054.md): 通用文件访问函数提供了对数据库服务器上的文件的本地访问接口。只有数据库集群目录和log_directory目录里面的文件可以访问。使用相对路径访问集群目录里面的文件,以及匹配log_directory配置而设置的路径访问日志文件。只有数据库系统管理员才能使用这些函数。描述:列出目录中的文件。返回值类型:setof text备注:pg_ls - [服务器信号函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0055.md): 服务器信号函数向其他服务器进程发送控制信号。只有系统管理员才能使用这些函数。描述:取消指定后端线程的当前查询。返回值类型:boolean备注:pg_cancel_backend函数向指定的后端进程(由pid标识)发送一个查询取消信号(SIGINT)。要获取活动后端进程的PID,可以通过pg_stat_activity视图的pid字段查询, - [快照同步函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0057.md): 快照同步函数是导出当前快照的标识符。描述:创建性能数据快照。返回值类型:text该函数只有数据库管理员SYSADMIN才可以执行,非管理员执行会提示无权限。该函数只能在CN上执行,在DN上执行会返回:“WDR snapshot can only be created on coordinator.”。执行该函数前需确认enable_wdr - [咨询锁函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0059.md): 咨询锁函数用于管理咨询锁(Advisory Lock),此类函数目前仅内部使用。描述:获取会话级别的排它咨询锁。返回值类型:void备注:pg_advisory_lock锁定应用程序定义的资源,该资源可以用一个64位或两个不重叠的32位键值标识。如果已经有另外的会话锁定了该资源,则该函数将阻塞到该资源可用为止。这个锁是排它的。多个锁定请求 - [复制函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0061.md): 复制函数是系统为实现高可用在各个实例间进行日志同步或数据同步所提供的统计或操作方法。除统计查询外的复制函数为内部调用函数,不建议用户直接使用。描述:创建逻辑复制槽。该函数在9.1.0.200及之后版本已废弃,为兼容历史版本功能保留该函数。参数说明:slot_name流复制槽名称。取值范围:字符串,不支持除字母,数字,以及(_?-.)以外的 - [其它函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0062.md): 描述:检查连接池中缓存的连接数据是否与pgxc_node一致。8.3.0及以上集群版本中该参数已废弃。返回值类型:boolean描述:更新连接池中缓存的连接信息。返回值类型:boolean描述:清理CN上无效的后台线程(这些后台线程持有无效的pooler连接,这里无效的pooler连接指的是连接到当前DN备实例的连接)。返回值类型:rec - [资源管理函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0063.md): 资源管理模块相关函数介绍。描述:作业切换资源池函数,9.1.0及以上集群版本支持。入参要求resource_pool_name必须小于64字符。调用该函数后,如果作业处于排队阶段,作业切到新资源池会进行判断是否需要启动运行;如果作业处于运行阶段,作业切到新资源池可以启动原资源池的排队作业,同时受到新资源池的CPU管控限制。该函数同时支持静 - [数据脱敏函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0064.md): 数据脱敏函数提供一系列不同脱敏形式的函数接口,可以覆盖常见的脱敏场景。通常结合数据脱敏语法,与脱敏列绑定使用,不推荐直接作用在查询语句上。脱敏函数可以覆盖常见敏感信息的脱敏场景,推荐用户优先使用脱敏函数创建脱敏策略。数据脱敏函数的使用方法,请参考数据脱敏。描述:不作任何脱敏处理,仅内部测试用。返回值类型:与入参column_name数据类 - [统计信息函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0065.md): 统计信息函数根据访问对象分为两种类型:针对某个数据库进行访问的函数,以数据库中每个表或索引的OID作为参数,标识需要报告的数据库;针对某个服务器进行访问的函数,以一个服务器进程号为参数,其范围从1到当前活跃服务器的数目。对于全局临时表,函数入参是表在pg_class中的OID,函数返回当前会话数据的统计信息,所以同一张全局临时表在不同会话 - [触发器函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0066.md): 描述:获取触发器的定义信息。参数:待查触发器的OID。返回值类型:text示例:描述:获取触发器的定义信息。参数:待查触发器的OID及是否以pretty方式展示。返回值类型:text仅在创建trigger时指定WHEN条件的情况下,布尔类型参数才生效。示例: - [调用栈记录函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0068.md): DWS通过pv_memory_profiling(type int)和环境变量MALLOC_CONF,控制gaussdb进程中malloc等内存分配调用栈记录模块开启关闭、以及进程级内存调用栈输出等,使用流程如下图所示:环境变量MALLOC_CONF用于控制监控模块是否开启,位于${BIGDATA_HOME}/mppdb/.mppdbgs - [简单表达式](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0070.md): 逻辑表达式的操作符和运算规则,请参见逻辑操作符。常用的比较操作符,请参见比较操作符。除比较操作符外,还可以使用以下句式结构:BETWEEN操作符a BETWEEN x AND y等效于a >= x AND a <= ya NOT BETWEEN x AND y等效于a < x OR a > ya BETWEEN x AND - [条件表达式](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0071.md): 在执行SQL语句时,可通过条件表达式筛选出符合条件的数据。条件表达式主要有以下几种:CASECASE表达式是条件表达式,类似于其他编程语言中的CASE语句。CASE表达式的语法图请参考图1。case::=CASE子句可以用于合法的表达式中。condition是一个返回BOOLEAN数据类型的表达式:如果结果为真,CASE表达式的结果就是符 - [子查询表达式](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0072.md): 子查询表达式主要有以下几种:EXISTS/NOT EXISTSEXISTS/NOT EXISTS的语法图请参见图1。EXISTS/NOT EXISTS::=EXISTS的参数是一个任意的SELECT语句,或者说子查询。系统对子查询进行运算以判断它是否返回行。如果它至少返回一行,则EXISTS结果就为"真";如果子查询没有返回任何行, EX - [数组表达式](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0073.md): expressionIN(value [, ...])右侧括号中的是一个表达式列表。左侧表达式的结果与表达式列表的内容进行比较。如果列表中的内容符合左侧表达式的结果,则IN的结果为true。如果没有相符的结果,则IN的结果为false。示例如下:如果表达式结果为null,或者表达式列表不符合表达式的条件且右侧表达式列表返回结果至少一处为空 - [行表达式](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0074.md): 语法:row_constructor operator row_constructor两边都是一个行构造器,两行值必须具有相同数目的字段,每一行都进行比较,行比较允许使用=,<>,<,<=,>=等操作符,或其中一个相似的语义符。=<>和别的操作符使用略有不同。如果两行值的所有字段都是非空并且相等,则认为两行是相等的;如果两行值的任意字段为 - [概述](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0076.md): 在SQL语言中,每个数据都与一个决定其行为和用法的数据类型相关。DWS提供一个可扩展的数据类型系统,该系统比其它SQL实现更具通用性和灵活性。因而,DWS中大多数类型转换是由通用规则来管理的,这种做法允许使用混合类型的表达式。DWS扫描/分析器只将词法元素分解成五个基本种类:整数、浮点数、字符串、标识符和关键字。大多数非数字类型首先表现为 - [操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0077.md): 从系统表pg_operator中选出要考虑的操作符。如果可以找到一个参数类型以及参数个数都一致的操作符,那么这个操作符就是最终使用的操作符。如果找到了多个备选的操作符,将从中选择一个最合适的。寻找最优匹配。丢弃输入类型不匹配以及无法隐式转换成匹配的候选操作符。unknown文本在这种情况下可以转换成任何类型。如果只剩下一个候选操作符,则使 - [函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0078.md): 从系统表pg_proc中选择所有可能被选到的函数。如果使用了一个不带模式修饰的函数名称,那么认为该函数是那些在当前搜索路径中的函数。如果给出一个带修饰的函数名,那么只考虑指定模式中的函数。如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。如果搜索路径中找到了多个不同参数类型的函数。将从中选择一个合适的函数。查找和输入参 - [值存储](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0079.md): 查找与目标字段准确的匹配。试着将表达式直接转换成目标类型。如果已知这两种类型之间存在一个已登记的转换函数,那么直接调用该转换函数即可。如果表达式是一个未知类型文本,该文本字符串的内容将交给目标类型的输入转换过程。检查目标类型是否有长度转换。长度转换是一个从某类型到自身的转换。如果在pg_cast表里面找到一个,那么在存储到目标字段之前先在 - [UNION,CASE和相关构造](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0080.md): SQL UNION构造把不相同的数据类型进行匹配输出为统一的数据类型结果集。因为SELECT UNION语句中的所有查询结果必须在一列里显示出来,所以每个SELECT子句中的元素类型必须相互匹配并转换成一个统一的数据类型。类似地,一个CASE构造的结果表达式必须转换成统一的类型,这样整个case表达式会有一个统一的输出类型。同样的要求也存 - [全文检索概述](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0083.md): 文本搜索操作符在数据库中已存在多年。DWS为文本数据类型提供~、~*、LIKE和ILIKE操作符,但这些操作符缺乏现代信息系统所要求的许多必要属性,不过这一问题可以通过使用索引及词典进行解决。文本检索缺乏信息系统所要求的必要属性:没有语义支持,即使是英语。由于要识别派生词并不是那么容易,因此正则表达式也不能满足要求。如,satisfies - [文档概念](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0084.md): 文档是全文搜索系统的搜索单元,例如:杂志上的一篇文章或电子邮件消息。文本搜索引擎必须能够解析文档,而且可以存储父文档的关联词素(关键词)。后续,这些关联词素用来搜索包含查询词的文档。在DWS中,文档通常是一个数据库表中一行的文本字段,或者这些字段的可能组合(级联)。文档可能存储在多个表中或者需动态获取。换句话说,一个文档由被索引化的不同部 - [基本文本匹配](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0085.md): DWS的全文检索基于匹配算子@@,当一个tsvector(document)匹配到一个tsquery(query)时,则返回true。其中,tsvector(document)和tsquery(query)两种数据类型可以任意排序。正如上面例子表明,tsquery不仅是文本,且比tsvector包含的要多。tsquery包含已经标注化为词 - [分词器](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0086.md): 全文检索功能还可以做更多事情:忽略索引某个词(停用词),处理同义词和使用复杂解析,例如,不仅基于空格的解析。这些功能通过文本搜索分词器控制。DWS支持多语言的预定义的分词器,并且可以创建分词器(gsql的\dF命令显示了所有可用分词器)。在安装期间选择一个合适的分词器,并且在postgresql.conf中相应的设置default_tex - [搜索表](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0088.md): 在不使用索引的情况下也可以进行全文检索。一个简单查询:将body字段中包含science的每一行打印出来。DROP SCHEMA IF EXISTS tsearch CASCADE; CREATE SCHEMA tsearch; CREATE TABLE tsearch.pgweb(id int, body text, title t - [创建索引](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0089.md): 为了加速文本搜索,可以创建GIN索引。to_tsvector()函数有两个版本,只输一个参数的版本和输两个参数的版本。只输一个参数时,系统默认采用default_text_search_config所指定的分词器。创建索引时必须使用to_tsvector的两参数版本,否则索引内容可能不一致。只有指定了分词器名称的全文检索函数才可以在索引表 - [索引使用约束](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0090.md): 下面是一个使用索引的例子,由于SQL_ASCII的数据库编码格式不支持中文字符,请在Encoding为UTF8/GBK的数据库中执行以下示例:该例子的关键点是表table1的同一个列c_text上建立了两个GIN索引:idx1和idx2,但这两个索引是在不同default_text_search_config的设置下建立的。该例子和同一张 - [解析文档](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0092.md): DWS中提供了to_tsvector函数把文档处理成tsvector数据类型。to_tsvector将文本文档解析为token,再将token简化到词素,并返回一个tsvector。其中tsvector中列出了词素及它们在文档中的位置。文档是根据指定的或默认的文本搜索分词器进行处理的。这里有一个简单的例子:通过以上例子可发现结果tsvec - [解析查询](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0093.md): DWS提供了函数to_tsquery和plainto_tsquery将查询转换为tsquery数据类型,to_tsquery提供比plainto_tsquery更多的功能,但对其输入要求更严格。to_tsquery从querytext中创建一个tsquery,querytext必须由布尔运算符& (AND),| (OR)和! (NOT)分 - [排序查询结果](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0094.md): 排序会根据查询内容评估文档的相关性,将最匹配的结果优先展示。DWS提供了两个预置的排序函数。函数考虑了词法,距离,和结构信息;也就是,考虑查询词在文档中出现的频率、紧密程度、以及出现的地方在文档中的重要性。然而,相关性的概念是模糊的,并且是跟应用强相关的。不同的应用程序可能需要额外的信息来排序,比如,文档的修改时间,内置的排序函数等。也可 - [高亮搜索结果](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0095.md): 搜索结果的理想显示是:列出每篇文档中与搜索相关的部分,并标识为什么与查询相关。搜索引擎能够显示标识了搜索词的文档片段。DWS提供了函数ts_headline支持这部分功能。ts_headline的输入是带有查询条件的文档,其返回文档中的摘录,在摘录中查询词是高亮显示的。用来解析文档的分词器由config参数指定。如果省略config,则使 - [处理tsvector](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0097.md): DWS提供了用来操作tsvector类型的函数和操作符。tsvector || tsvectortsvector连接操作符返回一个新的tsvector类型,它综合了两个tsvector中词素和位置信息,并保留词素的位置信息和权重标签。右侧的tsvector的起始位置位于左侧tsvector的最后位置,因此,新生成的tsvector几乎等同 - [处理查询](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0098.md): DWS提供了函数和操作符用来操作tsquery类型的查询。tsquery && tsquery返回两个给定查询tsquery的与结果。返回两个给定查询tsquery的与结果。tsquery || tsquery返回两个给定查询tsquery的或结果。返回两个给定查询tsquery的或结果。!! tsquery返回给定查询tsquery的非 - [查询重写](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0099.md): ts_rewrite函数族可以从tsquery中搜索一个特定的目标子查询,并在该子查询每次出现的地方都替换为另一个子查询。 实际上这只是通过字符串替换而得到的一个特定tsquery版本。目标子查询和替换查询组合起来可以被认为是一个重写规则。一组类似的重写规则可以为搜索提供强大的帮助。例如,可以使用同义词扩大搜索范围(例如,new york - [收集文献统计](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0100.md): 函数ts_stat可用于检查配置和查找候选停用词。sqlquery是一个包含SQL查询语句的文本,该SQL查询将返回一个tsvector。ts_stat执行SQL查询语句并返回一个包含tsvector中每一个不同的语素(词)的统计信息。返回信息包括:word text:词素。ndoc integer:词素在文档(tsvector)中的编号 - [解析器](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0101.md): 文本搜索解析器负责将原文档文本分解为多个token,并标识每个token的类型。这里的类型集由解析器本身定义。注意,解析器并不修改文本,它只是确定合理的单词边界。由于这一限制,人们更需要定制词典,而不是为每个应用程序定制解析器。目前DWS提供了四个内置的解析器,分别为pg_catalog.default/pg_catalog.ngram/ - [词典概述](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0103.md): 词典用于定义停用词(stop words),即全文检索时不搜索哪些词。词典还可以用于对同一词的不同形式进行规范化,这样同一个词的不同派生形式都可以进行匹配。规范化后的词称为词位(lexeme)。除了提高检索质量外,词的规范化和删除停用词可以减少文档tsvector格式的大小, 从而提高性能。词的规范化和删除停用词并不总是具有语言学意义,用 - [停用词](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0104.md): 停用词是很常见的词,几乎出现在每一个文档中,并且没有区分值。因此,在全文搜索的语境下可忽视它们。停用词处理逻辑和词典类型相关。例如,Ispell词典会先对标记进行规范化,然后再查看停用词表,而Snowball词典会最先检查输入标记是否为停用词。例如,每个英文文本包含像a和the的单词,因此没必要将它们存储在索引中。然而,停用词影响tsve - [Simple词典](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0105.md): Simple词典首先将输入标记转换为小写字母,然后检查停用词表。如果识别为停用词则返回空数组,即表示该标记会被丢弃。否则,输入标记的小写形式作为规范化后的lexeme返回。此外,Simple词典可通过设置参数Accept为false(默认值true),将非停用词报告为未识别,传递给后继词典继续处理。大多数词典的功能依赖于词典定义文件,词典 - [Synonym词典](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0106.md): Synonym词典用于定义、识别token的同义词并转化,不支持词组(词组形式的同义词可用Thesaurus词典定义,详细请参见Thesaurus词典)。Synonym词典可用于解决语言学相关问题,例如,为避免使单词"Paris"变成"pari",可在Synonym词典文件中定义一行"Paris paris",并将该词典放置在预定义的en - [Thesaurus词典](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0107.md): Thesaurus词典,也叫做分类词典(缩写为TZ),是一组定义了词以及词组间关系的集合,包括广义词(BT)、狭义词(NT)、首选词、非首选词、相关词等。根据词典文件中的定义,TZ词典用一个指定的短语替换对应匹配的所有短语,并且可选择保留原始短语进行索引。TZ词典实际上是Synonym词典的一个扩展,增加了短语支持。由于TZ词典需要识别短 - [Ispell词典](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0108.md): Ispell词典模板支持词法词典,它可以把一个词的各种语言学形式规范化成相同的词位。比如,一个Ispell英语词典可以匹配搜索词bank的词尾变化和词形变化,如banking、banked、banks、banks'和bank's等。DWS不提供任何预定义的Ispell类型词典或词典文件。dict文件和affix文件支持多种开源词典格式,包 - [Snowball词典](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0109.md): Snowball词典模板支持词干分析词典,基于Martin Porter的Snowball项目,内置有许多语言的词干分析算法。DWS中预定义有多种语言的Snowball词典,可通过系统表PG_TS_DICT查看预定义的词干分析词典以及支持的语言词干分析算法。无论是否可以简化,Snowball词典将标识所有输入为已识别,因此它应当被放置在词 - [配置示例](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0110.md): 文本搜索配置(Text Search Configuration),指定了将文档转换成tsvector过程中所必需的组件:解析器,用于把文本分解成标记token;词典列表,用于将每个token转换成词位lexeme。每次to_tsvector或to_tsquery函数调用时,都需要指定一个文本搜索配置来指定具体的处理过程。GUC参数def - [分词器测试](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0112.md): 函数ts_debug允许简单测试文本搜索分词器。ts_debug显示document的每个token信息,token是由解析器生成,由指定的词典进行处理。如果忽略对应参数,则使用config指定的分词器或者default_text_search_config指定的分词器。ts_debug为文本解析器标识的每个token返回一行记录。记录中 - [解析器测试](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0113.md): 函数ts_parse可以直接测试文本搜索解析器。ts_parse解析指定的document并返回一系列的记录,一条记录代表一个解析生成的token。每条记录包括标识token类型的tokid,及token文本。比如:ts_token_type返回一个表,这个表描述了指定解析器可以识别的每种token类型。对于每个token类型,表中给出了 - [词典测试](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0114.md): 函数ts_lexize用于进行词典测试。ts_lexize(dict regdictionary, token text) returns text[]如果输入的token可以被词典识别,那么ts_lexize返回词素的数组;如果token可以被词典识别但它是一个停用词,则返回空数组;如果是一个不可识别的词则返回NULL。比如:ts_le - [限制约束](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0115.md): DWS的全文检索功能当前限制约束是:每个分词长度必须小于2K字节。tsvector结构(分词+位置)的长度必须小于1兆字节。tsvector的位置值必须大于0,小于等于16,383。每个分词在文档中位置数必须小于256,若超过将舍弃后面的位置信息。tsquery中的关键字及对应运算符最大支持到32,768。 - [系统操作](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0116.md): DWS通过SQL语句执行不同的系统操作,比如:设置变量,显示执行计划和垃圾收集等操作。设置会话或事务中需要使用的各种参数,请参考SET。显示DWS为SQL语句规划的执行计划,请参考EXPLAIN。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。CHECKPOINT强制立即进行检查,而不是等到下一次调度时的检查点。请参考C - [事务管理](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0117.md): DWS支持数据库事务ACID属性,提供了事务的读已提交隔离级别和可重复读隔离级别。客户端显式开启事务或手动关闭Autocommit场景,业务最后必须手动执行Commit提交事务。针对执行时长超过30分钟的语句,建议进行优化。尽量避免出现执行时长超过2小时的业务,避免长事务、长持锁等影响。更多开发设计规范参见总体开发设计规范。事务指一个操作 - [DDL语法一览表](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0119.md): DDL(Data Definition Language数据定义语言),用于定义或修改数据库中的对象。如:表、索引、视图等。DWS不支持CN不完整的情况下执行DDL操作。例如:集群中存在1个CN故障时,执行新建数据库、表等操作都会失败。数据库是组织、存储和管理数据的仓库,而数据库定义主要包括:创建数据库、修改数据库属性,以及删除数据库。所 - [ALTER DATABASE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0120.md): 修改数据库的属性,包括它的名称、所有者、连接数限制、对象隔离属性等。只有拥有数据库所有者权限的用户才能执行ALTER DATABASE命令,系统管理员默认拥有此权限。如果是非系统管理员,针对所要修改属性的不同,对其还有以下权限约束:修改数据库名称,必须拥有CREATEDB权限。修改数据库所有者,当前用户必须是该数据库的所有者,且拥有CRE - [ALTER FOREIGN TABLE (GDS导入导出)](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0123.md): 对GDS外表进行修改。无。设置外表属性。ALTER FOREIGN TABLE [ IF EXISTS ] table_name OPTIONS ( {[ ADD | SET | DROP ] option ['value']}[, ... ]);设置外表新的所有者。ALTER FOREIGN TABLE [ IF EXISTS - [ALTER FOREIGN TABLE (For HDFS or OBS)](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0124.md): 对HDFS外表和OBS外表进行修改。外表(Foreign Table)是数据库或大数据平台中一种虚拟表结构,它不实际存储数据,而是通过元数据信息(如表结构、存储位置、文件格式等)将外部存储系统(如HDFS、OBS等)中的数据映射到数据库内部,使用户能够以标准SQL操作直接访问或操作外部数据。外表的本质是一种“数据代理”,将外部文件系统的数 - [ALTER FUNCTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0126.md): 修改自定义函数的属性。只有该函数的所有者或者授予了函数ALTER权限的用户才有权限执行ALTER FUNCTION,系统管理员默认拥有该权限。要修改函数的所有者的用户必须是新拥有角色的直接或间接成员。要修改函数的所有者,新所有者必须拥有该函数所属模式的CREATE权限。要修改函数的所属模式,必须拥有新模式的CREATE权限。如果函数中涉及 - [ALTER GROUP](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0127.md): 修改用户组的属性。ALTER GROUP是ALTER ROLE的别名,非SQL标准语法,不推荐使用,建议用户直接使用ALTER ROLE替代。向用户组中添加用户。ALTER GROUP group_name ADD USER user_name [, ... ];从用户组中删除用户。ALTER GROUP group_name - [ALTER INDEX](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0128.md): ALTER INDEX用于修改索引的定义。只有索引的所有者有权限执行此命令,系统管理员默认拥有此权限。重命名表索引的名称,支持新的索引名称前带有原索引所在的schema名,但是不支持同时修改schema名。ALTER INDEX [ IF EXISTS ] index_name RENAME TO new_name; ALTER - [ALTER LARGE OBJECT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0129.md): 用于修改大对象的定义。ALTER LARGE OBJECT的唯一的功能是分配一个新的所有者。只有大对象的所有者有权限执行此命令,系统管理员默认拥有此权限。无。 - [ALTER REDACTION POLICY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0132.md): 修改数据库表上已有的数据脱敏策略,包括脱敏策略生效/失效、策略名称及脱敏列的增删改等内容。只有待修改脱敏策略所应用表对象的属主和被授予gs_role_redaction预置角色的用户才有修改脱敏策略的权限。修改脱敏策略的生效表达式。ALTER REDACTION POLICY policy_name ON table_name WHEN - [ALTER RESOURCE POOL](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0133.md): 修改一个资源池,指定其他控制组。只要用户对当前数据库有ALTER权限,就可以修改资源池。设置控制组名称“group_name”时,语法可以使用双引号,也可以使用单引号。group_name对大小写敏感。不指定group_name时,默认指定的字符串为 "Medium",代表指定DefaultClass控制组的"Medium" Timesh - [ALTER ROLE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0134.md): 修改角色属性。无。修改角色的权限。ALTER ROLE role_name [ [ WITH ] option [ ... ] ];其中权限项子句option为:{CREATEDB | NOCREATEDB} | {CREATEROLE | NOCREATEROLE} | {INHERIT | NOINHERIT} - [ALTER ROW LEVEL SECURITY POLICY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0135.md): 修改已有行级访问控制策略的定义,包括行级访问控制策略的名称、策略应用的用户及策略表达式等。表的所有者或管理员用户才能执行ALTER ROW LEVEL SECURITY POLICY。创建示例表all_data和用户alice、bob。开启表all_data的行级访问控制策略功能。在表all_data上创建行级访问控制策略all_data - [ALTER SCHEMA](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0136.md): 修改模式属性,包括模式名称、所有者、永久表存储空间上限。只有模式的所有者或者被授予了模式ALTER权限的用户,有权限执行ALTER SCHEMA命令,系统管理员默认拥有此权限。非系统管理员要修改模式的所有者或模式的永久表存储空间上限,该用户还必须是新的所有角色的直接或间接成员, 并且该成员必须在此数据库上有CREATE权限。修改模式的名称 - [ALTER SEQUENCE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0137.md): 修改序列定义。使用ALTER SEQUENCE的用户必须是该序列的所有者。用户要修改序列的所有者,必须是新角色的直接或者间接成员,并且所有者角色必须有序列所在模式上的CREATE权限。当前版本仅支持修改拥有者、归属列和最大值。若要修改其他参数,可以删除重建,并用Setval函数恢复当前值。ALTER SEQUENCE MAXVALUE不支 - [ALTER SERVER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0138.md): 增加、修改和删除外部服务器的定义。现有外部服务器(server)可以使用pg_foreign_server系统表查询。只有服务器的所有者有权限执行ALTER SERVER命令,系统管理员默认拥有此权限。要更改服务器的所有者,必须是外部服务器的OWNER并且也是新的所有者角色的直接或者间接成员,且必须对外部服务器的外部数据封装器有USAGE - [ALTER SESSION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0139.md): ALTER SESSION命令用于定义或修改那些对当前会话有影响的条件或参数。修改后的会话参数会一直保持,直到断开当前会话。如果执行SET TRANSACTION之前没有执行START TRANSACTION,则事务立即结束,命令无法显示效果。可以用START TRANSACTION里面声明所需要的transaction_mode(s)的 - [ALTER SYNONYM](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0140.md): 修改SYNONYM对象的属性。目前仅支持修改SYNONYM对象的所有者。只有系统管理员和同义词的所有者有权限修改SYNONYM对象的所有者信息。修改者必须是新所有者的直接或间接成员,并且新的所有者必须拥有该同义词所属模式的CREATE权限。创建同义词t1。创建新用户u1。修改同义词t1的所有者为u1。CREATE SYNONYM,DROP - [ALTER SYSTEM KILL SESSION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0141.md): ALTER SYSTEM KILL SESSION命令用于结束一个会话。无。查询会话信息。结束SID为140131075880720的会话。 - [ALTER TABLE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0142.md): 修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。只有表的所有者或者被授予了表ALTER权限的用户有权限执行ALTER TABLE命令,系统管理员默认拥有此权限。但要修改表的所有者或者修改表的模式,当前用户必须是该表的所有者或者系统管理员,且该用户是新的所 - [ALTER TABLE PARTITION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0143.md): 本章节介绍修改表分区的语法功能,包括增删分区、切割分区、合成分区、从普通表数据迁移到分区表,以及修改分区属性等。逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。常见的分区策略都是按照某一列或者某几列定义一些数据分布范围,然后每个分区承 - [ALTER TEXT SEARCH CONFIGURATION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0145.md): 修改文本搜索配置的定义。用户可以将映射从标记类型调整为字典,更改配置的名称或者所有者,或者修改搜索配置的配置参数。当一个搜索配置已经被引用(如被用来创建索引),则不允许用户修改此文本搜索配置。要使用ALTER TEXT SEARCH CONFIGURATION,用户必须是配置的所有者。增加文本搜索配置标记类型映射。ALTER TEXT S - [ALTER TEXT SEARCH DICTIONARY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0146.md): 修改全文检索词典的相关定义,包括参数、名称、所有者以及模式等。预定义词典不支持ALTER操作。只有词典的所有者可以执行ALTER操作,系统管理员默认拥有此权限。创建或修改词典之后,任何对于filepath路径下用户自定义的词典定义文件的修改,将不会影响到数据库中的词典。如果需要在数据库中使用这些修改,需使用ALTER TEXT SEARC - [ALTER TRIGGER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0147.md): 修改触发器定义。只有触发器所在表的所有者可以执行ALTER TRIGGER操作,系统管理员默认拥有此权限。创建示例表test_trigger_src_tbl和test_trigger_des_tbl。创建触发器函数tri_insert_func()。创建触发器insert_trigger。修改触发器insert_trigger。禁用触发器 - [ALTER TYPE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0148.md): 修改一个类型的定义。要使用ALTER TYPE,必须是该类型的所有者。要修改类型的模式,还必须在新模式上拥有CREATE权限。要修改所有者,必须是新的所有角色的直接或间接成员, 并且该角色必须在此类型的模式上有CREATE权限。 这些限制强制要求修改所有者不能执行任何通过删除和重建该类型无法实现的操作。系统管理员拥有以任何方式修改任意类型 - [ALTER USER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0149.md): 修改数据库用户的属性。ALTER USER修改的会话参数只针对指定的用户,且在下一次会话中有效。修改用户的权限等信息。ALTER USER user_name [ [ WITH ] option [ ... ] ];其中option子句为:{ CREATEDB | NOCREATEDB } | { CREATEROLE | NOC - [ALTER VIEW](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0150.md): ALTER VIEW更改视图的各种辅助属性。(如果用户是更改视图的查询定义,要使用CREATE OR REPLACE VIEW。)用户必须是视图的所有者才可以执行ALTER VIEW。要修改视图的模式,用户必须要有新模式的CREATE权限。要修改视图的所有者,用户必须是新所属角色的直接或者间接的成员,并且此角色必须有视图模式的CREATE - [CLEAN CONNECTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0151.md): 用于清理数据库连接。允许在指定节点上清理指定数据库的指定用户的相关连接。主要用于处理数据库异常、清理空闲/无效连接以及用于DROP DATABASE之前的连接访问检查,防止操作失败。参数dbname和username必须至少指定一个。删除数据库template1在dn1和dn2节点上的连接。删除用户jack在dn1节点上的连接。删除在数据 - [CLOSE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0152.md): CLOSE用于释放与游标关联的所有资源。不允许对一个已关闭的游标再进行任何操作。不再使用的游标应将其关闭。当创建游标的事务用COMMIT或ROLLBACK终止之后,每个非持有的已打开游标都隐式关闭。当创建游标的事务通过ROLLBACK退出之后,则该游标将隐式关闭。当创建游标的事务成功提交,则持有的游标将保持打开状态,直到执行了显式的CLO - [CLUSTER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0153.md): 根据索引对表进行聚簇排序。CLUSTER基于索引名指定的索引来聚簇由表名指定的表。索引名指定的索引必须已经定义在指定表上。当对一个表聚簇后,该表将基于索引信息进行物理排序。聚簇是一次性操作:当表被更新之后, 更改的内容不会被聚簇。也就是说,系统不会试图按照索引顺序对新的存储内容及更新记录进行重新聚簇。在对表聚簇时,DWS会记录在哪个索引上 - [COMMENT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0154.md): 定义或修改对象的注释。每个对象只存储一条注释,因此要修改对象的注释,对同一个对象发出一条新的COMMENT命令即可。要删除注释,在文本字符串的位置写入NULL。删除对象时,注释将自动删除。目前查看注释没有相关安全机制:连接到数据库的任何用户都可以查看该数据库中对象的所有注释。共享对象(比如数据库、角色、表空间)的注释是全局存储的,连接到集 - [CREATE BARRIER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0155.md): 创建一个新集群节点间的同步点。该同步点可用于数据恢复。在创建同步点之前,首先要确认集群中CN和DN的gtm_backup_barrier和enable_cbm_tracking参数都已设置为on。barrier_name可选参数。同步点名称。取值范围:字符串,需符合标识符命名规范。创建一个同步点,不指定名称。创建一个同步点并指定其名称为b - [CREATE DATABASE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0156.md): 创建新的数据库。DWS采用从模板数据库复制的方式来创建新的数据库。DWS系统提供了两个模板数据库(template0和template1)以及一个默认的用户数据库(gaussdb)。默认情况下,新的数据库基于template1创建。template1不允许修改字符编码,因此若要变更编码,用户可以通过指定template参数选择templa - [CREATE FOREIGN TABLE (GDS导入导出)](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0159.md): 在当前数据库创建一个GDS外表,用于数据并行导入导出。GDS外表分为只读外表和只写外表,分别用于数据并行导入和并行导出,缺省为只读外表。GDS是一款运行在Linux操作系统的命令行工具,通过和外表机制的配合,实现数据的高速导入导出。GDS工具包需要安装在数据源文件所在的服务器上,数据源文件所在的服务器称为数据服务器,也叫GDS服务器。安装 - [CREATE FOREIGN TABLE (OBS导入导出)](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0160.md): 在当前数据库创建一个OBS外表,用于OBS数据并行导入导出。该方式不需要用户再额外创建外部服务器server,使用数据库默认创建的gsmpp_server即可。本语法功能仅支持OBS桶上的TEXT和CSV格式数据,如果需要处理ORC、CARBONDATA、PARQUET等格式,请参见CREATE FOREIGN TABLE (SQL on - [CREATE FOREIGN TABLE (SQL on OBS or Hadoop)](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0161.md): 在当前数据库创建一个HDFS或OBS外表,用来访问存储在HDFS或者OBS分布式集群文件系统上的结构化数据,也可以通过HDFS或OBS外表导出ORC和PARQUET格式数据到HDFS或者OBS上。外表(Foreign Table)是数据库或大数据平台中一种虚拟表结构,它不实际存储数据,而是通过元数据信息(如表结构、存储位置、文件格式等)将 - [CREATE FUNCTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0163.md): FUNCTION(函数)是一段可重用的代码块,它接受输入参数,执行特定操作,并返回一个值或结果集。CREATE FUNCTION语句用于在数据库中创建用户自定义函数(UDF),实现DWS当前内置的系统函数中还未支持的其他计算功能,覆盖用户特定的复杂计算场景。函数的主要特点包括:支持输入参数,可根据不同条件返回结果。需声明返回值的数据类型, - [CREATE GROUP](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0164.md): 创建一个新用户组。CREATE GROUP是CREATE ROLE的别名,非SQL标准语法,不推荐使用,建议用户直接使用CREATE ROLE替代。其中可选项action子句语法为:请参考CREATE ROLE的参数说明。ALTER GROUP,DROP GROUP,CREATE ROLE - [CREATE INDEX](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0165.md): 在指定的表上创建索引。索引(Index)是一种通过优化数据检索效率的数据结构,其核心作用类似于书籍的目录——通过预先组织关键信息,帮助数据库快速定位所需数据,减少查询时需要扫描的数据量。索引的核心作用是:加速查询速度:在处理大量数据的数据库应用中,用户经常遇到查询速度慢的问题,尤其是在没有索引的情况下,数据库查询需要扫描整个表(全表扫描) - [CREATE REDACTION POLICY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0168.md): 在数据库表上创建数据脱敏策略。DWS提供列级别的数据脱敏策略(REDACTION POLICY)功能。针对某些敏感信息(如身份证号、手机号、银行卡号等),通过应用脱敏函数进行原始数据的变形改写,实现敏感隐私数据的可靠保护,增强产品在数据安全和隐私保护方面的能力。数据脱敏特性使用GUC参数feature_support_options进行控 - [CREATE ROW LEVEL SECURITY POLICY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0169.md): 对表创建行级访问控制策略。行级访问控制策略(ROW LEVEL SECURITY POLICY)表示将数据库访问控制权限精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,系统将自动根据创建的控制策略返回不同的读取结果。对表创建行级访问控制策略时,需打开该表的行级访问控制开关(ALTER TABLE .. - [CREATE PROCEDURE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0170.md): 创建一个新的存储过程。存储过程(PROCEDURE)是由一组预编译的SQL语句组成的集合,可以在数据库中进行存储并反复调用。创建存储过程时,请显式指定表对象的所属模式(如schema.table),否则可能引发执行异常。创建存储过程时,存储过程内部通过SET语句设置的current_schema/search_path无效,函数searc - [CREATE RESOURCE POOL](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0171.md): 创建一个资源池,并指定此资源池相关联的控制组。数据库的系统资源(CPU资源、内存资源、IO资源和存储资源)是有限的,DWS在同时运行多种类型的业务(如数据加载、批量分析、实时查询等)时,各类型业务之间可能会竞争资源,从而出现资源性能瓶颈,导致吞吐量下降,造成整体性能低下。那么对系统的资源进行合理的分配,能避免产生资源不合理利用而导致的系统 - [CREATE ROLE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0172.md): 创建角色。角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。在数据库中添加一个新角色,角色无登录权限。创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。使用CREATE ROLE创建的角色必须使用ALTER ROLE语法进行修改,不能使用ALTER USER。其中角色信息设置子句 - [CREATE SCHEMA](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0173.md): 创建Schema。Schema又称作模式,从逻辑上组织一个数据库中的对象和数据。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,同时便于将第三方应用添加到相应的Schema下而不引起冲突。Schema的核心作用是:逻辑隔离:实现数据、功能、租户的隔离。权限控制:提供细粒度的安全边界。组织管理:使数据库结构清晰可维护。命名空间 - [CREATE SEQUENCE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0174.md): 向当前数据库里增加一个新的序列。序列是一个数据库对象,主要用于生成一系列唯一的、递增或递减的数值,通常用作表中的主键或唯一标识符。DWS的9.1.1.300及以上集群版本中新增GUC参数enable_multi_sequence_file(用于控制是否开启GTM中的gtm.sequence文件拆分)。开启该参数后稳定支持百万级别并发序列对 - [CREATE SERVER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0175.md): 创建一个外部服务器。外部服务器是存储HDFS集群信息、OBS服务器信息、DLI连接信息或其他同构集群信息的载体。默认只有系统管理员才可以创建外部服务器,否则需要对所使用的FOREIGN DATA WRAPPER授权,授权语法为:其中fdw_name为FOREIGN DATA WRAPPER的名字,username为创建SERVER的用户名 - [CREATE SYNONYM](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0176.md): 创建一个同义词对象。同义词是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同义词访问关联的数据库对象。定义同义词的用户成为其所有者。若指定模式名称,则同义词在指定模式中创建。否则,在当前模式创建。支持通过同义词访问的数据库对象包括:表、视图、函数和存储过程。使用同义词时,用户需要具有对关联对象的相应权限。支持使用同 - [CREATE TABLE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0177.md): 在当前数据库中创建一个新的空白表。该表由命令执行者所有,如果系统管理员在某个与普通用户同名的schema下创建表,则该表的所有者为该schema对应的普通用户,而非系统管理员。不建议创建普通表时指定自定义TABLESPACE。创建行存表时应避免指定COMPRESS压缩属性。创建HASH分布的表对象时,要确保数据分布均匀(10G以上数据量的 - [CREATE TABLE AS](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0178.md): 根据查询结果创建表。适用于数据迁移或复制场景。CREATE TABLE AS创建一个表,并使用SELECT查询结果填充该表。该表的字段与SELECT输出字段的名称及数据类型关联。不过用户可以通过明确地给出一个字段名称列表来覆盖SELECT输出字段的名称。CREATE TABLE AS对源表进行一次查询,然后将数据写入新表中,而查询视图结果 - [CREATE TABLE PARTITION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0179.md): 创建分区表。逻辑上的一张表根据某种方案分成几张物理块进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。常见的分区策略都是按照某一列或者某几列定义一些数据分布范围,然后每个分区承载一个范围的数据,这些列称之为分区键。目前DWS行存表、列存表支持的分区类型包括范围分区和列表分区。 - [CREATE TEXT SEARCH CONFIGURATION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0182.md): 创建新的文本搜索配置。文本搜索配置通过文本搜索解析器(PARSER)将原始字符串解析为标记,再使用词典(DICTIONARY)决定哪些标记是搜索感兴趣的,从而满足搜索需求,提升全文搜索效率。如果仅指定了解析器,则新的文本搜索配置初始没有从标记类型到词典的映射, 因此会忽略所有的单词。后面必须使用ALTER TEXT SEARCH CONF - [CREATE TEXT SEARCH DICTIONARY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0183.md): 创建一个新的全文检索词典。全文检索词典指定在全文检索时识别特定词并处理的方法。词典的创建依赖于预定义模板(在系统表PG_TS_TEMPLATE中定义),支持创建五种类型的词典,分别是Simple、Ispell、Synonym、Thesaurus、以及Snowball,每种类型的词典可以完成不同的任务。具有SYSADMIN权限的用户可以执行 - [CREATE TRIGGER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0184.md): 创建一个新触发器。 触发器将与指定的表或视图关联,并在特定条件下执行指定的函数。当前仅支持在普通行存表上创建触发器,不支持在列存表、临时表、unlogged表等类型表上创建触发器。如果为同一事件定义了多个相同类型的触发器,则按触发器的名称字母顺序触发它们。一个触发器只能作用在一张表上,对创建的触发器数量无限制但一个表上的触发器越多,性能消 - [CREATE TYPE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0185.md): 该语法用于创建用户自定义类型(User-defined type,简称UDT),本质是将一组相关字段或值封装成一个新的、可复用的数据类型,类似编程语言中的“结构体”,让数据库表设计更贴合业务逻辑,减少冗余、提升可读性。该功能仅适用于行存表。当前支持创建的UDT包括:复合类型、基本类型、shell类型和枚举类型。复合类型复合类型通过“属性名 - [CREATE USER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0186.md): 创建新的数据库用户。通过CREATE USER创建的用户,默认具有LOGIN权限。通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。系统管理员在普 - [CREATE VIEW](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0187.md): CREATE VIEW用于创建视图。视图(View)是基于SQL查询定义的逻辑虚拟表,仅保存视图定义而不物理存储数据。当基表数据发生变化时,视图查询结果自动同步更新,视图提供动态数据窗口,帮助用户高效聚焦目标数据。GUC参数view_independent打开时,支持普通视图删除列。但如果存在列级约束,不支持该列的删除。视图解耦功能下不支 - [CURSOR](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0188.md): CURSOR语句定义游标,用于从查询里面检索出指定的几行数据。为了处理SQL语句,存储过程进程分配一段内存区域来保存上下文联系。游标是指向上下文区域的句柄或指针。借助游标,存储过程可以控制上下文区域的变化。游标命令只能在事务块里使用。通常游标和SELECT一样返回文本格式。因为数据在系统内部是用二进制格式存储的,系统必须对数据做一定转换以 - [DROP DATABASE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0189.md): 删除数据库。只有数据库所有者有权限执行DROP DATABASE命令,系统管理员默认拥有此权限。不能对系统默认安装的三个数据库(gaussdb、TEMPLATE0和TEMPLATE1)执行删除操作,系统做了保护。如果想查看当前服务中有哪几个数据库,可以用gsql的\l命令查看。如果有用户正在与要删除的数据库连接,则删除操作失败。如果要查看 - [DROP FOREIGN TABLE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0192.md): 删除指定的外表。DROP FOREIGN TABLE会强制删除指定的外表,删除外表后,依赖该外表的索引会被删除,而使用到该外表的函数和存储过程将无法执行。删除名称为customer_ft的外表:ALTER FOREIGN TABLE (GDS导入导出),ALTER FOREIGN TABLE (For HDFS or OBS),CREAT - [DROP FUNCTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0193.md): 删除一个已存在的函数。如果所删除的函数为重载函数,则删除时需要指明该函数的参数类型,如为非重载函数,则可直接指定函数名进行删除。如果函数中涉及对临时表相关操作,则无法使用DROP FUNCTION删除函数。删除名称为add_two_number的函数:ALTER FUNCTION,CREATE FUNCTION - [DROP GROUP](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0194.md): 删除用户组。DROP GROUP是DROP ROLE的别名。DROP GROUP是集群管理工具封装的内部接口,用来实现集群管理。该接口不建议用户直接使用,以免对集群状态造成影响。请参见DROP ROLE的参数说明。CREATE GROUP,ALTER GROUP,DROP ROLE - [DROP INDEX](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0195.md): 删除索引。只有索引的所有者有权限执行DROP INDEX命令,系统管理员默认拥有此权限。删除现有的索引ds_ship_mode_t1_index2:ALTER INDEX,CREATE INDEX - [DROP OWNED](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0198.md): 删除一个数据库角色所拥有的数据库对象。所有该角色在当前数据库里和共享对象(数据库,表空间) 上的所有对象上的权限都将被撤销。创建角色u1并创建一个由u1拥有的表。删除名称为u1的角色拥有的所有数据库对象: - [DROP REDACTION POLICY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0199.md): 删除应用在指定表上的脱敏策略。只有表的属主和被授予gs_role_redaction预置角色的用户才有权限删除脱敏策略。删除表emp上的脱敏策略mask_emp:ALTER REDACTION POLICY,CREATE REDACTION POLICY - [DROP ROW LEVEL SECURITY POLICY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0200.md): 删除表上指定的行级访问控制策略。仅表的所有者或者管理员用户才能执行DROP ROW LEVEL SECURITY POLICY。删除表all_data上的行级访问控制策略all_data_rls。ALTER ROW LEVEL SECURITY POLICY,CREATE ROW LEVEL SECURITY POLICY - [DROP PROCEDURE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0201.md): 删除已存在的存储过程。无。删除存储过程:CREATE PROCEDURE - [DROP RESOURCE POOL](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0202.md): 删除一个资源池。如果某个角色已关联到该资源池,则无法删除该资源池。只要用户对当前数据库有DROP权限,就可以删除资源池。删除资源池pool:ALTER RESOURCE POOL,CREATE RESOURCE POOL - [DROP ROLE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0203.md): 删除指定的角色。DROP ROLE若提示role is being used by other users错误,可能原因为CLEAN CONNECTION过程存在线程无法及时响应信号,出现连接清理不完全的情况,需要再次执行CLEAN CONNECTION。DROP对象操作(如DATABASE、USER/ROLE、SCHEMA、TABLE、 - [DROP SCHEMA](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0204.md): 从数据库中删除模式。只有模式的所有者或者被授予了模式DROP权限的用户有权限执行DROP SCHEMA命令,系统管理员默认拥有此权限。DROP对象操作(如DATABASE、USER/ROLE、SCHEMA、TABLE、VIEW等对象)存在数据丢失风险,尤其含带CASCADE级联删除场景,会将关联的对象一并删除,操作需谨慎,操作前需考虑数据 - [DROP SEQUENCE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0205.md): 从当前数据库里删除序列。只有序列的所有者或者系统管理员才能删除。删除序列serial:CREATE SEQUENCE,ALTER SEQUENCE - [DROP SERVER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0206.md): 删除现有的一个数据服务器。只有server的owner才可以删除。删除hdfs_server:CREATE SERVER,ALTER SERVER - [DROP SYNONYM](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0207.md): 删除指定的SYNONYM对象。只有SYNONYM的所有者有权限执行DROP SYNONYM命令,系统管理员默认拥有此权限。删除同义词:ALTER SYNONYM,CREATE SYNONYM - [DROP TABLE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0208.md): 删除指定的表。DROP TABLE会强制删除指定的表,删除表后,依赖该表的索引会被删除,而使用到该表的函数和存储过程将无法执行。删除分区表,会同时删除分区表中的所有分区。只有表的所有者、模式所有者或者被授予了表的DROP权限的用户才能执行DROP TABLE,系统管理员默认拥有该权限。要清空指定表中的行但是不删除该表定义,可以使用TRUN - [DROP TEXT SEARCH CONFIGURATION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0210.md): 删除已有文本搜索配置。要执行DROP TEXT SEARCH CONFIGURATION命令,用户必须是该文本搜索配置的所有者。删除文本搜索配置ngram1:ALTER TEXT SEARCH CONFIGURATION,CREATE TEXT SEARCH CONFIGURATION - [DROP TEXT SEARCH DICTIONARY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0211.md): 删除全文检索词典。预定义词典不支持DROP操作。只有词典的所有者可以执行DROP操作,系统管理员默认拥有此权限。谨慎执行DROP...CASCADE操作,该操作将级联删除使用该词典的文本搜索配置(TEXT SEARCH CONFIGURATION)。删除词典english:ALTER TEXT SEARCH DICTIONARY,CREA - [DROP TRIGGER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0212.md): 删除触发器。只有触发器的所有者可以执行DROP TRIGGER操作,系统管理员默认拥有此权限。删除触发器insert_trigger:CREATE TRIGGER,ALTER TRIGGER,ALTER TABLE - [DROP TYPE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0213.md): 删除一个用户定义的数据类型。只有类型所有者才有删除权限。先创建compfoo类型。删除compfoo类型:ALTER TYPE,CREATE TYPE - [DROP USER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0214.md): 删除用户,同时会删除同名的schema。须使用CASCADE级联删除依赖用户的对象(除数据库外)。当删除用户的级联对象时,如果级联对象处于锁定状态,则此级联对象无法被删除,直到对象被解锁或锁定级联对象的进程被终止。在数据库中删除用户时,如果依赖用户的对象在其他数据库中或者依赖用户的对象是其他数据库,请用户先手动删除其他数据库中的依赖对象或 - [DROP VIEW](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0215.md): 数据库中强制删除已有的视图。只有视图的所有者有权限执行DROP VIEW的命令,系统管理员默认拥有此权限。DROP对象操作(如DATABASE、USER/ROLE、SCHEMA、TABLE、VIEW等对象)存在数据丢失风险,尤其含带CASCADE级联删除场景,会将关联的对象一并删除,操作需谨慎,操作前需考虑数据备份。更多开发设计规范参见总 - [FETCH](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0216.md): FETCH通过已创建的游标来检索数据。每个游标都有一个供FETCH使用的关联位置。游标的关联位置可以在查询结果的第一行之前,或者在结果中的任意行,或者在结果的最后一行之后:游标刚创建完之后,关联位置在第一行之前的。在抓取了一些移动行之后,关联位置在检索到的最后一行上。如果FETCH抓取完了所有可用行,它就停在最后一行后面,或者在反向抓取的 - [MOVE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0217.md): MOVE在不检索数据的情况下重新定位一个游标。MOVE的作用类似于FETCH命令,但只是重定位游标而不返回行。无。其中direction子句为可选参数。MOVE命令的参数与FETCH的相同,详细请参见FETCH的参数说明。成功完成时,MOVE命令将返回一个“MOVE count”的标签,count是一个使用相同参数的FETCH命令会返回的 - [REINDEX](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0218.md): 为表中的数据重建索引。在以下几种情况下需要使用REINDEX重建索引:索引崩溃,并且不再包含有效的数据。索引变得“臃肿”,包含大量的空页或接近空页。为索引更改了存储参数(例如填充因子),并且希望这个更改完全生效。使用CONCURRENTLY选项创建索引失败,留下了一个“非法”索引。使用CONCURRENTLY选项创建索引失败,留下了一个“ - [RESET](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0219.md): RESET将指定的运行时参数恢复为缺省值。这些参数的缺省值是指postgresql.conf配置文件中所描述的参数缺省值。RESET命令与如下命令的作用相同:SET configuration_parameter TO DEFAULTRESET的事务性行为和SET相同:它的影响将会被事务回滚撤销。把timezone设为缺省值:把所有参数设 - [SET](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0220.md): 用于修改运行时配置参数。大多数运行时参数都可以用SET在运行时设置,但有些则在服务运行过程中或会话开始之后不能修改。设置所处的时区。SET [ SESSION | LOCAL ] TIME ZONE { timezone | LOCAL | DEFAULT };设置所属的模式。SET [ SESSION | LOCAL ] {C - [SET CONSTRAINTS](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0221.md): SET CONSTRAINTS设置当前事务检查行为的约束条件。IMMEDIATE约束是在每条语句后面进行检查。DEFERRED约束一直到事务提交时才检查。每个约束都有自己的模式。从创建约束条件开始,一个约束总是设定为DEFERRABLE INITIALLY DEFERRED,DEFERRABLE INITIALLY IMMEDIATE,N - [SET ROLE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0222.md): 设置当前会话的当前用户标识符,即在当前数据库会话中切换或启用指定角色。当前会话的用户必须是指定的role_name角色的成员,系统管理员可以切换至任意角色。可以使用SET ROLE添加权限或限制某个用户的权限。如果会话用户的角色具有INHERITS属性,则它将自动拥有SET ROLE所设置角色的所有权限;在这种情况下,SET ROLE实际 - [SET SESSION AUTHORIZATION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0223.md): 把当前会话里的会话用户标识和当前用户标识都设置为指定的用户。只有在初始会话用户有系统管理员权限的时候,会话用户标识符才能改变。否则,只有在指定了被认证的用户名的情况下,系统才接受该命令。为当前会话设置会话用户标识符和当前用户标识符。SET [ SESSION | LOCAL ] SESSION AUTHORIZATION role_nam - [SHOW](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0224.md): SHOW将显示当前运行时参数的数值。可以使用SET语句来设置这些参数。SHOW可以查看的某些参数是只读的,可以查看但不能设置它们的值。显示变量的参数请参见RESET的参数说明。显示timezone参数值:显示参数DateStyle的当前设置:显示所有参数的当前设置:SET,RESET - [TRUNCATE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0225.md): TRUNCATE语法用于清理表数据,快速地从表中删除所有行。它与在目标表上进行无条件的DELETE的效果相同,但由于TRUNCATE实际上并不扫描表,因此速度更快,尤其在大表上操作效果更明显。请谨慎执行TRUNCATE TABLE,确认表数据可以删除或者已有备份后,再执行删除操作。TRUNCATE TABLE命令删除表数据后,数据将无法恢 - [VACUUM](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0226.md): VACUUM回收表或B-Tree索引中已经删除的行所占据的存储空间。在一般的数据库操作里,那些已经DELETE的行并没有从它们所属的表中物理删除;在完成VACUUM之前它们仍然存在。因此有必要周期地运行VACUUM,特别是在经常更新的表上。VACUUM命令存在两种形式,VACUUM和VACUUM FULL,VACUUM命令做的是LAZY - [DML语法一览表](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0228.md): DML(Data Manipulation Language数据操作语言),用于对数据库表中的数据进行操作。如:插入、更新、查询、删除。插入数据是往数据库表中添加一条或多条记录,请参考INSERT。修改数据是修改数据库表中的一条或多条记录,请参考UPDATE。数据库查询语句SELECT用于在数据库中检索符合条件的信息,请参考SELECT。 - [CALL](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0229.md): 使用CALL命令可以调用已定义的函数和存储过程。如果自定义函数的函数名与系统函数同名,调用自定义函数时需指定schema,否则系统会优先调用系统函数。创建一个函数func_add_sql,计算两个整数的和,并返回结果:按参数值传递:使用命名标记法传参:删除函数:创建带出参的函数:出参传入常量:出参传入变量:创建重载的函数:函数调用:删除函 - [COPY](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0230.md): 通过COPY命令实现在表和文件之间拷贝数据。COPY FROM从一个文件拷贝数据到一个表,COPY TO把一个表的数据拷贝到一个文件。COPY FROM/TO适用于低并发,本地小数据量导入导出的场景。由于云上DWS是全托管服务,用户无法登录后台集群节点,所以云上禁止使用COPY语法,可采用“\COPY”命令进行操作(仅gsql客户端支持, - [DELETE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0231.md): 从指定的表里删除满足WHERE子句的行。如果WHERE子句不存在,将删除表中所有行,结果只保留表结构。要删除表中的数据,用户必须对它有DELETE权限。同样也必须有USING子句引用的表以及condition上读取的表的SELECT权限。如果需要删除表上的所有数据,建议使用TRUNCATE语法,可以有效提高性能同时减少空间膨胀。对于复制表 - [EXPLAIN](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0232.md): EXPLAIN命令输出SQL语句的执行计划,通过分析执行计划来定位慢SQL,优化SQL语句。执行计划将显示SQL语句所引用的表采用的扫描方式,如:简单的顺序扫描、索引扫描等。如果引用了多个表,执行计划还会显示使用的JOIN算法。执行计划的最关键部分是语句的预计执行开销,即计划生成器估算执行该语句将花费多长的时间。指定ANALYZE选项(E - [EXPLAIN PLAN](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0233.md): 通过EXPLAIN PLAN命令可以将查询执行的计划信息存储于PLAN_TABLE表中。与EXPLAIN命令不同的是,EXPLAIN PLAN仅将计划信息进行存储,而不会打印到屏幕。EXPLAIN PLAN不支持在DN上执行。对于执行错误的SQL无法进行计划信息的收集。PLAN_TABLE中的数据是session级生命周期并且sessio - [LOCK](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0234.md): LOCK TABLE获取表级锁。当自动获取引用表的命令的锁时,DWS会始终使用限制最小的锁模式。如果用户需要一种更为严格的锁模式,可以使用LOCK命令。例如,某个应用是在Read Committed隔离级别上运行事务,并且需要保证表中的数据在事务运行期间保持稳定。为实现这个目的,则可以在查询之前对表使用SHARE锁模式进行锁定。这样将防止 - [MERGE INTO](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0235.md): MERGE INTO语句将目标表和源表中数据针对关联条件进行匹配,若关联条件匹配时对目标表进行UPDATE,不匹配时对目标表执行INSERT。MERGE INTO合并执行UPDATE和INSERT,避免多次执行以提高执行效率。执行MERGE INTO操作的用户需要同时拥有目标表的UPDATE和INSERT权限,以及源表的SELECT权限。 - [INSERT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0236.md): 向表中添加一行或多行数据。使用INSERT请遵守INSERT开发规范。只有拥有表INSERT权限的用户,才可以向表中插入数据。如果使用RETURNING子句,用户必须要有该表的SELECT权限。如果使用QUERY子句插入来自查询里的数据行,用户还需要拥有在查询里使用的表的SELECT权限。如果使用OVERWRITE子句覆盖式插入数据,用户 - [UPSERT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0237.md): 向表中添加一行或多行数据。当出现主键或者唯一约束冲突时,它可以选择更新冲突的数据,或者忽略这些冲突。UPSERT语法仅8.1.1及以上版本支持。避免UPDATE/UPSERT并发更新同一张列存表。更多开发设计规范参见总体开发设计规范。权限要求:只有拥有表INSERT、UPDATE权限的用户,才可以通过UPSERT语句向表中插入或更新数据。 - [SELECT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0238.md): SELECT用于从表或视图中读取数据。SELECT语句就像叠加在数据库表上的过滤器,利用SQL关键字从数据表中过滤出用户需要的数据。使用SELECT请遵循SELECT操作规范。SELECT支持普通表与HDFS之间的JOIN,不支持普通表与GDS外表之间的JOIN。即SELECT语句中不能同时出现普通表和GDS外表。必须对每个在SELECT - [SELECT INTO](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0239.md): SELECT INTO用于根据查询结果创建一个新表,并且将查询到的数据插入到新表中。数据并不返回给客户端,这一点和普通的SELECT不同。新表的字段具有和SELECT的输出字段相同的名字和数据类型。CREATE TABLE AS的作用和SELECT INTO类似,且提供了SELECT INTO所提供功能的超集。建议使用CREATE TAB - [UPDATE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0240.md): 更新表中的数据。UPDATE修改满足条件的所有行中指定的字段值,WHERE子句声明条件,SET子句指定的字段会被修改,没有出现的字段则保持原值。使用UPDATE请遵循UPDATE操作规范。权限要求:要修改表,用户必须对该表有UPDATE权限,对expression或condition条件里涉及到的任何表要有SELECT权限。不允许对表的分 - [VALUES](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0241.md): 根据给定的值表达式计算一个或一组行的值。它通常用于在一个较大的命令内生成一个“常数表”。应当避免使用VALUES返回数量非常大的结果行,否则可能会遭遇内存耗尽或者性能低下。出现在INSERT中的VALUES是一个特殊情况,因为目标字段类型可以从INSERT的目标表获知,并不需要通过扫描VALUES列表来推测,所以此情况下可以处理非常大的结 - [DCL语法一览表](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0243.md): DCL(Data Control Language数据控制语言),是用来设置或更改数据库用户或角色权限的语句。DWS提供了针对数据对象和角色授权的语句,请参考GRANT。DWS提供了收回权限的语句,请参考REVOKE。DWS允许设置应用于将来创建的对象的权限,请参考ALTER DEFAULT PRIVILEGES。 - [ALTER DEFAULT PRIVILEGES](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0244.md): 设置应用于将来要创建的对象的权限(不会影响现有对象的权限)。用户只可以修改由用户本身或者用户本身所属的角色所创建的对象的默认权限,这些权限可以对全局范围设置(即数据库中创建的所有对象),也可以为指定模式下的对象设置。查看有关数据库用户的默认权限的信息,可以查询PG_DEFAULT_ACL系统表。目前只支持表(包括视图)、序列、函数和类型( - [ANALYZE | ANALYSE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0245.md): 用于收集有关数据库中表内容的统计信息,统计信息分为表级和列级。其中,表级统计信息存储在PG_CLASS中,列级统计结果存储在系统表PG_STATISTIC下。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。它的主要作用是:优化查询性能:为查询优化器提供数据分布信息,帮助生成更高效的执行计划。提高查询计划准确性:使优化器能更准确地 - [DEALLOCATE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0246.md): DEALLOCATE用于删除先前编写的预备语句。如果未显式删除一个预备语句,则在会话结束时将其删除。有关预备语句可参考PREPARE。无。无。 - [DO](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0247.md): 执行匿名代码块。代码块被视为没有参数的函数主体,返回值类型是void。它的解析和执行是同一时刻发生的。程序语言在使用之前,必须通过命令CREATE LANGUAGE安装到当前的数据库中。 plpgsql是默认的安装语言,其它语言安装时必须指定。如果语言是不受信任的,用户必须有使用程序语言的USAGE权限,或者是系统管理员。授予用户webu - [EXECUTE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0248.md): 执行一个前面准备好的预备语句。由于预备语句只在会话的生命期里存在,那么该预备语句必须在当前会话中由一个更早执行的PREPARE语句创建。如果创建预备语句的PREPARE语句声明了一些参数,那么传递给EXECUTE语句的必须是一个兼容的参数集,否则就会生成一个错误。准备数据:为一个INSERT语句创建一个预备语句,然后执行它:PREPARE - [EXECUTE DIRECT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0249.md): 在指定的节点上执行SQL语句。一般情况下,SQL语句的执行是由集群负载自动分配到合适的节点上,execute direct主要用于数据库维护和测试。只有系统管理员才能执行EXECUTE DIRECT。为了各个节点上数据的一致性,SQL语句仅支持SELECT,不允许执行事务语句、DDL、DML。使用此类型语句在指定的DN执行AVG聚集计算时 - [GRANT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0250.md): 对角色和用户进行授权操作。使用GRANT命令进行用户授权包括以下三种场景:系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。系统权限一般在创建或修改角色阶段,通过CREATE/ALTER ROLE语法来指定。其中,SYSADMIN权限可以通过GRANT/REVOKE A - [PREPARE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0251.md): 创建一个预备语句。预备语句是服务端的对象,可以用于优化性能。在执行PREPARE语句的时候,指定的查询被解析、分析、重写。当随后发出EXECUTE语句的时候,预备语句被规划和执行。这种设计避免了重复解析、分析工作。PREPARE语句创建后在整个数据库会话期间一直存在,一旦创建成功,即便是在事务块中创建,事务回滚,PREPARE也不会删除。 - [REASSIGN OWNED](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0252.md): 修改数据库对象的属主。REASSIGN OWNED要求系统将所有old_role拥有的数据库对象的属主更改为new_role。REASSIGN OWNED常用于在删除角色之前的准备工作。由于不会影响其他数据库中的对象, 因此通常需要在每个数据库中执行此命令,该数据库包含要删除的角色所拥有的对象。执行REASSIGN OWNED需要有原角色 - [REVOKE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0253.md): REVOKE用于撤销一个或多个角色的权限。非对象所有者试图在对象上REVOKE权限,命令按照以下规则执行:如果授权用户没有该对象上的权限,则命令立即失败。如果授权用户有部分权限,则只撤销那些有授权选项的权限。如果授权用户没有授权选项,REVOKE ALL PRIVILEGES形式将发出一个错误信息,而对于其他形式的命令而言,如果是命令中指 - [TCL语法一览表](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0255.md): TCL(Transaction Control Language事务控制语言 ),用来控制数据库操纵事务发生的时间及效果,对数据库实行监视等。DWS通过COMMIT或者END可完成提交事务的功能。请参考COMMIT | END。DWS用于在当前事务里建立一个新的保存点。请参考SAVEPOINT。DWS回滚当前事务状态回到上次最后提交的状态 - [ABORT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0256.md): 回滚当前事务并且撤销所有当前事务中所做的更改。作用等同于ROLLBACK,早期SQL有用ABORT,现在推荐使用ROLLBACK。关于更多事务管理,请参见事务管理。在事务外部执行ABORT语句不会影响事务的执行,但是会产生一个警告信息。WORK | TRANSACTION可选关键字,对ABORT操作没有影响。以下演示,使用ABORT语句回 - [BEGIN](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0257.md): BEGIN可以用于开始一个匿名块,也可以用于开始一个事务。本节描述用BEGIN开始匿名块的语法,以BEGIN开始事务的语法见START TRANSACTION。匿名块是能够动态地创建和执行过程代码的结构,而不需要以持久化的方式将代码作为数据库对象储存在数据库中。无。开启匿名块[DECLARE [declare_statements]] - [CHECKPOINT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0258.md): 检查点(CHECKPOINT)是一个事务日志中的点,所有数据文件都在该点被更新以反映日志中的信息,所有数据文件都将被刷新到磁盘。设置事务日志检查点。预写式日志(WAL)缺省时在事务日志中每隔一段时间放置一个检查点。可以设置相关运行时参数(checkpoint_segments和checkpoint_timeout)来调整这个原子化检查点的 - [COMMIT | END](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0259.md): 通过COMMIT或者END可完成提交事务的功能,即提交事务的所有操作。执行COMMIT这个命令的时候,命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。提交事务,让所有更改永久化:ROLLBACK - [COMMIT PREPARED](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0260.md): 提交一个早先为两阶段提交准备好的事务。该功能仅在维护模式(GUC参数xc_maintenance_mode为on时)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。命令执行者必须是该事务的创建者或系统管理员,且创建和提交操作可以不在同一个会话中。事务功能由数据库自动维护,不应显式使用事务功能。PREPARE T - [PREPARE TRANSACTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0262.md): 为当前事务做两阶段提交的准备。在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。一旦准备好了,一个事务就可以在稍后用COMMIT PREPARED或 ROLLBACK PREPARED命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初 - [SAVEPOINT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0263.md): SAVEPOINT用于在当前事务里建立一个新的保存点。保存点是事务中的一个特殊记号,它允许将那些在它建立后执行的命令全部回滚,把事务的状态恢复到保存点所在的时刻。使用ROLLBACK TO SAVEPOINT回滚到一个保存点。使用RELEASE SAVEPOINT删除一个保存点,但是保留该保存点建立后执行的命令的效果。保存点只能在一个事务 - [SET TRANSACTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0264.md): 为当前事务设置特性。它对后面的事务没有影响。事务特性包括事务隔离级别、事务访问模式(读/写或者只读)。无。设置事务的隔离级别、读写模式。{ SET [ LOCAL ] TRANSACTION|SET SESSION CHARACTERISTICS AS TRANSACTION } { ISOLATION LEVEL { READ CO - [START TRANSACTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0265.md): 通过START TRANSACTION启动事务。如果声明了隔离级别、读写模式,那么新事务就使用这些特性,类似执行了SET TRANSACTION。无。格式一:START TRANSACTION格式格式二:BEGIN格式准备数据:DROP SCHEMA IF EXISTS tpcds CASCADE; CREATE SCHEMA tpcds - [ROLLBACK](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0266.md): 回滚当前事务并取消当前事务中的所有更新。在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的操作全部撤销,数据库状态回到事务开始时。如果不在一个事务内部发出ROLLBACK不会有问题,但是将抛出一个警告信息。WORK | TRANSACTION可选关键字。除了增加可读性,对ROLLBACK操作没有影响。取 - [RELEASE SAVEPOINT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0267.md): RELEASE SAVEPOINT删除当前事务先前定义的保存点。保存点删除后便无法再作为回滚点使用,除此之外没有其它用户可见的行为。删除保存点并不能撤销在保存点建立起来之后执行的命令的影响。要撤销那些命令可以使用ROLLBACK TO SAVEPOINT 。在不再需要的时候删除保存点可以令系统在事务结束之前提前回收一些资源。RELEASE - [ROLLBACK PREPARED](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0268.md): 取消一个先前为两阶段提交准备好的事务。该功能仅在维护模式(GUC参数xc_maintenance_mode为on时)下可用。该模式谨慎打开,一般供维护人员排查问题使用,一般用户不应使用该模式。要想回滚一个预备事务,必须是最初发起事务的用户,或者是系统管理员。事务功能由数据库自动维护,不应显式使用事务功能。transaction_id待提交 - [ROLLBACK TO SAVEPOINT](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0269.md): ROLLBACK TO SAVEPOINT用于回滚到保存点,隐含地删除所有在该保存点之后建立的保存点。回滚所有指定保存点建立之后执行的命令。保存点仍然有效,并且需要时可以再次回滚到该点。不能回滚到未定义的保存点,语法上会报错。在保存点方面,游标有一些非事务性的行为。任何在保存点里打开的游标都会在回滚掉这个保存点之后关闭。如果一个前面打开了 - [RENAME TABLE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0276.md): 重命名指定表。RENAME TABLE命令与如下命令的作用相同:不支持跨schema对表进行重命名操作。修改表名:CREATE TABLE,ALTER TABLE,DROP TABLE - [DQL语法一览表](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0278.md): DQL(Data Query Language数据查询语言),用于从表或视图中获取数据。DWS提供了用于从表或视图中获取数据的语句,请参考SELECT。DWS提供了根据查询结果创建一个新表,并且将查询到的数据插入到新表中的语句,请参考SELECT INTO。 - [RoaringBitmap类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0279.md): DWS自8.1.3集群版本开始,支持RoaringBitmap数据类型,用于存储位图数据集。roaringbitmap数据类型支持行存,列存表。示例:创建带有roaringbitmap数据类型的表。 - [ALTER EXCEPT RULE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0280.md): 修改一个异常规则集合,可以修改一组规则集中的任意一个或者多个具体的规则阈值。使用ALTER语法添加某个新规则阈值时,WITH参数中原来的其他的规则会保留,并不是全部清空覆盖。例如原来一组规则中只有一条规则:作业排队阻塞的最大时间blocktime = 100秒,通过以下语法新添加一条作业执行最大时间elapsedtime为1000秒,则最 - [CREATE EXCEPT RULE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0281.md): 用于创建一个异常规则集合。创建时可以指定任意一个或者多个具体的规则阈值,也可以指定触发异常规则后所采取的操作,当前支持终止(abort)和降级(penalty)操作。分布式数据库中,查询任务由多个节点并行执行,每个节点独立处理部分数据并汇总结果。但若任一节点出现性能瓶颈,即使其他节点快速完成,整个查询仍会被拖慢。在某些极端情况下,一个查询 - [DROP EXCEPT RULE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0282.md): 用于删除指定异常规则集合。只有系统管理员才能执行DROP EXCEPT RULE操作。创建异常规则集合except_rule_1。删除名称为except_rule_1的规则集合。如果存在名为except_rule_2的规则集合,则将其删除。CREATE EXCEPT RULE,ALTER EXCEPT RULE - [DISCARD](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0283.md): 释放与数据库会话相关的内部资源。DISCARD命令用于重设部分或全部的会话的状态,不同的DISCARD子命令释放不同类型的资源;DISCARD ALL释放所有与当前会话相关的临时资源,并重置到其初始状态。执行DISCARD VOLATILE { TEMPORARY | TEMP }操作后,当前session内所有volatile临时表资源 - [ALTER PUBLICATION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0284.md): 更改发布的属性。该语法仅8.2.0.100及以上集群版本支持。发布的所有者和系统管理员才能执行ALTER PUBLICATION。要更改发布的所有者,用户必须是新所有者角色的直接或者间接成员,并且新的所有者必须具有当前数据库的CREATE权限。FOR ALL TABLES发布的新所有者必须是系统管理员。管理员用户可以更改任何发布的所属关系 - [CREATE PUBLICATION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0285.md): 为当前数据库添加一个新的发布(PUBLICATION)。发布本质上是通过逻辑复制将一组表的数据变更进行复制。数据库将自动跟踪并捕获这些源表上发生的数据操作(INSERT, UPDATE,DELETE和TRUNCATE),并通过逻辑复制机制,持续地将这些变更数据传输给所有配置并订阅(CREATE SUBSCRIPTION)该发布的目标数据库 - [DROP PUBLICATION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0286.md): 删除一个发布。该语法仅8.2.0.100及以上集群版本支持。只有发布的所有者可以执行DROP PUBLICATION操作,系统管理员默认拥有此权限。删除发布:DROP PUBLICATION mypublication;ALTER PUBLICATION,CREATE PUBLICATION - [ALTER SUBSCRIPTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0287.md): 修改订阅的属性。该语法在9.1.1.100及以上集群版本中已废弃,执行时会报错SUBSCRIPTION is not yet supported。订阅的所有者才能执行ALTER SUBSCRIPTION,并且新的所有者必须是系统管理员。更新订阅的连接信息。ALTER SUBSCRIPTION name CONNECTION 'connin - [CREATE SUBSCRIPTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0288.md): 为当前数据库添加一个新的订阅(SUBSCRIPTION)。订阅(Subscription) 是指一个数据库实例(称为订阅者)从另一个数据库实例(称为发布者)接收数据变更的过程。订阅者通过订阅发布者的数据变更,实现数据的同步和分发。该语法在9.1.1.100及以上集群版本中已废弃,执行时会报错SUBSCRIPTION is not yet - [DROP SUBSCRIPTION](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0289.md): 删除一个订阅。该语法在9.1.1.100及以上集群版本中已废弃,执行时会报错SUBSCRIPTION is not yet supported。只有系统管理员才可以删除订阅。删除订阅:DROP SUBSCRIPTION mysub;ALTER SUBSCRIPTION,CREATE SUBSCRIPTION - [ALTER BLOCK RULE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0291.md): 修改查询过滤规则属性,包括查询过滤规则名称、绑定的客户端名称、客户端IP、用户以及匹配方式等。在日常数据库操作中,异常SQL的执行可能会导致资源过度消耗,影响数据库性能和稳定性,通过创建查询过滤规则,可以将此类SQL语句进行拦截。该语法仅9.1.0.100及以上集群版本支持。只有拥有数据库所有者权限的用户或者授予gs_role_block - [CREATE BLOCK RULE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0292.md): 该语法用于创建一条查询过滤规则,包括查询过滤规则名称、绑定的客户端名称、客户端IP、用户以及匹配方式等。在日常数据库操作中,异常SQL的执行可能会导致资源过度消耗,影响数据库性能和稳定性,通过创建查询过滤规则,可以将此类SQL语句进行拦截。当前支持指定某个SQL语句的正则匹配进行拦截,例如针对某用户对某张表的SELECT进行拦截;也支持指 - [DROP BLOCK RULE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0293.md): 该语法用于删除查询过滤规则。查询过滤规则,包括查询过滤规则名称、绑定的客户端名称、客户端IP、用户以及匹配方式等。在日常数据库操作中,异常SQL的执行可能会导致资源过度消耗,影响数据库性能和稳定性,通过创建查询过滤规则,可以将此类SQL语句进行拦截。该语法仅9.1.0.100及以上集群版本支持。只有拥有数据库所有者权限的用户或者授予gs_ - [时序函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0294.md): DWS支持的时序计算函数参见表1。描述:计算按照时间排序后两行之间的差值。该函数通常用于时序场景计算按照时间排序后相邻两行差值,用于流量,速度等指标监控。参数说明:field,需要计算的列。delta是一个窗口函数,需要与over窗口函数使用。且over中rows语句不会改变delta函数结果,比如,delta(value) over(o - [实时数仓函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0295.md): 描述:用于手动对HStore表进行轻量化清理操作,持有目标表的三级锁。返回值类型:int示例:描述:用于手动对HStore表进行全量清理操作。partitionName为可选参数,用于指定单分区进行操作。返回值类型:int执行该操作会强制将DELTA表上的所有可见操作Merge到主表,然后建一张新的空Delta表, 期间持有该表的八级锁。 - [备份控制函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0300.md): 备份控制函数可帮助进行在线备份。描述:为执行恢复创建一个命名点。(需要管理员角色)返回值类型:text备注:pg_create_restore_point创建了一个可以用作恢复目的、有命名的事务日志记录,并返回相应的事务日志位置。在恢复过程中,recovery_target_name可以通过这个名称定位对应的日志恢复点,并从此处开始执行恢 - [恢复控制函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0301.md): 恢复控制函数提供了当前备机状态的信息。此类函数可在恢复期间或数据库正常运行时执行。描述:如果恢复仍然在进行中则返回true。返回值类型:bool示例:描述:获取最后接收事务日志的位置并通过流媒体复制同步到磁盘。当流复制仍在进行,事务日志将持续递增。如果恢复已完成,则这个值将保持最后接收事务记录的状态并在恢复期间同步到磁盘。如果不能用流复制 - [数据库对象尺寸函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0302.md): 数据库对象尺寸函数用于计算数据库对象使用的实际磁盘空间,其计算结果都返回以字节为单位的大小。描述:存储一个指定的数值需要的字节数(可能压缩过)。返回值类型:integer备注:pg_column_size显示用于存储某个独立数据值的空间。描述:指定OID代表的数据库使用的磁盘空间。返回值类型:bigint描述:指定名称的数据库使用的磁盘空 - [数据库对象位置函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0303.md): 描述:指定关系的文件节点数。返回值类型:oid备注:pg_relation_filenode接收一个表、索引、序列或压缩表的OID或者名字,并且返回当前分配给它的“filenode”数。文件节点是关系使用的文件名字的基本组件。对大多数表来说,结果和pg_class.relfilenode相同,但对确定的系统目录来说, relfilenod - [分区管理函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0304.md): 描述:用于给开启自动创建分区功能的表添加分区。返回值类型:void备注:该函数运行时,会在现有分区boundary的基础上,创建多个时间范围为boundaries_interval的新分区,直到new_part_boundary – now_time >= 29 * boundaries_interval,之后再额外多创建一个分区,保证该 - [排序规则版本函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0305.md): 描述:返回当前安装在操作系统中的该排序规则对象的实际版本,目前仅对case_insensitive有效。返回值类型:text示例: - [数学运算符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0306.md): 数学运算操作符用于执行各种操作(如数学计算、位操作)的特殊符号。 - [数学函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0307.md): 描述:计算x的绝对值。输入参数x支持bigint、double precision、integer、numeric、real或smallint类型。返回值类型:和输入相同。示例:描述:计算x的反余弦。输入参数为double precision类型。取值范围为[-1,1]。返回值类型:double precision示例:描述:计算x的反正 - [时间和日期操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0308.md): 在使用时间和日期操作符时,对应的操作数请使用明确的类型前缀修饰,以确保数据库在解析操作数的时候能够与用户预期一致,不会产生非预期的结果。如下示例,没有明确数据类型就会出现异常错误。 - [时间和日期函数概述](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0310.md): DWS的时间和日期函数用于在数据业务中加减日期,获取当前时间、格式化日期显示、提取年月日等操作,广泛应用于数据分析、日程管理、财务报表等领域,帮助用户提高数据处理效率和准确性。 - [时间和日期基本函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0311.md): 描述:获取给定日期时间中的日(即月份中的第几天)。与dayofmonth(date)函数相同。取值范围:1~31返回值类型:integer示例:描述:获取给定日期时间对应的星期值,星期一作为一周的开始日。取值范围:0~6返回值类型:integer示例:描述:根据模式(mode)返回指定日期时间所处年份中对应的周数,默认模式为0。date, - [时间和日期运算函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0312.md): 描述:将两个参数相减,并以年、月、日作为返回值。若相减值为负,则函数返回亦为负。返回值类型:interval示例:描述:当前时间和参数相减。返回值类型:interval示例:描述:返回给定日期时间加上指定单位的时间间隔的结果。默认单位(即第二个参数为整型时)为天数。返回值类型:timestamp示例:当入参为text类型时:当入参为dat - [时间和日期截取函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0313.md): date_part函数用于从一个日期时间表达式(timestamp或interval)中提取指定的部分(text),等效于extract(field from timestamp)函数。语法:source,必须是一个timestamp、time或interval类型的值表达式(类型为date的表达式转换为timestamp,因此也可以用) - [几何操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0314.md): 描述:平移,即从第一个参数的每个点的坐标中加上第二个point的坐标。示例:描述:平移,从第一个参数的每个点的坐标中减去第二个point的坐标。示例:描述:伸展/旋转。示例:描述:收缩/旋转。示例:描述:两个图形交点或者交面。示例:描述:图形的路径数目或多边形顶点数。示例:描述:图形的长度或者周长。示例:描述:图形的中心。示例:描述:第一 - [几何函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0315.md): 描述:计算图形的面积。返回类型:double precision示例:描述:计算图形的中心。返回类型:point示例:描述:计算圆的直径。返回类型:double precision示例:描述:矩形的竖直高度。返回类型:double precision示例:描述:图形是否为闭合路径。返回类型:boolean示例:描述:图形是否为开放路径。返 - [几何类型转换函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0316.md): 描述:将圆转换成矩形。返回类型:box示例:描述:将点转换成矩形。返回类型:box示例:描述:将多边形转换成矩形。返回类型:box示例:描述:矩形转换成圆。返回类型:circle示例:描述:将圆心和半径转换成圆。返回类型:circle示例:描述:将多边形转换成圆。返回类型:circle示例:描述:矩形对角线转化成线段。返回类型:lseg示 - [cidr和inet操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0317.md): 操作符<<,<<=,>>,>>=对子网包含进行测试。它们只考虑两个地址的网络部分(忽略任何主机部分),然后判断其中一个网络是等于另外一个网络,还是另外一个网络的子网。描述:小于示例:描述:小于或等于示例:描述:等于示例:描述:大于或等于示例:描述:大于示例:描述:不等于示例:描述:包含于示例:描述:包含于或等于示例:描述:包含示例:描述: - [网络地址函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0318.md): 函数abbrev,host,text主要是为了提供可选的显示格式。任何cidr值都能以显式或者隐式的方式转换为inet值,因此能够操作inet值的函数也同样能够操作cidr值。inet值也可以转换为cidr值,此时inet子网掩码右侧的所有位都将转换为零,以创建一个有效的cidr值。另外,用户还可以使用常规的类型转换语法将一个文本字符串转 - [文本检索操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0319.md): 描述:tsvector类型的词汇与tsquery类型的词汇是否匹配示例:描述:@@的同义词示例:描述:将两个tsquery类型的词汇进行“与”操作示例:描述:将两个tsquery类型的词汇进行“或”操作示例:描述:tsquery类型词汇的非关系示例:描述:一个tsquery类型的词汇是否包含另一个tsquery类型的词汇示例:描述:一个t - [文本检索函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0320.md): 描述:获取文本检索的默认配置。返回类型:regconfig示例:描述:tsvector类型词汇的单词数。返回类型:integer示例:描述:tsquery类型的单词加上操作符的数量。返回类型:integer示例:描述:产生tsquery类型的词汇,并忽略标点。返回类型:tsquery示例:描述:获取tsquery类型的词汇可加索引的部分。 - [文本检索调试函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0321.md): 描述:测试一个配置。返回类型:setof record示例:描述:测试一个数据字典。返回类型:text[]示例:描述:测试一个解析。返回类型:setof record示例:描述:测试一个解析。返回类型:setof record示例:描述:获取分析器定义的记号类型。返回类型:setof record示例:描述:获取分析器定义的记号类型。返回 - [Roaring Bitmap操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0322.md): 8.1.3集群版本开始,DWS支持高效的位图处理操作符,位图操作符在数据库中用于高效地进行集合运算,如交集、并集、差集和异或,通过合理使用位图操作符,可以显著提升数据库的处理效率,满足各种复杂的数据处理需求。适用于需要频繁进行集合运算的场景,如数据挖掘、机器学习中的特征工程,以及需要快速数据筛选和聚合的场景。9.1.1.100集群版本开始 - [Roaring Bitmap函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0323.md): 8.1.3集群版本开始,DWS支持高效的位图处理函数,可用于用户画像,精准营销等场景,极大地提高了查询性能。9.1.1.100集群版本开始支持64位整数的位图。描述:将int数组转成roaringbitmap类型。返回值类型:roaringbitmap示例:描述:把roaringbitmap数据转成int,按照多行输出。返回值类型:rec - [Roaring Bitmap聚合函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0324.md): 8.1.3集群版本开始,DWS支持高效的位图聚合函数,这些函数在大规模数据处理和复杂集合运算的场景中能够显著提升数据处理的效率和灵活性。描述:将分组内的bigint值聚合成一个roaringbitmap值。也支持使用int作为入参。返回值类型:roaringbitmap示例:描述:将分组内的roaringbitmap数据按照交的操作聚合成 - [使用场景](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0325.md): 目前在互联网、教育、游戏等行业都有实时精准营销的需求。通过系统生成用户画像,在营销时通过条件组合筛选用户,快速提取目标群体。例如:在电商行业中,商家在进行营销活动前,需要根据活动的目的,圈选一批满足特定特征的目标用户群体进行广告推送。在教育行业中,需要根据学生不同的特征,推送有针对性的练习题目,帮助学生查漏补缺。在搜索、视频、门户网站中, - [HLL操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0326.md): HLL类型支持如下操作符: - [哈希函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0327.md): 描述:对bool类型数据计算哈希值。返回值类型:hll_hashval示例:SELECT hll_hash_boolean(FALSE); hll_hash_boolean --------------------- 5048724184180415669 (1 row)描述:设置hash seed(即改变哈希策略)并对boo - [精度函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0328.md): HLL(HyperLogLog)主要存在三种模式Explicit,Sparse,Full。当数据规模比较小的时候会使用Explicit模式和Sparse模式, 这两种模式在计算结果上基本上没有误差。 随着distinct值越来越多,就会转换成Full模式,但结果也会存在一定误差。下列函数用于查看HLL中精度参数。描述:查看当前hll中的s - [聚合函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0329.md): 描述:把哈希后的数据按照分组放到hll中。返回值类型:hll示例:准备数据。CREATE TABLE t_id(id int); INSERT INTO t_id VALUES(generate_series(1,500)); CREATE TABLE t_data(a int, c text); INSERT INTO t_data S - [功能函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0330.md): 描述:打印hll的一些debug参数信息。返回值类型:cstring示例:描述:创建一个空的hll。返回值类型:hll示例:描述:创建空的hll并指定参数log2m,取值范围是10到16。返回值类型: hll示例:描述:创建空的hll并依次指定参数log2m、regwidth。regwidth取值范围是1到5。返回值类型: hll - [内置函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0331.md): HLL(HyperLogLog)有一系列内置函数用于内部对数据进行处理,一般情况下不建议用户使用。 - [数组操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0332.md): 数组比较是使用默认的B-tree比较函数对所有元素逐一进行比较的。多维数组的元素按照行顺序进行访问。如果两个数组的内容相同但维数不等,决定排序顺序的首要因素是维数。DWS支持的数组操作符如表1所示描述:两个数组是否相等示例:描述:两个数组是否不相等示例:描述:一个数组是否小于另一个数组示例:描述:一个数组是否大于另一个数组示例:描述:一个 - [数组函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0333.md): 数组操作函数对输入的数组数据进行一些基本操作,如添加元素、查找元素,转换数组并返回操作后的数组数据。DWS支持的数组函数参考表1。描述:向数组末尾添加元素,只支持一维数组。返回类型:anyarray示例:向数组[1,2]末尾添加元素3。描述:向数组开头添加元素,只支持一维数组。返回类型:anyarray示例:向数组[2,3]开头添加元素1 - [范围操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0334.md): 范围操作符用于处理范围类型数据的运算(如 @>、&&)。范围操作符支持直接应用于查询表达式,快速筛选特定区间内的数据,常用于范围比较、查询限制及区间界定。比较操作符<、>、<=和>=先比较下界,只有下界相等时才比较上界。<<、>>和-|-操作符当包含空范围时也会返回false,即不认为空范围在其他范围之前或之后。并集和差集操作符的执行结果 - [范围函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0335.md): 范围函数用于定义范围的上下限以及判断某个值是否在范围限制内。描述:获取范围的下界。如果范围是空或者下界为无限,则返回null。返回类型:范围元素类型示例:描述:获取范围的上界。如果范围是空或者上界为无限,则返回null。返回类型:范围元素类型示例:描述:判断范围是否为空。返回类型:boolean示例:描述:判断范围的下界是否被包含在内。返 - [序列号生成函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0336.md): generate_series()函数根据指定的开始值(start)、结束值(stop)和步长(step)返回一个基于系列的集合。generate_series()函数的入参中,当step是正数且start大于stop,则返回零行。相反,当step是负数且start小于stop,则返回零行。如果任何输入为NULL也会返回零行。如果step - [下标生成函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0337.md): 描述:生成一系列包括给定数组的下标。返回值类型:setof int示例:描述:生成一系列包括给定数组的下标。当reverse为真时,该系列则以相反的顺序返回。返回值类型:setof int示例:generate_subscripts是为给定数组的指定维度生成有效下标集的函数。如果数组中没有所请求的维度或者任何输入NULL数组,均返回零行( - [会话信息函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0338.md): 描述:当前数据库的名字(在标准SQL中称“catalog”),与current_database()同义。返回值类型:name示例:描述:当前数据库的名字。返回值类型:name示例:描述:用于获取当前客户端的字符编码方式。当遇到字符显示问题时,通过检查客户端编码可快速定位问题。返回值类型:name示例:描述:由客户端提交的当前执行语句(可 - [访问权限查询函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0339.md): 描述:指定用户是否有访问表任何列的权限。返回类型:boolean描述:当前用户是否有访问表任何列的权限。返回类型:boolean备注:has_any_column_privilege检查用户是否以特定方式访问表的任何列。其参数可能与has_table_privilege类似,除了访问权限类型必须是SELECT、INSERT、UPDATE或 - [模式可见性查询函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0340.md): 每个函数对数据库对象执行可见性检查。对于函数和操作符,如果在前面的搜索路径中没有相同的对象名称和参数的数据类型,则此对象是可见的。对于操作符类,则要同时考虑名字和相关索引的访问方法。所有这些函数都需使用OID来标识要检查的对象。如果用户想通过名字测试对象,则可使用OID别名类型(regclass、regtype、regprocedure、 - [系统表信息函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0341.md): 描述:获取数据类型的SQL名称。返回类型:text备注:format_type通过数据类型的类型OID以及可能的类型修饰词,返回其SQL名称。如果不知道具体的修饰词,则在类型修饰词的位置传入NULL。类型修饰词一般只对有长度限制的数据类型有意义。format_type所返回的SQL名称中包含数据类型的长度值,其大小是:实际存储长度len - [系统函数信息函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0342.md): 描述:查询系统内置函数的信息。返回类型:record描述:获取函数的定义。返回类型:textfunc_oid为函数的OID,可以通过PG_PROC系统表查询。示例:查询函数justify_days的OID及其函数定义。备注:pg_get_functiondef返回函数查询结果为存储过程原始文本格式,自带转义符'\',便于后续应用的正确解析 - [注释信息函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0343.md): 描述:获取一个表字段的注释。返回类型:text备注:col_description返回一个表中字段的注释,通过表OID和字段号来声明。示例:查询pg_class系统表获取表OID,查询INFORMATION_SCHEMA.COLUMNS系统视图获取column_number。描述:获取一个数据库对象的注释。返回类型:text备注:带有两个 - [事务ID和快照](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0344.md): 以下的函数在输出形式中提供服务器事务信息。这些函数的主要用途是为了确定在两个快照之间有哪个事务提交。描述:如果提交或忽略给定的XID(gxid)。NULL表示的状态是未知的(运行,准备,冻结等)。返回类型:bool描述:获取当前事务ID。返回类型:bigint描述:获取当前快照。返回类型:txid_snapshot描述:在快照中获取正在进 - [计算子集群函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0345.md): 描述:返回计算子集群当前的负载状态。返回类型:void示例: - [锁信息函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0346.md): 描述:返回集群中有冲突的锁信息。当某个锁正在等待另一个锁,或正被另一个锁等待,则认为该锁是冲突的。返回类型:setof record示例: - [获取残留文件列表函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0347.md): 描述:用于获取当前节点的所有残留文件记录。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。返回值类型:record返回信息如下:示例:描述:pg_get_residualfiles()的CN统一查询函数。该函数为集群级函数,与当前所在的数据库无关,在CN实例上运行。返回值类型:record返回信息如下:示例: - [验证残留文件函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0348.md): 描述:用于验证参数指定文件中记录的文件是否为残留文件。该函数为实例级函数,与当前所在的数据库相关,可以在任意实例上运行。参数类型:text返回值类型:bool函数返回字段如下:示例:本函数只能验证记录的文件在当前登录的数据库中是否是残留文件。如果记录的文件不属于当前登录的数据库,则不会进行校验行为。描述:用于验证当前实例上所有残留文件列表 - [删除残留文件函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0349.md): 描述:用于删除当前实例中指定残留文件列表中的文件。该函数为实例级函数,与当前所在的数据库无关,可以在任意实例上运行。参数类型:text返回值类型:record函数返回字段如下:示例:残留文件只有在调用pg_verify_residualfiles()进行验证后才能被真正删除。删除动作不区分数据库,指定文件中所有已经验证的文件都会被删除。如 - [残留文件管理函数应用](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0350.md): pgxc类残留文件管理函数只对CN和当前主DN进行操作,不会验证和清理备DN上的残留文件。所以主DN完成清理后,应在备DN上及时执行残留文件清理操作或对备机进行build,防止主备切换后由于增量build导致备机残留文件被重新复制回主DN,导致未成功清理的假象。以当前两个用户自建的数据库db1、db2为例:在CN上获取集群的所有残留文件记 - [产生XML内容](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0351.md): 本节函数和类函数的表达式可以用来从SQL数据产生XML内容。适用于将查询结果格式化成XML文档以便于在客户端应用中处理。描述:从字符数据中生成一个XML类型的值。返回值类型:xml示例:描述:从XML类型的值生成一个字符串。返回值类型:type,可以是character,character varying或text(或其别名)示例:描述: - [XML谓词](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0352.md): 本节的函数用于检查xml值的属性。描述:如果参数XML值是一个正确的XML文档,则IS DOCUMENT返回真;如果非正确XML文档,则返回假;参数为空时返回空。返回值类型:bool描述:如果参数XML值不是一个正确的XML文档,则IS NOT DOCUMENT返回真;如果是正确XML文档,则返回假;参数为空时返回空。返回值类型:bool - [处理XML](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0353.md): 为了处理数据类型XML的值,DWS提供了函数xpath和xpath_exists计算XPath表达式以及XMLTABLE表函数。描述:它返回一个XML值的数组对应xpath表达式所产生的节点集。如果xpath表达式返回一个标量值而不是节点集,将返回一个单个元素的数组。该函数的第二个参数xml必须是一个完整的XML文档,它必须有一个根节点元 - [将表映射到XML](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0354.md): 描述:把表的内容映射成XML值。返回值类型:xml描述:把关系表的模式映射成XML模式文档。返回值类型:xml描述:把关系表映射成XML值和模式文档。返回值类型:xml描述:把SQL查询的内容映射成XML值。返回值类型:xml描述:把SQL查询映射成XML模式文档。返回值类型:xml描述:把SQL查询映射成XML值和模式文档。返回值类型: - [JSON/JSONB操作符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0355.md): 华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。 - [JSON/JSONB函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0356.md): JSON/JSONB函数表示可以用于JSON类型(请参考JSON类型)数据的函数。JSON/JSONB函数只提供基础功能,如有其他复杂或特殊性能要求场景,请联系技术工程师进行评估。描述:返回JSON类型的数组。一个多维数组成为一个JSON数组的数组。如果pretty_bool设置为true,将在一维元素之间添加换行符。返回类型:json示 - [CREATE MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0357.md): 创建新的物化视图。物化视图语法仅8.2.1.220及以上集群支持。物化视图(Materialized View)是数据库中一种特殊类型的数据库对象。它将复杂计算的查询结果预计算并存储在数据库中,实现加速查询的目的。适用于频繁对大量数据进行复杂的查询和分析场景,使用物化视图可以预先计算和存储该场景的查询结果,显著提高查询性能。创建权限:创建 - [ALTER MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0358.md): 修改物化视图属性。物化视图语法仅8.2.1.220及以上集群支持。使用ALTER MATERIALIZED VIEW语句需确保enable_matview设置为on。设置是否对物化视图启动查询重写。ALTER MATERIALIZED VIEW [ IF EXISTS ] { materialized_view_name } [ - [Hudi系统函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0359.md): Hudi系统函数仅9.1.0.100及以上集群版本支持。描述:查询Hudi外表参数设置详情。返回值类型:setof record示例:描述:查询Hudi外表的属性信息(hoodie.properties)。以key-value键值对表示。返回值类型:setof record示例:描述:获取当前Hudi外表最新commit的时间戳和数据写入 - [DROP MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0360.md): 删除物化视图。物化视图语法仅8.2.1.220及以上集群支持。无删除物化视图:ALTER MATERIALIZED VIEW,CREATE MATERIALIZED VIEW,REFRESH MATERIALIZED VIEW - [REFRESH MATERIALIZED VIEW](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0361.md): 刷新物化视图。该语法仅8.2.1.220及以上集群支持。刷新方式由CREATE MATERIALIZED VIEW语法中的REFRESH参数指定。目前支持全量刷新或者定时刷新。刷新操作会阻塞基表的DML操作。增量物化视图的REFRESH不支持explain performance。刷新物化视图。级联向下刷新物化视图。CREATE MATE - [冷热表用户函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0362.md): 描述:用来修改冷热表的冷数据切换至OBS上的时间,默认为每日0点。table_name为冷热表的表名,类型为name,time为数据切换任务调度时间,类型为Time。返回值:SUCCESS,任务时间修改成功。示例:描述:切换所有冷热表,将符合冷热切换规则的数据由热数据切换至冷数据(OBS中)。返回值类型:int返回值字段:success_ - [plan management管理函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0363.md): plan management模块相关函数介绍。描述:为sql_hash对应的语句绑定outline_name对应的outline,即把SQL_OUTLINE系统表中主键outline_name和sql_hash对应的outline绑定给sql_hash对应的语句。apply_skew_hint,表示是否应用outline中的skew h - [CREATE STATISTICS](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0364.md): 在当前数据库中为表创建一个扩展统计信息对象,该对象由命令的执行者所有。该语法仅8.2.1.200及以上集群版本支持(8.3.0集群版本不支持)。目前该命令仅支持创建表达式统计信息。不支持对临时表创建表达式统计信息。不支持在表的分区上创建表达式统计信息。不支持对包含聚集函数、子查询、窗口函数、返回集合类型的表达式创建统计信息。创建示例表并插 - [DROP STATISTICS](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0365.md): 删除一个扩展统计信息对象。该语法仅8.2.1.200及以上集群版本支持(8.3.0集群版本不支持)。无删除一个扩展统计信息对象:DROP STATISTICS s1_t1_row;CREATE STATISTICS - [ALTER EXTERNAL SCHEMA](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0366.md): 修改EXTERNAL SCHEMA(外部模式)的属性。该语法仅8.3.0及以上版本支持。根据指定的名称修改EXTERNAL SCHEMA。ALTER EXTERNAL SCHEMA schema_name WITH [ SOURCE source_name ] [ DATABASE 'database_name - [CREATE EXTERNAL SCHEMA](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0367.md): 创建EXTERNAL SCHEMA,即外部模式。该语法仅8.3.0及以上版本支持。使用CREATE EXTERNAL SCHEMA建立DWS集群与外部数据源(如Lakeformation、DLI、Hive Metastore)的元数据映射通道,实时高效访问外部数据源。用户通过“外部模式名.表名” 直接查询,无需手动创建外表或数据搬迁,显著 - [数组类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0368.md): 数组是一组数据的集合。数组类型允许在单个数据库字段中存储多个值。数组类型通常用于存储和处理具有相似属性的数据。或其中参数param说明如下:param :数组包含的值,允许出现零个或多个,多个值之间用逗号分隔,没有值可填写为NULL。以'{ param}' 这种格式作为数组常量时,其中的字符串类型的元素不能再以单引号开始和结束,需要使用双 - [枚举类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0369.md): 枚举(enum)类型是由一个静态、值的有序集合构成的数据类型。它们等效于很多编程语言所支持的enum类型。枚举类型可以是一周中的日期,或者一个数据的状态值集合。枚举类型可以使用CREATE TYPE命令创建,例如:枚举类型被创建后,可以在表和函数定义中使用:枚举类型值的排序是该类型被创建时所列出的值的顺序。每一种枚举数据类型都是独立的并且 - [范围类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0370.md): 范围类型是表示某些元素类型(称为范围的子类型)的值范围的数据类型。例如,时间戳范围可用于表示保留会议室的时间范围。在这种情况下,数据类型为tsrange(“时间戳范围”的缩写),时间戳是子类型。子类型必须具有总体的顺序,以便很好地定义元素值是在值的范围内、之前还是之后。范围类型可以表达单一范围值中的多个元素值,并且可以很清晰地表达诸如范围 - [复合类型](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0371.md): 复合类型表示行或记录的结构,它本质上就是字段名及其数据类型的列表。DWS允许支持将表的列声明为复合类型。复合类型本质上和表的行类型相同,但是如果只想定义一种类型,使用CREATE TYPE可避免创建一个实际的表。单独的复合类型也是很有用的,例如可以作为函数的参数或者返回类型。DWS支持用户使用CREATE TYPE定义复合类型:定义复合类 - [漏斗函数和留存函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0372.md): 漏斗和留存相关函数仅8.3.0及以上集群版本支持。漏斗函数与留存函数都是常见的用户行为分析工具,广泛应用于产品分析和数据分析领域,尤其是在产品经理、数据科学家和市场营销人员的工作中。这些函数的目标是帮助分析用户的行为路径、理解用户的流失和转化问题,以及评估产品的长期吸引力和用户忠诚度。漏斗分析:一种用于分析用户在执行某一目标过程中所经历的 - [扫描残留文件函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0373.md): 扫描残留文件函数仅8.3.0及以上集群版本支持,本章节所有函数仅限sysadmin角色调用。描述:用于扫描当前节点所连接数据库的所有残留文件记录。该函数为库级函数,与当前所在的数据库相关,可以在任意实例上运行。连接到CN执行时,扫描当前CN节点所在数据库的本地残留文件和OBS全部残留文件。连接到DN执行时,扫描当前DN节点所在数据库的本地 - [EXTERNAL SCHEMA系统函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0374.md): EXTERNAL SCHEMA相关系统函数仅8.3.0及以上集群版本支持。描述:获取external schema的全量表名信息,仅支持lakeformation。入参: schema_name为external schema名称。返回值类型:setof record示例:描述:获取external schema表的属性信息。入参: - [内存管理函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0379.md): 内存管理函数仅9.1.0及以上集群版本支持。描述:查询指定共享内存下内存上下文申请的所有chunk信息。参数contextname,表示内存上下文名称。使用该函数需先使用pg_shared_chunk_dump(contextname char(64))函数将相关信息打印成文件。返回值类型:record示例:描述:查询指定线程创建的某个内 - [数据共享函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0383.md): 描述:存算分离架构下,逻辑集群(Virtual Warehouse,以下简称VW)之间建立KV订阅关系,建立了订阅关系之后,消费者VW的KVcache会定期的从生产者的obs cudesc快照目录增量同步sst文件到本地,后续就可以支持在消费者VW中跨VW查询生产者VW中的表。 创建的订阅关系可以在pgxc_group_subscript - [CREATE OUTLINE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0400.md): 为指定的sql_hash创建一个新的outline。如果outline_text中的outline存在语法错误,创建报错syntax error。执行成功后,会在SQL_OUTLINE系统表中插入一行。该语法仅数据库管理员用户,或授予了gs_role_sql_management角色权限的用户可执行。outline_name指定新建out - [DROP OUTLINE](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0401.md): 删除一个outline。不能删除被绑定的outline。该语法仅数据库管理员用户,或授予了gs_role_sql_management角色权限的用户可执行。删除一个未绑定的outline。删除一个绑定的outline,报错。 - [缓存信息函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0402.md): 9.1.1.100集群版本开始DWS支持缓存信息函数,缓存信息函数提供共享缓冲区(shared buffer)使用情况的查询接口,帮助用户了解缓存的使用情况,优化缓存策略,从而提高系统的性能和稳定性。其中,对于查询单表缓存信息的函数,根据不同的表类型,需要传入不同的参数值,具体请参考表2。使用示例可参考pg_buffercache_rel - [缓存管理函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0403.md): 9.1.1.100集群版本开始DWS支持缓存管理函数,缓存管理函数将缓存从共享缓冲区(shared buffer)中释放,可有效加速查询,优化数据库性能。只有系统管理员可以执行缓存管理函数。缓存管理函数提供了三种粒度的接口用于释放缓存:释放指定缓冲页,对应函数pg_buffercache_evict(bufferid integer)。释 - [异步IO限流](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0405.md): 异步IO限流功能仅9.1.1.200及以上集群版本支持。描述:存算分离架构下通过添加限流配置来限制OBS请求,达到降低OBS指标的目的。函数输入参数如下:返回值类型:record函数返回字段如下:示例:添加限流配置来限制OBS请求。XXXXXXXXXXXXX表示访问OBS服务的access_key,访问的OBS桶名为test, 被限制的指 - [字符串处理函数和操作符总体介绍](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0410.md): DWS提供的字符处理函数和操作符主要用于字符串处理,例如获取字符串长度、数据截取、拼接、转化、比较等操作。在了解字符串处理函数前,您可以先简单了解位、字节、字符的相关概念:位(bit):计算机中最小的信息单位,表示二进制中的0或1,只有两种状态(对应电路的通 / 断、磁介质的正 / 反向磁化)。字节(byte):1字节=8位,是计算机存储 - [获取字符串长度](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0411.md): DWS支持以下函数计算字符串的长度,包括获取位数、字节数和字符数。关于位数、字节数和字符数的区别可参见字符串处理函数和操作符总体介绍。描述:字符串的位数。返回结果为字节数乘以8,得到总位数。字符串的位数取决于数据库编码方式,例如GBK字符编码下,一个中文为2个字节,UTF8和SQL_ASCII字符编码下,一个中文字为3个字节。返回值类型: - [截取字符串](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0412.md): 在数据仓库多维分析场景中,字符串截取是支撑业务分析的关键技术能力。典型场景包括:提取核心信息:对复合订单号进行智能分割,例如将"EC2023-BJ-0129A"拆解出核心序列号"0129A",在18位身份证编码中使用substring()函数同时捕获行政区划代码、出生年月信息等。脱敏数据:用户隐私数据处理,例如通过right()函数精准提 - [拼接字符串](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0413.md): 描述:字符串拼接函数。返回值类型:raw示例:描述:按照设置的次数将字符串重复输出。如果指定的重复次数为零或负数,函数返回空字符串。返回值类型:text示例:描述:连接字符串。返回值类型:text示例:描述:连接字符串和非字符串。返回值类型:text示例:描述:将字符串str1和str2连接并返回。ORA和TD兼容模式下,返回结果为所有非 - [替换和填充字符串](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0414.md): 描述:通过填充字符fill(缺省时为空白),把string填充为length长度。如果string已经比length长则将其尾部截断。返回值类型:text示例:描述:用指定的字符串替换原字符串中从指定位置开始的字符串部分,它可以灵活地处理字符串的替换操作。参数说明:FROM int,表示从第一个string的第几个字符开始替换。for i - [删除指定字符](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0415.md): 描述:删除字符串首部、尾部或者两端的特定字符。参数说明:leading,仅删除字符串开头的空格或指定字符。trailing,仅删除字符串结尾的空格或指定字符。both,删除字符串开头和结尾的空格或指定字符(默认行为)。characters:可选参数,指定要去除的特定字符。如果不指定,默认去除空格。string:要处理的原字符串。返回值类型 - [分割字符串](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0416.md): 描述:用POSIX正则表达式作为分隔符,分隔string。和regexp_split_to_table相同,不过regexp_split_to_array会把它的结果以一个text数组的形式返回。返回值类型:text[]示例:描述:用POSIX正则表达式作为分隔符,分隔string。如果没有与pattern的匹配,该函数返回string。 - [转换字符串](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0417.md): 描述:把字符串转化为大写。返回值类型:varchar示例:描述:把字符串转化为大写。返回值类型:varchar示例:描述:把字符串转化为小写。返回值类型:varchar示例:描述:把字符串转化为小写。返回值类型:varchar示例:描述:将字符串中的每个单词的首字母转化为大写,其他字母转化为小写。返回值类型:text示例:描述:返回适用于 - [比较字符串](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0418.md): 描述:比较两个字符串大小,若所有的字符串均相同,则返回0,若根据当前分类次序,第一个字符串小于第二个,则返回-1,其它情况返回1。若参数含有NULL值,返回NULL。返回值类型:text示例: - [获取某一个字符或子字符串的位置](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0419.md): 描述:获取子字符串在目标字符串中的位置。如果没有获取到匹配项,则返回0。第一个text:必选,目标字符串。第二个text,必选,待匹配的子字符串。第一个int,表示开始匹配起始位置,若未配置该参数,默认从头开始匹配。第二个int,表示匹配的次数,若未配置该参数,默认是第一次出现的位置。返回值类型:integer示例:获取子字符串“bcd” - [判断某个字符串是否符合某种匹配模式(字符串相关的模式匹配函数)](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0420.md): 模式匹配函数(LIKE)是一种字符串比较函数,用于判断目标字符串是否符合指定的模式规则,返回布尔值(true/false,示例中用 t/f 表示)。它与操作符=的区别如下:=:严格匹配整个字符串(字符数、内容完全一致)。LIKE:模糊匹配(通过通配符忽略部分字符差异,只关注「关键模式」)。适用场景:这类函数主要用于模糊查询,例如:查找姓名 - [获取当前时间和日期函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0421.md): 描述:实时时钟的当前时间戳。返回值类型:timestamp with time zone示例:描述:返回当前日期。返回值类型:date示例:描述:返回当前日期。此函数为MySQL兼容性函数。该函数仅8.2.0及以上集群版本支持。返回值类型:date示例:描述:返回当前时间。返回值类型:time with time zone示例:描述:返回 - [时间和日期格式化函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0422.md): date_format函数将日期参数按照fmt指定的格式转换为字符串。示例:表1显示了可以用于将日期参数格式化输出的格式类型,这些格式类型适用于函数date_format、time_format、str_to_date、str_to_time和from_unixtime。date_format支持的输出格式中,%U、%u、%V、%v、%X - [其他时间和日期处理函数](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0423.md): 描述:调整间隔,使得30天时间周期表示为月。返回值类型:interval示例:描述:调整时间间隔,使得24小时时间周期表示为日。返回值类型:interval示例:描述:结合justify_days和justify_hours,调整时间间隔。返回值类型:interval示例:描述:将数字加时间间隔单位转换为INTERVAL DAY TO S - [ALTER CLUSTER](https://support.huaweicloud.com/sqlreference-911-dws/dws_06_0515.md): 细粒度透明加密密钥轮转,创建细粒度透明加密集群时自动调用ALTER CLUSTER ENCRYPTION KEY ROTATION创建密钥。DEK和CEK保存在系统表PG_TDE中,每次轮转时会对系统表每一行进行UPDATE。只有拥有数据库所有者权限的用户才能执行修改密钥。ALTER CLUSTER ENCRYPTION KEY ROTA ## 开发指南(9.1.0.x) - [使用前必读](https://support.huaweicloud.com/devg-dws/dws_04_0001.md): 数据库开发指南重点面向数据库的设计者、应用程序开发人员或DBA,提供设计、构建、查询和维护数据仓库所需的信息。作为数据库管理员和应用程序开发人员,至少需要了解以下知识:操作系统知识。这是一切的基础。SQL语法。这是操作数据库的必备能力。使用本指南前,需要完成以下任务。创建DWS集群。使用SQL编辑器或SQL客户端连接DWS数据库。创建DW - [创建和管理DWS数据库](https://support.huaweicloud.com/devg-dws/dws_04_0025.md): 数据库(Database)是表、索引、视图、存储过程、操作符等对象的集合。DWS支持创建多个数据库,但是客户端程序一次只能连接并访问一个数据库,无法跨数据库进行查询。DWS提供了两个模板数据库template0、template1,以及一个默认的数据库gaussdb。默认情况下,每个新创建的数据库都是基于一个模板数据库。DWS数据库默认使 - [选择DWS表存储模型](https://support.huaweicloud.com/devg-dws/dws_04_0026.md): DWS支持行列混合存储。当创建一个表时,可以选择表的存储格式为行存储或列存储。行存储是指将表按行存储到硬盘分区上,列存储是指将表按列存储到硬盘分区上。默认情况下,创建的表为行存储。行存储和列存储的差异请参见图1。上图中,左上为行存表,右上为行存表在硬盘上的存储方式。左下为列存表,右下为列存表在硬盘上的存储方式。DWS表的行/列存储通过表定 - [创建和管理DWS表](https://support.huaweicloud.com/devg-dws/dws_04_0028.md): CREATE TABLE命令创建一个表,创建表时可以定义以下内容:表的列及数据类型。表约束的定义,即任何用于限制列或者表中数据的表约束或者列约束。参见表约束的定义。表分布的定义,即表的分布策略,它决定DWS数据库如何在片(Segment)之间划分数据。 参见表分布的定义。表存储格式。参见选择DWS表存储模型。分区表定义。参见创建和管理DW - [DWS外表功能开发规范](https://support.huaweicloud.com/devg-dws/dws_04_0031.md): 违反规范的影响:GDS如果部署在DWS集群内,会与DWS集群CN/DN节点发生资源争抢,导致双方性能同时劣化。方案建议:GDS服务单独使用服务器部署在DWS集群外。GDS所在服务器的磁盘能力、GDS服务器与DWS集群间网络带宽都要按需规划。原理说明:在A集群通过协同分析访问B集群数据时,A集群所有DN会与B集群CN建立连接和活跃会话。违反 - [查看DWS系统表](https://support.huaweicloud.com/devg-dws/dws_04_0034.md): 除了创建的表以外,数据库还包含很多系统表。这些系统表包含集群安装信息以及DWS上运行的各种查询和进程的信息。可以通过查询系统表来收集有关数据库的信息。例如,在PG_TABLES系统表中查看public schema中包含的所有表。结果类似如下这样:通过PG_USER可以查看数据库中所有用户的列表,还可以查看用户ID(USESYSID)和用 - [创建和管理DWS Schema](https://support.huaweicloud.com/devg-dws/dws_04_0036.md): Schema又称作模式,从逻辑上组织一个数据库中的对象和数据。通过管理Schema,允许多个用户使用同一数据库而不相互干扰,同时便于将第三方应用添加到相应的Schema下而不引起冲突。相同的数据库对象名称可以应用在同一数据库的不同Schema中,而没有冲突。例如,a_schema和b_schema都可以包含名为mytable的表。具有所需 - [创建和管理DWS分区表](https://support.huaweicloud.com/devg-dws/dws_04_0037.md): 分区表就是把逻辑上的一张表根据分区策略分成几张物理块库进行存储,这张逻辑上的表称之为分区表,物理块称之为分区。分区表是一张逻辑表,不存储数据,数据实际是存储在分区上的。当进行条件查询时,系统只会扫描满足条件的分区,避免全表扫描,从而提升查询性能。关于分区表维护的详细语法介绍请参见ALTER TABLE PARTITION。分区表的优势: - [创建和管理DWS索引](https://support.huaweicloud.com/devg-dws/dws_04_0038.md): 索引可以提高数据的访问速度,但同时也增加了插入、更新和删除操作的处理时间。所以是否要为表增加索引,索引建立在哪些字段上,是创建索引前必须要考虑的问题。需要分析应用程序的业务处理、数据使用、经常被用作查询的条件或者被要求排序的字段来确定是否建立索引。B-Tree:B-tree索引使用一种类似于B+树的结构来存储数据的键值,通过这种结构能够快 - [创建和管理DWS视图](https://support.huaweicloud.com/devg-dws/dws_04_0039.md): 视图允许用户保存常用的或者复杂的查询。视图在磁盘上并没有被物理存储,当用户访问视图时查询会作为一个子查询运行。数据库中仅存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。若基本表中的数据发生变化,从视图中查询出的数据也随之改变。从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中用户感兴趣的数据及变化。视图每次被 - [创建和使用DWS序列](https://support.huaweicloud.com/devg-dws/dws_04_0040.md): 序列Sequence是用来产生唯一整数的数据库对象。序列的值是按照一定规则自增的整数。因为自增所以不重复,因此说Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。通过序列使某字段成为唯一标识符的方法有两种:一种是声明字段的类型为序列整型,由数据库在后台自动创建一个对应的Sequence。另一种是使用CREATE S - [创建和管理DWS定时任务](https://support.huaweicloud.com/devg-dws/dws_04_0041.md): DWS支持用户创建定时任务,当设置的任务时间点到达后可以自动触发任务的执行,从而可以减少用户运维的工作量。数据库兼容Oracle定时任务功能主要通过DBMS.JOB高级包提供的接口,可以实现定时任务的创建、任务到期自动执行、任务删除、修改任务属性(包括:任务id、任务的关闭开启、任务的触发时间、触发时间间隔、任务内容等)。定时任务的执行语 - [Oracle、Teradata和MySQL语法兼容性差异](https://support.huaweicloud.com/devg-dws/dws_04_0042.md): DWS支持Oracle(以下简称ORA)、Teradata(以下简称TD)和MySQL三种兼容模式,分别兼容Oracle、Teradata和MySQL语法,不同兼容模式下的语法行为有一些差异。数据库兼容模式可以在创建数据库时指定(由DBCOMPATIBILITY参数控制),语法示例如下,具体参见CREATE DATABASE章节。查询结果 - [DWS数据库权限管理](https://support.huaweicloud.com/devg-dws/dws_04_0054.md): 权限表示用户访问某个数据库对象(包括模式、表、函数、序列等)的操作(包括增、删、改、查、创建等)是否被允许。DWS中的权限管理分为三种场景:系统权限系统权限又称为用户属性,包括SYSADMIN、CREATEDB、CREATEROLE、AUDITADMIN和LOGIN。系统权限一般通过CREATE/ALTER ROLE语法来指定。其中,SY - [DWS数据库用户类型](https://support.huaweicloud.com/devg-dws/dws_04_0055.md): 在非三权分立模式下,DWS支持管理员用户和普通用户两种类型的数据库账号。三权分立下,用户类型和权限请参考DWS三权分立。管理员用户可以管理所有普通用户和数据库。普通用户可连接和访问数据库,并在授权后进行特定的数据库操作以及执行SQL语句。在用户登录DWS数据库时会对其进行身份验证。用户可以拥有数据库和数据库对象(例如表),并且可以向用户和 - [DWS三权分立](https://support.huaweicloud.com/devg-dws/dws_04_0056.md): 默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。在实际业务管理中,为了避免系统管理员拥有过度集中的权限带来高风险,可以设置三权分立,将系统管理员的权限分立给安全管理员和审计管理员。三权分立后,系统管理员将不再具有CREATEROLE属性(安全管理员)和AUDITADMIN属性(审计管理员)能力。即不再拥有创建角色和用户的 - [DWS数据库用户管理](https://support.huaweicloud.com/devg-dws/dws_04_0057.md): 使用CREATE USER和ALTER USER可以创建和管理数据库用户。非三权分立下,DWS用户账户只能由系统管理员或拥有CREATEROLE属性的安全管理员创建和删除。三权分立时,用户账户只能由安全管理员创建。CREATE USER语句用于创建新的DWS用户。创建新用户后,可以使用该用户连接数据库。创建普通用户u1,并设置用户拥有CR - [DWS行级访问控制](https://support.huaweicloud.com/devg-dws/dws_04_0061.md): 行级访问控制特性将数据库访问控制精确到数据表行级别,使数据库达到行级访问控制的能力。不同用户执行相同的SQL查询操作,读取到的结果是不同的。用户可以在数据表创建行访问控制(Row Level Security)策略,该策略是指针对特定数据库用户、特定SQL操作生效的表达式。当数据库用户对数据表访问时,若SQL满足数据表特定的Row Lev - [DWS数据脱敏](https://support.huaweicloud.com/devg-dws/dws_04_0062.md): DWS提供列级别的数据脱敏(Dynamic Data Masking)功能。针对某些敏感信息(如身份证号、手机号、银行卡号等),通过应用脱敏函数进行原始数据的变形改写,实现敏感隐私数据的可靠保护,从而增强产品在数据安全和隐私保护方面的能力。创建表的数据脱敏策略DWS通过使用CREATE REDACTION POLICY语法在表上创建数据脱 - [自定义DWS密码策略](https://support.huaweicloud.com/devg-dws/dws_04_0063.md): 创建用户或修改用户时需要指定密码,DWS有默认的密码复杂度要求,也支持用户自定义数据库账户密码策略。DWS默认进行密码复杂度校验,默认密码策略要求如下:长度为8~32个字符。至少包含大写字母、小写字母、数字或特殊字符中三种的组合。支持的特殊字符参见表1。不能是用户名和用户名反序,此条要求为非大小写敏感。不能与当前密码或当前密码的反序相同。 - [DWS总体开发设计规范](https://support.huaweicloud.com/devg-dws/dws_04_0075.md): 本规范定义了在进行基于DWS数据库自主开发过程中应遵守的设计、开发准则,以提升开发效率,保证业务的连续性、稳定性。该规范适用于所有基于DWS数据库自主开发的场景,包含应用层面的设计与开发、数据库服务层面的设计与开发。规则:数据库设计与开发时必须遵守的约定。建议:数据库设计与开发时建议考虑的约定。说明:对规则/建议进行的详细说明和解释。下表 - [DWS数据库对象命名规则](https://support.huaweicloud.com/devg-dws/dws_04_0076.md): 数据库对象命名需要满足约束:长度不超过63个字符,以字母或下划线开头,中间字符可以是字母、数字、下划线、$。数据库字符集为GBK、UTF8、SQL_ASCII时对象命名支持中文汉字,其中UTF8、SQL_ASCII字符集下,一个中文汉字占3个字符,最多支持21个中文汉字;GBK字符集下,一个中文汉字占2个字符,最多支持31个中文汉字。La - [DWS Database和Schema设计规则](https://support.huaweicloud.com/devg-dws/dws_04_0078.md): DWS中可以使用Database和Schema实现业务的隔离,区别在于Database的隔离更加彻底,各个Database之间共享资源极少,可实现连接隔离、权限隔离等,Database之间无法直接互访。Schema隔离的方式共用资源较多,可以通过GRANT与REVOKE语法便捷地控制不同用户对各Schema及其下属对象的权限。从便捷性和资 - [DWS表设计规则](https://support.huaweicloud.com/devg-dws/dws_04_0079.md): DWS是分布式架构。数据分布在各个DN上。总体上讲,良好的表设计需要遵循以下原则:【关注】将表数据均匀分布在各个DN上。数据均匀分布,可以防止数据在部分DN上集中分布,从而导致因存储倾斜造成集群有效容量下降。通过选择合适的分布列,可以避免数据倾斜。【关注】将表的扫描压力均匀分散在各个DN上。避免扫描压力集中在部分DN上,而导致性能瓶颈。例 - [DWS字段设计规则](https://support.huaweicloud.com/devg-dws/dws_04_0080.md): 在字段设计时,基于查询效率的考虑,一般遵循以下原则:【建议】尽量使用高效数据类型。选择数值类型时,在满足业务精度的情况下,选择数据类型的优先级从高到低依次为整数、浮点数、NUMERIC。选择数值类型时,在满足业务精度的情况下,选择数据类型的优先级从高到低依次为整数、浮点数、NUMERIC。【建议】当多个表存在逻辑关系时,表示同一含义的字段 - [DWS约束设计规则](https://support.huaweicloud.com/devg-dws/dws_04_0081.md): 【建议】如果能够从业务层面补全字段值,则不建议使用DEFAULT约束,避免数据加载时产生不符合预期的结果。【建议】给明确不存在NULL值的字段加上NOT NULL约束,优化器会在特定场景下对其进行自动优化。【建议】给可以显式命名的约束显式命名。除了NOT NULL和DEFAULT约束外,其他约束都可以显式命名。Partial Cluste - [DWS视图和关联表设计规则](https://support.huaweicloud.com/devg-dws/dws_04_0082.md): 【建议】除非视图之间存在强依赖关系,否则不建议视图嵌套。【建议】视图定义中尽量避免排序操作。【建议】表之间的关联字段应该尽量少。【建议】关联字段的数据类型应该保持一致。【建议】关联字段在命名上,尽可能体现出明显的关联关系。例如,采用同样名称来命名。 - [DWS JDBC配置规则](https://support.huaweicloud.com/devg-dws/dws_04_0083.md): 目前,DWS相关的第三方工具可以通过JDBC进行连接的,此部分将介绍工具配置时的注意事项。【关注】第三方工具通过JDBC连接DWS时,JDBC向DWS发起连接请求,会默认添加以下配置参数,详见JDBC代码ConnectionFactoryImpl类的实现。params = { { "user", user }, { "database", - [DWS SQL编写规则](https://support.huaweicloud.com/devg-dws/dws_04_0084.md): 【建议】在DWS中,建议DDL(建表、comments等)操作统一执行,在批处理作业中尽量避免DDL操作。避免大量并发事务对性能的影响。【建议】在非日志表(unlogged table)使用完后,立即执行数据清理(TRUNCATE)操作。因为在异常场景下,DWS不保证非日志表(unlogged table)数据的安全性。【建议】临时表和非 - [开发前准备](https://support.huaweicloud.com/devg-dws/dws_04_0086.md): 如果用户在APP的开发中,使用了连接池机制,那么需要遵循如下规范:如果在连接中设置了GUC参数,那么在将连接归还连接池之前,必须使用“SET SESSION AUTHORIZATION DEFAULT;RESET ALL;”将连接的状态清空。如果使用了临时表,那么在将连接归还连接池之前,必须将临时表删除。否则,连接池里面的连接就是有状态的 - [JDBC开发流程](https://support.huaweicloud.com/devg-dws/dws_04_0089.md): JDBC(Java Database Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问接口,应用程序可基于它操作数据。 DWS库提供了对JDBC 4.0特性的支持,需要使用JDK1.6及以上版本编译程序代码,不支持JDBC桥接ODBC方式。JDBC开发应用程序的具体 - [JDBC包与驱动类](https://support.huaweicloud.com/devg-dws/dws_04_0090.md): 从管理控制台下载包名为dws_9.1.x_jdbc_driver.zip的软件包。请参见下载JDBC或ODBC驱动。解压后有两个JDBC的驱动jar包:gsjdbc4.jar:与PostgreSQL保持兼容的驱动包,其中类名、类结构与PostgreSQL驱动完全一致,曾经运行于PostgreSQL的应用程序可以直接移植到当前系统使用。gs - [加载驱动](https://support.huaweicloud.com/devg-dws/dws_04_0092.md): 在创建数据库连接之前,需要先加载数据库驱动程序。加载驱动有两种方法:在代码中创建连接之前任意位置隐含装载:Class.forName("org.postgresql.Driver");在JVM启动时参数传递:java -Djdbc.drivers=org.postgresql.Driver jdbctest上述jdbctest为测试用例程 - [连接数据库](https://support.huaweicloud.com/devg-dws/dws_04_0093.md): 在创建数据库连接之后,才能使用它来执行SQL语句操作数据。如果您使用的是开源的JDBC驱动程序,应确保数据库参数password_encryption_type取值设置为1,如果参数值不为1,可能会出现连接失败,典型的报错信息比如:“none of the server's SASL authentication mechanisms a - [执行SQL语句](https://support.huaweicloud.com/devg-dws/dws_04_0095.md): 应用程序通过执行SQL语句来操作数据库的数据(不用传递参数的语句),需要按以下步骤执行:数据库中收到的一次执行请求(不在事务块中),如果含有多条语句,将会被打包成一个事务,事务块中不支持vacuum操作。如果其中有一个语句失败,那么整个请求都将会被回滚。预编译语句是只编译和优化一次,然后可以通过设置不同的参数值多次使用。由于已经预先编译好 - [处理结果集](https://support.huaweicloud.com/devg-dws/dws_04_0096.md): 不同类型的结果集有各自的应用场景,应用程序需要根据实际情况选择相应的结果集类型。在执行SQL语句过程中,都需要先创建相应的语句对象,而部分创建语句对象的方法提供了设置结果集类型的功能。具体的参数设置如表1所示。涉及的Connection的方法如下:ResultSet对象具有指向其当前数据行的光标。最初,光标被置于第一行之前。next方法将 - [常用JDBC开发示例](https://support.huaweicloud.com/devg-dws/dws_04_0098.md): 在完成以下示例前,需要先创建存储过程。此示例将演示如何基于DWS提供的JDBC接口开发应用程序。此示例主要使用setFetchSize来调整客户端内存使用,它的原理是通过数据库游标来分批获取服务器端数据,但它会加大网络交互,可能会损失部分性能。由于游标事务内有效,故需要先关闭自动提交。当主DN故障且40s未恢复时,DWS会自动将对应的备D - [JDBC接口参考](https://support.huaweicloud.com/devg-dws/dws_04_0102.md): JDBC接口是一套提供给用户的API方法,本节将对部分常用接口做具体描述,若涉及其他接口可参考JDK1.6(软件包)/JDBC4.0中相关内容。java.sql.Connection是数据库连接接口。接口内部默认使用自动提交模式,若通过setAutoCommit(false)关闭自动提交,将会导致后面执行的语句都受到显式事务包裹,数据库中 - [DWS连接管理规范](https://support.huaweicloud.com/devg-dws/dws_04_0103.md): 违反规则的影响:负载不均衡导致性能问题,严重情况会导致业务中断。CN故障场景,业务无法自恢复或恢复时间长。方案建议:配置ELB负载均衡,应用连接负载均衡IP。配置JDBC负载均衡方式的操作参见负载均衡方式配置JDBC。违反规则的影响:空闲连接过多,触发连接上限,导致新建连接报错。空闲连接过多,内部占用过多资源,导致资源过载。方案建议:应用 - [DWS存储过程开发规范](https://support.huaweicloud.com/devg-dws/dws_04_0106.md): 违反规范的影响:复杂和嵌套的存储过程维护成本高,故障定位难度大,恢复耗时长。方案建议:不使用存储过程或只使用一层存储过程,不嵌套。开发存储过程设计对应的日志表,将关键步骤前后的信息记录到日志表中,操作步骤如下。保存并查看日志操作步骤。违反规范的影响:存储过程是一个大事务,如果有非CREATE类DDL操作(持锁级别高),整个存储过程执行时间 - [DATABASE对象设计规范](https://support.huaweicloud.com/devg-dws/dws_04_0108.md): 违反规则的影响:内置的数据库编码、兼容模式不符合业务要求时,需要重新迁移数据。所有业务均使用内置数据库,影响变更耗时。方案建议:根据实际业务需要,合理创建专用DATABASE并划分给业务使用。违反规则的影响:选错数据库编码可能导致数据乱码,且不支持直接修改数据库编码,需重新建库重新导入数据。方案建议:通常建议建库时指定ENCODING为U - [USER对象设计规范](https://support.huaweicloud.com/devg-dws/dws_04_0109.md): 违反规则的影响:特殊权限用户如管理员用户,均具有特殊用途,使用此类用户运行业务有安全和管控风险。方案建议:使用普通用户运行业务,特殊权限类用户仅用于管理类操作。违反规则的影响:同一个数据库用户运行所有业务不利于业务管控,异常场景无法针对特定用户做紧急隔离。方案建议:根据用途规划管理员、业务运行账号、运维账号等。根据业务模块进行用户细分,以 - [SCHEMA对象设计规范](https://support.huaweicloud.com/devg-dws/dws_04_0110.md): 私有SCHEMA是指创建USER时自带的同名SCHEMA,该SCHEMA为该USER私有。违反规则的影响:在其他用户私有SCHEMA下创建对象,对象权限不受创建者控制,OWNER也非创建者。方案建议:在自身私有SCHEMA或自身创建SCHEMA下创建对象,不在其他用户私有SCHEMA下创建对象。 - [TABLESPACE对象设计规范](https://support.huaweicloud.com/devg-dws/dws_04_0111.md): 违反规则的影响:分布式场景建表使用自定义表空间,导致表数据无法按照各DN分布式存储,出现存储倾斜。分布式场景建表使用自定义表空间,导致表数据无法按照各DN分布式存储,出现存储倾斜。方案建议:创建表对象使用内置默认表空间。 - [TABLE对象设计规范(重点)](https://support.huaweicloud.com/devg-dws/dws_04_0112.md): 违反规范的影响:分布式和分布列选择错误,导致表数据存储倾斜,访问性能下降,严重情况会触发存储和计算资源过载。分布式和分布列选择错误,导致表数据存储倾斜,访问性能下降,严重情况会触发存储和计算资源过载。方案建议:创建表时通过DISTRIBUTE BY显式指定分布方式和分布列,分布列选择原则如下表所示。违反规范的影响:行存表使用不当导致查询场 - [INDEX对象设计规范(重点)](https://support.huaweicloud.com/devg-dws/dws_04_0113.md): 违反规范的影响:冗余索引浪费空间,索引多影响入库效率。冗余索引浪费空间,索引多影响入库效率。组合索引中列顺序错误,影响查询效率。组合索引中列顺序错误,影响查询效率。最佳实践:索引的使用需兼顾以下条件:索引列必须是常用于过滤条件或JOIN关联条件的列。索引列必须是DISTINCT值多的列。创建多列组合索引时,DISTINCT值多的列往前放。 - [VIEW对象设计规范](https://support.huaweicloud.com/devg-dws/dws_04_0114.md): 违反规范的影响:视图嵌套过深导致执行计划不稳定、耗时不稳定。视图依赖的对象重建风险高,锁冲突发生概率增大。方案建议:创建视图直接基于物理表查询,不建议嵌套视图。 - [DDL操作规范](https://support.huaweicloud.com/devg-dws/dws_04_0115.md): 违反规范的影响:DDL操作普遍持锁级别高,如ALTER、DROP、TRUNCATE、REINDEX、VACUUM FULL等,执行时会造成业务等锁阻塞。高峰期执行持锁级别高的DDL操作,造成业务等锁阻塞。长事务中执行持锁级别高的DDL操作,长时间持锁或等锁,均造成业务等锁阻塞。方案建议:根据业务周期,选择低峰期或运维时间窗执行DDL操作, - [INSERT操作规范](https://support.huaweicloud.com/devg-dws/dws_04_0116.md): 违反规范的影响:多VALUES解析耗时、耗资源,入库效率低。方案建议:前端使用COPY类接口(如JDBC的CopyManger等)代替INSERT VALUES。违反规范的影响:针对普通列存表实时小批量入库会导致小CU膨胀严重,影响存储空间和查询性能。方案建议:实时INSERT场景评估单次入库数据量和数据总量,总量小的场景可以改为行存表。 - [ODBC包及依赖的库和头文件](https://support.huaweicloud.com/devg-dws/dws_04_0118.md): 从管理控制台下载ODBC的软件包。请参见下载JDBC或ODBC驱动。从软件包中获取,包名为dws_8.x.x_odbc_driver_for_xxx_xxx.zip。Linux环境下,开发应用程序要用到unixODBC提供的头文件(sql.h、sqlext.h等)和库libodbc.so。这些头文件和库可从unixODBC-2.3.0的安 - [Linux下配置数据源](https://support.huaweicloud.com/devg-dws/dws_04_0119.md): 将DWS提供的ODBC DRIVER(psqlodbcw.so)配置到数据源中便可使用。配置数据源需要配置“odbc.ini”和“odbcinst.ini”两个文件(在编译安装unixODBC过程中生成且默认放在etc目录下),并在服务器端进行配置。获取参考地址:https://sourceforge.net/projects/unixo - [Windows下配置数据源](https://support.huaweicloud.com/devg-dws/dws_04_0120.md): Windows操作系统自带ODBC数据源管理器,无需用户手动安装管理器便可直接进行配置。将GaussDB-9.1.0-Windows-Odbc.tar.gz解压后,根据需要,双击psqlodbc.msi(32位)或者psqlodbc_x64.msi(64 位)进行驱动安装。在配置数据源时,请使用对应的驱动管理器(假设操作系统安装盘符为C: - [ODBC开发示例](https://support.huaweicloud.com/devg-dws/dws_04_0123.md): 此示例演示如何通过ODBC方式获取DWS中的数据。请在数据源中打开UseBatchProtocol,同时指定数据库中参数support_batch_bind为on。CHECK_ERROR的作用是检查并打印错误信息。此示例将与用户交互式获取DSN、模拟的数据量,忽略的数据量,并将最终数据入库到test_odbc_batch_insert中。 - [ODBC接口参考](https://support.huaweicloud.com/devg-dws/dws_04_0124.md): ODBC接口是一套提供给用户的API函数,本节将对部分常用接口做具体描述,若涉及其他接口可参考msdn网址中ODBC Programmer's Reference项的相关内容。在ODBC 3.x版本中,ODBC 2.x的函数SQLAllocEnv已被SQLAllocHandle代替。有关详细信息请参阅SQLAllocHandle。在ODB - [UPDATE&DELETE操作规范](https://support.huaweicloud.com/devg-dws/dws_04_0125.md): 违反规范的影响:并发UPDATE/DELETE行存表可能导致行锁阻塞和分布式死锁风险,导致业务报错和性能下降。方案建议:按主键或分布列进行分组UPDATE/DELETE,组间并行,组内串行。违反规范的影响:针对列存表频繁执行UPDATE/DELETE造成CU膨胀,导致空间膨胀和访问性能下降。针对列存表并发执行UPDATE/DELETE,导 - [SELECT操作规范](https://support.huaweicloud.com/devg-dws/dws_04_0126.md): DWS为分布式架构,SQL语句必须下推才能充分利用分布式的计算资源,达到性能最优。违反规范的影响:不下推的SQL执行性能差,严重情况会导致CN资源瓶颈,影响整体业务。方案建议:不使用不下推的语法和不下推的函数,具体参考语句下推调优。违反规范的影响:多表关联时不指定关联条件就是求笛卡尔积,极易导致结果集膨胀,造成性能和资源过载风险。方案建议 - [案例:使排序下推](https://support.huaweicloud.com/devg-dws/dws_04_0130.md): 在做场景性能测试时,发现某场景大部分时间是CN端在做window agg,占到总执行时间95%以上,系统资源不能充分利用。研究发现该场景的特点是:将两列分别求sum作为一个子查询,外层对两列的和再求和后做trunc,然后排序。可以尝试将语句改写为子查询,使排序下推。表结构如下所示:查询语句如下所示:执行计划如下:QUERY PLAN - [案例:With-Recursive contains only values rte is not shippable](https://support.huaweicloud.com/devg-dws/dws_04_0131.md): 递归语句的某个分支中没有FROM子句(只有 VALUES 或者类似 SELECT 1 这样的语句)。原始语句改写语句修改点比对原始语句改写语句修改点比对原始语句改写语句修改点比对原始语句改写语句修改点比对 - [案例:With-Recursive contains system table is not shippable](https://support.huaweicloud.com/devg-dws/dws_04_0132.md): 递归语句的某个分支中没有完整的From子句,仅使用系统表或者系统视图(DUAL也被视为系统视图)代替。原始语句改写语句修改点对比 - [案例:SubPlan exec on CN can not be shipped](https://support.huaweicloud.com/devg-dws/dws_04_0133.md): 某个子查询语句只能在CN上执行,通常是这个子查询有不下推因素,比如有调用了系统表、系统视图,或者存在不下推函数等。原始语句改写语句修改点对比 - [案例:Type of Record in TargetList can not be shipped](https://support.huaweicloud.com/devg-dws/dws_04_0134.md): 输出列中存在record类型,这种类型的不下推一般是不会体现在最外层的输出列上,一般这类报错有两个场景:SQL书写逻辑错误,导致输出列上出现了(...)形式的输出列。SQL业务逻辑正确, 这种场景需要了解业务含义,把record字段强转为text类型,再使用record字段的地方做特殊适配。原始语句改写语句改写前后的语句不等价,不等价是因 - [案例:Type of Record in non-real table can not be shipped](https://support.huaweicloud.com/devg-dws/dws_04_0135.md): 8.2.1.x特定版本下UPDATE语句+WITH语句场景存在下推问题。通过GUC参数enable_stream_ctescan设置stream计划下不支持ctescan,在语句执行前进行设置。SET enable_stream_ctescan = off业务语句执行完再重置参数。SET enable_stream_ctescan = o - [案例:main plan exec on CN and SubPlan exec on DN can not be shipped](https://support.huaweicloud.com/devg-dws/dws_04_0136.md): 根因:复杂语句中的主查询为不涉及用户表的查询,但相关的子查询是涉及用户表的查询语句。原始语句改写后语句修改点对比 - [案例:With-Recursive under multi-nodegroup scenario is not shippable](https://support.huaweicloud.com/devg-dws/dws_04_0137.md): 查询语句中所涉及的表分属于多个不同的逻辑集群中,这种场景的处理方案一般是通过中间表的方式让所有表在一个逻辑集群,或者把WITH RECURSIVE语句隔离出来以避免影响这个语句的性能。适用场景:语句中包含WITH RECURSIVE语句,且WITH RECURSIVE只有少部分(1~2个)表分属于其它逻辑集群,这些表数据量不大或者经过过滤 - [案例:With-Recursive contains conflict distribution in none-recursive(xxx) recursive(xxx)](https://support.huaweicloud.com/devg-dws/dws_04_0138.md): 非递归部分语句(UNION ALL前面部分)的执行计划为replicate计划,递归部分语句(UNION ALL后面部分)的执行计划为Hash计划,计划存在冲突。处理方案:把非递归部分语句转储为临时表,促使临时表的分布形式和计划的分布式不一致即可。原始语句SQL自诊断信息改写语句修改点对比 - [案例:Table in TargetList can not be shipped](https://support.huaweicloud.com/devg-dws/dws_04_0139.md): 表名或者表的别名出现在targetlist(输出列SELECT 和 FROM之间)中。处理方案:改写SQL,消除对表名或者表的别名的直接引用。原始语句改写语句:强转为text类型,或者优化SQL语句,输出列上去除表名或者表的别名。 - [案例:"Row () Expression" can not be shipped](https://support.huaweicloud.com/devg-dws/dws_04_0140.md): 语句中有row表达式,一般表现为在targetlist(输出列SELECT 和 FROM之间)上存在括号表达式"(......)",处理方案:改写SQL,消除row表达式。原始语句规避方案:不直接输出row表达式,因此改写row表达式为字符串拼接。修改点对比 - [案例:Merge Into can't be shipped in the scene temporarily](https://support.huaweicloud.com/devg-dws/dws_04_0141.md): MERGE INTO语句的USING子句部分还有非列表达式。处理方案:改写SQL,去除非列表达式。原始语句规避方案:这种情况一般属于SQL语句书写错误,去掉条件“AND 1 = 2”即可。修改点对比 - [案例:Type of Record in dual that is not a real table can not be shipped](https://support.huaweicloud.com/devg-dws/dws_04_0142.md): 优化器识别到的record列,且record列对应的主表不是一个实体表。最常见的情况为MERGE INTO语句的USING部分使用了FROM dual子句导致问题出现。处理方案:改写SQL,消除语句中的dual子句。原始语句改写语句修改点对比 - [PostGIS概述](https://support.huaweicloud.com/devg-dws/dws_04_0302.md): PostGIS Extension依赖的第三方软件需要用户进行单独安装,用户如需使用PostGIS功能,请提交工单或联系技术支持人员提交申请。如果用户在使用中出现“ERROR:EXTENSION is not yet supported.”这种报错,则表示没有安装PostGIS软件包,请联系技术支持进行获取。DWS提供PostGIS Ex - [PostGIS使用](https://support.huaweicloud.com/devg-dws/dws_04_0304.md): PostGIS Extension依赖的第三方软件需要用户进行单独安装,用户如需使用PostGIS功能,请提交工单或联系技术支持人员提交申请。如果用户在使用中出现“ERROR:EXTENSION is not yet supported.”这种报错,则表示没有安装PostGIS软件包,请联系技术支持进行获取。创建PostGIS Exten - [PostGIS支持和限制](https://support.huaweicloud.com/devg-dws/dws_04_0305.md): DWS的PostGIS Extension支持如下数据类型:box2dbox3dgeometry_dumpgeometrygeographyrasterPostGIS-3.2.2暂不支持raster相关功能,如需使用相关功能,请使用PostGIS-2.4.2。创建Postgis和使用Postgis非同一用户时,请设置如下GUC参数:SET - [OPEN SOURCE SOFTWARE NOTICE (For PostGIS)](https://support.huaweicloud.com/devg-dws/dws_04_0306.md): This document contains open source software notice for the product. And this document is confidential information of copyright holder. Recipient shall protect it in due c - [用户资源监控](https://support.huaweicloud.com/devg-dws/dws_04_0394.md): 在多租户管理的框架下,用户可以通过系统视图PG_TOTAL_USER_RESOURCE_INFO、PGXC_TOTAL_USER_RESOURCE_INFO和函数GS_WLM_USER_RESOURCE_INFO实时查询所有用户资源(包括内存,CPU核数,存储空间、临时空间、算子落盘空间和IO)实时使用情况,也可以通过系统表GS_WLM_ - [内存资源监控](https://support.huaweicloud.com/devg-dws/dws_04_0395.md): DWS支持在监控面板(DMS)查看集群内存使用情况,详情参考在监控面板(DMS)查看DWS集群监控章节。DWS也提供了监控整个集群内存使用状态的视图:查询pgxc_total_memory_detail视图,必须具有sysadmin权限。SELECT * FROM pgxc_total_memory_detail;如果查询该视图时出现以下 - [实例资源监控](https://support.huaweicloud.com/devg-dws/dws_04_0396.md): DWS提供了监控CN、DN实例资源使用状态(包括内存,CPU,磁盘IO,进程物理IO和进程逻辑IO)的系统表GS_WLM_INSTANCE_HISTORY及监控整个集群资源使用状态的函数pgxc_get_wlm_history_instance_info()和pgxc_get_wlm_history_instance_info()。查询当 - [实时TopSQL](https://support.huaweicloud.com/devg-dws/dws_04_0397.md): 系统提供了不同级别的资源监控实时视图用来查询实时TopSQL。资源监控实时视图记录了查询作业运行时的资源使用情况(包括内存、下盘、CPU时间等)以及性能告警信息。实时视图具体的对外接口如下表所示:视图级别取决于资源监控的等级,即参数resource_track_level的配置。perf和operator级别会影响GS_WLM_SESSI - [历史TopSQL](https://support.huaweicloud.com/devg-dws/dws_04_0398.md): 系统提供了资源监控历史视图用来查询历史TopSQL。资源监控历史视图记录了查询作业运行结束时的资源使用情况(包括内存、下盘、CPU时间等)和运行状态信息(包括报错、终止、异常等)以及性能告警信息。但对于由于FATAL、PANIC错误导致查询异常结束时,状态信息列只显示aborted,无法记录详细异常信息。特别的,对于查询解析,优化阶段的状 - [TopSQL查询示例](https://support.huaweicloud.com/devg-dws/dws_04_0399.md): 本章节以查询TPC-DS样例数据的作业为例,演示如何查看实时TopSQL和历史TopSQL。查询TopSQL资源监控信息之前,需要先配置相关的GUC参数,以便能查询到作业的资源监控历史信息或归档信息。步骤如下:登录DWS控制台。在左侧导航栏中,单击“集群 > 集群列表”。在集群列表中找到所需要的集群,单击集群名称,进入“集群详情”页面。单 - [性能调优概述](https://support.huaweicloud.com/devg-dws/dws_04_0401.md): 数据库性能调优是指通过优化数据库系统的配置及SQL查询,以提高数据库性能和效率的过程。目的为消除性能瓶颈、减少响应时间、提高系统吞吐量和资源利用率,降低业务成本,从而提高系统稳定性,给用户带来更大的价值。本章通过性能诊断、系统调优及SQL调优及常见SQL调优案例等性能调优的实际操作,为数据库性能调优人员提供全方位的指导。数据库调优是一个复 - [执行计划算子](https://support.huaweicloud.com/devg-dws/dws_04_0402.md): SQL执行计划中每一个步骤为一个数据库运算符,也叫作一个执行算子。DWS中算子是基本的数据处理单元,合理地组合算子、优化算子的顺序和执行方式,可以提升数据的处理效率。DWS算子可分为:扫描算子、控制算子、物化算子、连接算子、其他算子等。扫描算子用来扫描表中的数据,每次获取一条元组作为上层节点的输入, 存在于查询计划树的叶子节点,它不仅可以 - [集群性能分析](https://support.huaweicloud.com/devg-dws/dws_04_0404.md): DWS不同集群规格的CPU核数、内存大小和节点存储容量不同,处理业务能力和性能也就不同,用户在创建集群前需要结合实际业务量和具体使用场景来选择集群规格。在使用集群过程中,当用户的业务量过大,则需要更多的资源(CPU、内存、网络带宽等)来支撑逐渐增长的业务量,如果用户当前使用的集群资源不足,会降低数据库运行速度并影响数据库性能。DWS监控信 - [查询最耗性能的SQL](https://support.huaweicloud.com/devg-dws/dws_04_0412.md): 系统中有些SQL语句运行了很长时间仍未结束,这些语句会消耗大量系统资源,可参考本章内容查询长时间运行的SQL语句。当此参数为on时,数据库系统才会收集当前活动查询的运行信息。查询后会按执行时间从长到短顺序返回查询语句列表,第一条结果就是当前系统中执行时间最长的查询语句。返回结果中包含了系统调用的SQL语句和用户执行SQL语句,请根据实际返 - [分析作业是否被阻塞](https://support.huaweicloud.com/devg-dws/dws_04_0413.md): 数据库系统运行时,在某些业务场景下查询语句会被阻塞,导致语句运行时间过长,可以强制结束有问题的会话。该查询返回线程ID、CN名称、用户信息、查询状态,以及导致阻塞的表、模式信息。显示类似如下信息,表示结束会话成功。显示类似如下信息,表示用户正在尝试结束当前会话,此时仅会重连会话,而不是结束会话。gsql客户端使用PG_TERMINATE_ - [SMP并行执行](https://support.huaweicloud.com/devg-dws/dws_04_0420.md): 在复杂查询场景中,单个查询的执行较长,系统并发度低,通过SMP并行执行技术实现算子级的并行,能够有效减少查询执行时间,提升查询性能及资源利用率。通过算子并行来提升性能,同时会占用更多的系统资源,包括CPU、内存、网络、I/O等等。本质上SMP是一种以资源换取时间的方式,在合适的场景以及资源充足的情况下,能够起到较好的性能提升效果;但是如果 - [配置LLVM](https://support.huaweicloud.com/devg-dws/dws_04_0426.md): LLVM(Low Level Virtual Machine)动态编译技术可以为每个查询生成定制化的机器码用于替换原本的通用函数。通过减少实际查询时冗余的条件逻辑判断、虚函数调用并提高数据局域性,从而达到提升查询整体性能的目的。由于LLVM需要消耗额外的时间预生成IR中间态表示并编译成机器码,因此在小数据量场景或查询本身耗时较少时,可能引 - [SQL查询执行流程](https://support.huaweicloud.com/devg-dws/dws_04_0431.md): SQL引擎从接收SQL语句到执行SQL语句需要经历的步骤如图1和表1所示。其中,红色字体部分为DBA可以介入实施调优的环节。DWS优化器是典型的基于代价的优化 (Cost-Based Optimization,简称CBO)。在这种优化器模型下,数据库根据表的元组数、字段宽度、NULL记录比率、distinct值、MCV值、HB值等表的特征 - [SQL执行计划](https://support.huaweicloud.com/devg-dws/dws_04_0432.md): SQL执行计划是一个节点树,显示DWS执行一条SQL语句时执行的详细步骤。使用EXPLAIN命令可以查看优化器为每个查询生成的具体执行计划。EXPLAIN给每个执行节点都输出一行,显示基本的节点类型和优化器为执行这个节点预计的开销值。除了设置不同的执行计划显示格式外,还可以通过不同的EXPLAIN用法,显示不同详细程度的执行计划信息。常见 - [SQL调优流程](https://support.huaweicloud.com/devg-dws/dws_04_0435.md): 对慢SQL语句进行分析,通常包括以下步骤: - [更新统计信息](https://support.huaweicloud.com/devg-dws/dws_04_0436.md): 在数据库中,统计信息是规划器生成计划的源数据。没有收集统计信息或者统计信息陈旧会造成执行计划严重劣化,从而导致性能问题。ANALYZE语句可收集与数据库中表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。查询优化器会使用这些统计数据,以生成最有效的执行计划。建议在执行了大批量插入/删除操作后,例行对表或全库执行ANAL - [审视和修改表定义](https://support.huaweicloud.com/devg-dws/dws_04_0437.md): 在分布式框架下,数据分布在各个DN上。一个或者几个DN的数据存在一块物理存储设备上,较好的表定义需要满足以下要求:表数据均匀分布在各个DN上,以防止单个DN对应的存储设备空间不足造成集群有效容量下降。选择合适分布列,避免数据分布倾斜可以实现该点。表Scan压力均匀分散在各个DN上,以避免单DN的Scan压力过大,形成Scan的单节点瓶颈。 - [SQL自诊断](https://support.huaweicloud.com/devg-dws/dws_04_0446.md): 用户在执行INSERT/UPDATE/DELETE/SELECT/MERGE INTO或者CREATE TABLE AS语句时,可能会遇到性能问题。产品内置集成了性能自动诊断功能,并把相关的诊断信息保存到实时TopSQL中,当配置参数enable_resource_track为on的时候,这些诊断信息会转存到历史TopSQL中。通过查询G - [语句下推调优](https://support.huaweicloud.com/devg-dws/dws_04_0447.md): 目前,DWS优化器在分布式框架下指定语句的执行策略时,有三种执行计划方式:生成下推语句计划、生成分布式执行计划以及发送语句的分布式执行计划。下推语句计划:指直接将查询语句从CN发送到DN进行执行,然后将执行结果返回给CN。分布式执行计划:指CN对查询语句进行编译和优化,生成计划树,再将计划树发送给DN进行执行,并在执行完毕后返回结果到CN - [子查询调优](https://support.huaweicloud.com/devg-dws/dws_04_0448.md): 应用程序通过SQL语句来操作数据库时会使用大量的子查询,这种写法比直接对两个表做连接操作在结构上和思路上更清晰,尤其是在一些比较复杂的查询语句中,子查询有更完整、更独立的语义,会使SQL对业务逻辑的表达更清晰更容易理解,因此得到了广泛的应用。DWS根据子查询在SQL语句中的位置把子查询分成了子查询、子链接两种形式。子查询SubQuery: - [统计信息调优](https://support.huaweicloud.com/devg-dws/dws_04_0449.md): DWS是基于代价估算生成的最优执行计划。优化器需要根据ANALYZE收集的统计信息行数估算和代价估算,因此统计信息对优化器行数估算和代价估算起着至关重要的作用。通过ANALYZE收集全局统计信息,主要包括:pg_class表中的relpages和reltuples;pg_statistic表中的stadistinct、stanullfra - [算子级调优](https://support.huaweicloud.com/devg-dws/dws_04_0450.md): 一个查询语句要经过多个算子步骤才会输出最终的结果。由于个别算子耗时过长导致整体查询性能下降的情况比较常见。这些算子是整个查询的瓶颈算子。通用的优化手段是EXPLAIN ANALYZE/PERFORMANCE命令查看执行过程的瓶颈算子,然后进行针对性优化。如下面的执行过程信息中,Hashagg算子的执行时间占总时间的:(51016-1353 - [数据倾斜调优](https://support.huaweicloud.com/devg-dws/dws_04_0451.md): 数据倾斜问题是分布式架构的重要难题,它破坏了MPP架构中各个节点对等的要求,导致单节点(倾斜节点)所存储或者计算的数据量远大于其他节点,所以会造成以下危害:存储上的倾斜会严重限制系统容量,在系统容量不饱和的情况下,由于单节点倾斜的限制,使得整个系统容量无法继续增长。计算上的倾斜会严重影响系统性能,由于倾斜节点所需要运算的数据量远大于其它节 - [SQL语句改写规则](https://support.huaweicloud.com/devg-dws/dws_04_0452.md): 根据数据库的SQL执行机制以及大量的实践,总结发现:通过一定的规则调整SQL语句,在保证结果正确的基础上,能够提高SQL执行效率。如果遵守下列规则,能够大幅度提升业务查询效率。使用union all代替unionunion在合并两个集合时会执行去重操作,而union all则直接将两个结果集合并、不执行去重。执行去重会消耗大量的时间,因此 - [优化器参数调整](https://support.huaweicloud.com/devg-dws/dws_04_0453.md): 本节将介绍影响DWS SQL调优性能的关键CN配置参数,配置方法参见设置GUC参数。 - [Plan Hint调优概述](https://support.huaweicloud.com/devg-dws/dws_04_0455.md): Plan Hint为用户提供了直接影响执行计划生成的手段,用户可以通过指定join顺序,join、stream、scan方法,指定结果行数,指定重分布过程中的倾斜信息,指定配置参数的值等多个手段来进行执行计划的调优,以提升查询的性能。Plan Hint支持在SELECT、INSERT、UPDATE、MERGE、DELETE关键字后通过如下 - [Join顺序的Hint](https://support.huaweicloud.com/devg-dws/dws_04_0456.md): 指明join的顺序,包括内外表顺序。单层圆括号(),仅指定join顺序,不指定内外表顺序。双层圆括号(()),同时指定join顺序和内外表顺序,内外表顺序仅在最外层生效。单层方括号[],同时指定[]这层的join顺序和内外表顺序。单层圆括号()和单层方括号[]混合使用,同时指定join顺序和任意层内外表顺序。圆括号()这一层只指定join - [Join方式的Hint](https://support.huaweicloud.com/devg-dws/dws_04_0457.md): 指明Join使用的方法,可以为Nested Loop,Hash Join和Merge Join。no表示hint的join方式不使用。block_name表示语句块的block_name,详细说明请参考block_name。table_list为表示hint表集合的字符串,该字符串中的表与join_table_list相同,只是中间不允许 - [行数的Hint](https://support.huaweicloud.com/devg-dws/dws_04_0458.md): 指明中间结果集的大小,支持绝对值和相对值的hint。block_name表示语句块的block_name,详细说明请参考block_name。#,+,-,*,进行行数估算hint的四种操作符号。#表示直接使用后面的行数进行hint。+,-,*表示对原来估算的行数进行加、减、乘操作,运算后的行数最小值为1行。table_list为hint对 - [Stream方式的Hint](https://support.huaweicloud.com/devg-dws/dws_04_0459.md): 指明stream使用的方法,可以为broadcast和redistribute以及指定AGG重分布的分布键。指定Agg重分布列Hint,仅8.1.3.100及以上集群版本支持。no表示hint的stream方式不使用,当指定AGG分布列的hint时指定no关键字无效。block_name表示语句块的block_name,详细说明请参考bl - [Scan方式的Hint](https://support.huaweicloud.com/devg-dws/dws_04_0460.md): 指明scan使用的方法,可以是tablescan、indexscan和indexonlyscan。no表示hint的scan方式不使用。block_name表示语句块的block_name,详细说明请参考block_name。table表示hint指定的表,只能指定一个表,如果表存在别名应优先使用别名进行hint。表的语法格式如下:[sc - [子链接块名的hint](https://support.huaweicloud.com/devg-dws/dws_04_0461.md): 指明子链接块的名称。block_name hint仅在对应的子链接块提升时才会被上层查询使用。目前支持的子链接提升包括IN子链接提升、EXISTS子链接提升和包含Agg等值相关子链接提升。该hint通常会和前面章节提到的hint联合使用。对于FROM关键字后的子查询,则需要使用子查询的别名进行hint,block_name hint不会被 - [运行倾斜的hint](https://support.huaweicloud.com/devg-dws/dws_04_0462.md): 指明查询运行时重分布过程中存在倾斜的重分布键和倾斜值,针对Join和HashAgg运算中的重分布进行优化。skew hint仅在需要重分布且指定的倾斜信息与查询执行过程中的重分布信息相匹配时才会被使用。skew hint受GUC参数skew_option限制,如果参数处于关闭状态,则无法进行skew hint倾斜调优。skew hint目 - [配置参数的hint](https://support.huaweicloud.com/devg-dws/dws_04_0463.md): 指明计划生成时配置参数的值,又称作guc hint。如果hint设置的配置参数在语句级别生效,则该hint必须写在顶层查询中,而不能写在子查询中。对于UNION、INTERSECT、EXCEPT和MINUS语句,可以将在语句级别的guc hint写在参与集合运算的任意一个SELECT子句上,该guc hint设置的配置参数会在参与集合运算 - [Hint的错误、冲突及告警](https://support.huaweicloud.com/devg-dws/dws_04_0464.md): Plan Hint的结果会体现在计划的变化上,可以通过explain来查看变化。Hint中的错误不会影响语句的执行,只是不能生效,该错误会根据语句类型以不同方式提示用户。对于explain语句,hint的错误会以warning形式显示在界面上,对于非explain语句,会以debug1级别日志显示在日志中,关键字为PLANHINT。语法错 - [Plan Hint实际调优案例](https://support.huaweicloud.com/devg-dws/dws_04_0465.md): 本节以TPC-DS标准测试的Q24的部分语句为例,在1000X,24DN环境上,说明使用plan hint进行实际调优的过程。示例如下:该语句的初始计划如下,运行时间110s:语句初始计划该计划中,第10层算子使用broadcast性能较差,由于第11层算子估算行数为2140,比实际行数严重低估。错误行数估算主要来源于第13层算子的行数低 - [例行维护表](https://support.huaweicloud.com/devg-dws/dws_04_0466.md): 为了保证数据库的有效运行,数据库必须在插入/删除操作后,定期执行VACUUM FULL和ANALYZE,更新统计信息,以便获得更优的性能。使用VACUUM、VACUUM FULL和ANALYZE命令定期对每个表进行维护,主要有以下原因:VACUUM FULL可回收已更新或已删除的数据所占据的磁盘空间,同时将小数据文件合并。VACUUM对每 - [例行重建索引](https://support.huaweicloud.com/devg-dws/dws_04_0467.md): 数据库经过多次删除操作后,索引页面上的索引键将被删除,造成索引膨胀。例行重建索引,可有效地提高查询效率。数据库支持的索引类型包含B-tree索引、GIN索引和PSORT索引。对于B-tree索引,例行重建索引可有效地提高查询效率。如果数据发生大量删除后,索引页面上的索引键将被删除,导致索引页面数量的减少,造成索引膨胀。重建索引可回收浪费的 - [案例:选择合适的分布列](https://support.huaweicloud.com/devg-dws/dws_04_0475.md): 分布列用于将数据分布到不同的节点上,划分均衡可以避免数据倾斜。在进行关联查询时,尽量选择查询中的关联条件作为分布键。当关联条件作为分布键时,相关数据都分布在DN本地,将减少DN之间的数据流动代价,提升查询速度。将a作为t1和t2的分布列,表定义如下:执行如下查询:则执行计划存在“Streaming(type: REDISTRIBUTE)” - [案例:建立合适的索引](https://support.huaweicloud.com/devg-dws/dws_04_0476.md): 创建合适的索引可以加速对表中数据行的检索。索引占用磁盘空间,并且降低添加、删除和更新行的速度。如果需要非常频繁地更新数据或磁盘空间有限,则需要限制索引的数量。在表较大时再建立索引,表中的数据越多,索引的优越性越明显。建议仅在匹配如下某条原则时创建索引:需要经常执行查询的字段。对于存在多字段连接的查询,建议在连接条件字段上建立组合索引。例如 - [案例:增加JOIN列非空条件](https://support.huaweicloud.com/devg-dws/dws_04_0477.md): 若Join列上的NULL值较多,可以加上is not null过滤条件,以实现数据的提前过滤,提高Join效率。执行计划如图1所示。分析执行计划图1可知,在顺序扫描阶段耗时较多。多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。建议在语句中手动添加JOIN列的 - [案例:设置cost_param对查询性能优化](https://support.huaweicloud.com/devg-dws/dws_04_0479.md): cost_param参数用于控制在特定的客户场景中,使用不同的估算方法使得估算值与真实值更接近。此参数可以同时控制多种方法,与某一方法对应的位做与操作,不为0表示该方法被选择。cost_param的bit0(set cost_param=1)值为1时,表示对于求!=连接的选择率时选择一种改良机制,此方法在自连接(两个相同的表之间连接)的估 - [案例:调整局部聚簇键](https://support.huaweicloud.com/devg-dws/dws_04_0481.md): 局部聚簇 (Partial Cluster Key,简称PCK),列存储下一种通过min/max稀疏索引实现基表快速扫描的索引技术。Partial Cluster Key可以指定多列,但是一般不建议超过2列。PCK适用于列存大表点查询加速。创建一个无局部聚簇(以下称为PCK)的列存表orders_no_pck,表定义如下:执行以下SQL语 - [案例:调整中间表存储方式](https://support.huaweicloud.com/devg-dws/dws_04_0482.md): 在DWS中行存表使用行执行引擎,列存表使用列执行引擎。如果一个SQL语句涉及的表既有行存表又有列存表,系统会自动选择行执行引擎。由于列执行引擎的性能(除indexscan相关的算子)比行执行引擎性能要好很多,因此一般建议使用列存表。特别是对一些中间结果集转储的表,一定要分析清楚,使用合适的表存储类型。某局点测试过程遇到如下的执行计划,客户 - [案例:改建分区表](https://support.huaweicloud.com/devg-dws/dws_04_0484.md): 逻辑上的一张表根据某种策略分成多个物理块进行存储,这张逻辑上的表称之为分区表,每个物理块则称为一个分区。一般对数据和查询都有明显区间段特征的表使用分区策略可通过减少不必要的数据扫描,从而提升查询性能。在查询时,可通过分区剪枝技术尽可能减少底层数据扫描,即缩小表的扫描范围。分区剪枝是指对于分区表或分区索引来说,优化器可以自动从FROM和WH - [案例:调整GUC参数best_agg_plan](https://support.huaweicloud.com/devg-dws/dws_04_0485.md): t1的表定义为:假设agg下层算子所输出结果集的分布列为setA,agg操作的group by列为setB,则在Stream框架下,Agg操作可以分为两个场景。场景一:setA是setB的一个子集。对于这种场景,直接对下层结果集进行汇聚的结果就是正确的汇聚结果,上层算子直接使用即可。如下图所示:场景二:setA不是setB的一个子集。对于 - [案例:改写SQL排除剪枝干扰](https://support.huaweicloud.com/devg-dws/dws_04_0488.md): 分区表查询中表达式一般不是单纯的分区键,而是包含分区键的表达式的Filter条件,这种类型的Filter条件是不能用来剪枝的。t_ddw_f10_op_cust_asset_mon为分区表,分区键为year_mth,此字段是由年月两个值拼接而成的整数。测试SQL如下:测试结果显示此SQL的表Scan耗时长达10s,查询SQL语句的执行计划 - [案例:改写SQL消除in-clause](https://support.huaweicloud.com/devg-dws/dws_04_0489.md): in-clause/any-clause是常见的SQL语句约束条件,有时in或any后面的clause都是常量,类似于:或者但是也有一些如下的特殊用法:其中,id、id15为p10_md_tmp_t2中的两列,“t1.ls_pid_cusr1 = any(values(id), (id15))”等价于“t1.ls_pid_cusr1 = - [案例:使用partial cluster key](https://support.huaweicloud.com/devg-dws/dws_04_0490.md): 列存表可以选取某一列或几列设置为partial cluster key(column_name[, ...])。在导入数据时,按设置的列进行局部排序(默认每70个CU即420万行排序一次),生成的CU会聚集在一起,即CU的min,max会在一个较小的区间内。当查询时,where条件含有这些列时,可产生良好的过滤效果。未使用partial - [SQL诊断](https://support.huaweicloud.com/devg-dws/dws_04_0491.md): DWS集群提供了SQL诊断功能,支持通过多种条件检索出符合条件的SQL查询(如慢查询),并完整展示执行计划。SQL诊断功能使用方式: - [表诊断](https://support.huaweicloud.com/devg-dws/dws_04_0492.md): DWS提供了集群中数据表关键运行状态的统计数据与诊断工具。其中包括:表倾斜率:对于集群中数据表统计信息进行监控分析,展示倾斜率高于5%且表大小TOP50的表信息。表脏页率:对于集群中数据表统计信息进行监控分析,展示脏页率高于50%且表大小TOP50的表信息。不合理的分布列选择,将引发算子计算/数据下盘倾斜严重,导致不同DN的处理压力不同, - [query_band负载识别](https://support.huaweicloud.com/devg-dws/dws_04_0493.md): DWS实现基于query_band的负载识别和队列内优先级控制,一方面提供了更为灵活的负载识别手段,可根据作业类型、应用名称、脚本名称等识别负载队列,使用户根据业务场景可灵活配置query_band识别队列;另一方面实现了队列内作业下发优先级控制,后续将逐步实现队列内资源优先级控制。管理员用户可根据业务场景及作业类别配置query_ban - [SQL语句出错自动重试](https://support.huaweicloud.com/devg-dws/dws_04_0497.md): DWS支持在SQL语句执行出错时自动重试(下文简称CN Retry)。对于来自gsql客户端、JDBC、ODBC驱动的SQL语句,在SQL语句执行失败时,CN端能够自动识别语句执行过程中的报错,并重新下发任务进行自动重试。CN Retry支持的错误类型列表和对应的错误码信息见表2, 可以通过GUC参数retry_ecode_list设置C - [DWS PL/Java语言函数](https://support.huaweicloud.com/devg-dws/dws_04_0509.md): DWS支持Java UDF (用户自定义函数) ,它是一种在数据处理系统中扩展功能的方式,允许开发者使用Java语言编写自定义函数,然后在SQL查询或其他数据处理场景中调用这些函数。Java UDF可以实现一些Java逻辑计算,强烈建议不要在Java UDF中封装业务强烈建议不要在Java函数中使用任何方式连接数据库,包括但不限于JDBC - [DWS PL/pgSQL语言函数](https://support.huaweicloud.com/devg-dws/dws_04_0510.md): PL/pgSQL类似于Oracle的PL/SQL,是一种可载入的过程语言。用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方。例如,可以创建复杂条件的计算函数并且后面用它们来定义操作符或把它们用于索引表达式。SQL被大多数数据库用作查询语言。它是可移植的并且容易学习。但是每一个SQL语句必须由数据库服务器单独执行。这意味着客 - [DWS存储过程简介](https://support.huaweicloud.com/devg-dws/dws_04_0513.md): 商业规则和业务逻辑可以通过程序存储在DWS中,这个程序就是存储过程。存储过程是SQL,PL/SQL,Java语句的组合。存储过程使执行商业规则的代码可以从应用程序中移动到数据库。从而,代码存储一次能够被多个程序使用。存储过程的创建及调用办法请参考CREATE PROCEDURE。DWS PL/pgSQL语言函数节所提到的PL/pgSQL语 - [DWS存储过程数据类型转换](https://support.huaweicloud.com/devg-dws/dws_04_0515.md): 数据库中允许有些数据类型进行隐式类型转换(赋值、函数调用的参数等),有些数据类型间不允许进行隐式数据类型转换,可尝试使用DWS提供的类型转换函数,例如CAST进行数据类型强转。DWS数据库常见的隐式类型转换,请参见表1。DWS支持的DATE的效限范围是:公元前4713年到公元294276年。 - [数组](https://support.huaweicloud.com/devg-dws/dws_04_0517.md): 在使用数组之前,需要自定义一个数组类型。在存储过程中紧跟AS关键字后面定义数组类型。定义方法为:TYPE array_type IS VARRAY(size) OF data_type [NOT NULL];其中:array_type:要定义的数组类型名。VARRAY:表示要定义的数组类型。size:取值为正整数,表示可以容纳的成员的最大 - [record](https://support.huaweicloud.com/devg-dws/dws_04_0518.md): 创建一个record变量的方式:定义一个record类型 ,然后使用该类型来声明一个变量。record类型的语法参见图1。对以上语法格式的解释如下:record_type:声明的类型名称。field:record类型中的成员名称。datatype:record类型中成员的类型。expression:设置默认值的表达式。record类型的变 - [DWS存储过程声明语法](https://support.huaweicloud.com/devg-dws/dws_04_0519.md): PL/SQL块中可以包含子块,子块可以位于PL/SQL中任何部分。PL/SQL块的结构如下:声明部分:声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数。DECLARE不涉及变量声明时声明部分可以没有。对匿名块来说,没有变量声明部分时,可以省去DECLARE关键字。对存储过程来说,没有DECLARE, AS相当于DECLAR - [DWS存储过程基本语句](https://support.huaweicloud.com/devg-dws/dws_04_0523.md): 介绍PL/SQL中变量的声明,以及该变量在代码中的作用域。变量声明变量声明语法请参见图1。对以上语法格式的解释如下:variable_name,为变量名。type,为变量类型。value,是该变量的初始值(如果不给定初始值,则初始为NULL)。value也可以是表达式。示例变量类型除了支持基本类型,还可使用%TYPE和%ROWTYPE去声 - [执行动态查询语句](https://support.huaweicloud.com/devg-dws/dws_04_0528.md): 介绍执行动态查询语句。DWS提供两种方式:使用EXECUTE IMMEDIATE、OPEN FOR实现动态查询。前者通过动态执行SELECT语句,后者结合了游标的使用。当需要将查询的结果保存在一个数据集用于提取时,可使用OPEN FOR实现动态查询。语法图请参见图1。using_clause子句的语法图参见图2。对以上语法格式的解释如下: - [执行动态非查询语句](https://support.huaweicloud.com/devg-dws/dws_04_0529.md): 语法请参见图1。using_clause子句的语法参见图2。对以上语法格式的解释如下:USING IN bind_argument用于指定存放传递给动态SQL值的变量,在dynamic_noselect_string中存在占位符时使用,即动态SQL语句执行时,bind_argument将替换相对应的占位符。要注意的是,bind_argum - [动态调用存储过程](https://support.huaweicloud.com/devg-dws/dws_04_0530.md): 动态调用存储过程必须使用匿名的语句块将存储过程或语句块包在里面,使用EXECUTE IMMEDIATE…USING语句后面带IN、OUT来输入、输出参数。语法请参见图1。using_clause子句的语法参见图2。对以上语法格式的解释如下:CALL procedure_name,调用存储过程。[:placeholder1,:placeho - [动态调用匿名块](https://support.huaweicloud.com/devg-dws/dws_04_0531.md): 动态调用匿名块是指在动态语句中执行匿名块,使用EXECUTE IMMEDIATE…USING语句后面带IN、OUT来输入、输出参数。语法请参见图1。using_clause子句的语法参见图2。对以上语法格式的解释如下:匿名块程序实施部分,以BEGIN语句开始,以END语句停顿,以一个分号结束。USING [IN|OUT|IN OUT] - [返回语句](https://support.huaweicloud.com/devg-dws/dws_04_0533.md): DWS提供两种方式返回数据:RETURN(或RETURN NEXT)及RETURN QUERY。其中,RETURN NEXT和RETURN QUERY只适用于函数,不适用存储过程。语法返回语句的语法请参见图1。对以上语法的解释如下:用于将控制从存储过程或函数返回给调用者。示例语法创建函数时需要指定返回值SETOF datatype。ret - [条件语句](https://support.huaweicloud.com/devg-dws/dws_04_0536.md): 条件语句的主要作用是判断参数或者语句是否满足已给定的条件,根据判定结果执行相应的操作。DWS有五种形式的IF:IF_THENIF_THEN::=IF_THEN语句是IF的最简单形式。如果条件为真,statements将被执行。否则,将忽略它们的结果使该IF_THEN语句执行结束。示例IF v_user_id <> 0 THEN U - [循环语句](https://support.huaweicloud.com/devg-dws/dws_04_0537.md): 语法图示例该循环必须要结合EXIT使用,否则将陷入死循环。语法图只要条件表达式为真,WHILE语句就会不停地在一系列语句上进行循环,在每次进入循环体的时候进行条件判断。示例语法图变量name会自动定义为integer类型并且只在此循环里存在。变量name介于lower_bound和upper_bound之间。当使用REVERSE关键字时, - [分支语句](https://support.huaweicloud.com/devg-dws/dws_04_0538.md): 分支语句的语法请参见图1。when_clause子句的语法图参见图2。参数说明:case_expression:变量或表达式。when_expression:常量或者条件表达式。statement:执行语句。 - [空语句](https://support.huaweicloud.com/devg-dws/dws_04_0539.md): 在PL/SQL程序中,可以用NULL语句来说明“不用做任何事情”,即空语句。空语句相当于一个占位符,可以使某些语句变得有意义,提高程序的可读性。空语句的用法如下: - [错误捕获语句](https://support.huaweicloud.com/devg-dws/dws_04_0540.md): 缺省时,当PL/SQL函数执行过程中发生错误时退出函数执行,并且周围的事务也会回滚。可以用一个带有EXCEPTION子句的BEGIN块捕获错误并且从中恢复。其语法是正常的BEGIN块语法的一个扩展:[<