检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
分区基本使用 创建分区表 分区表DML查询语句 父主题: 分区表介绍
分区策略 分区策略在使用DDL语句建表语句时通过PARTITION BY语句的语法指定,分区策略描述了在分区表中数据和分区路由映射规则。常见的分区类型有基于条件的Range分区/Interval分区、基于哈希散列函数的Hash分区、基于数据枚举的List列表分区: CREATE TABLE
分区策略 分区策略在使用DDL语句建表语句时通过PARTITION BY语句的语法指定,分区策略描述了在分区表中数据和分区路由映射规则。常见的分区类型有基于条件的Range分区、基于哈希散列函数的Hash分区、基于数据枚举的List列表分区: CREATE TABLE table_name
对列表分区表分割分区 使用ALTER TABLE SPLIT PARTITION可以对列表分区表分割分区。 例如,假设列表分区表list_sales的分区channel2定义范围为('6', '7', '8', '9')。可以指定分割点('6', '7')将分区channel2分割为两个分区,并更新Global索引。
参数化路径动态剪枝支持范围如下所示: 支持分区类型:范围分区、哈希分区、列表分区。 支持算子类型:indexscan、indexonlyscan、bitmapscan。 支持表达式类型:比较表达式(<,<=,=,>=,>)、逻辑表达式。 参数化路径动态剪枝不支持子查询表达式,不支持stable和
Index 约束 分区表索引分为LOCAL索引与GLOBAL索引:LOCAL索引与某个具体分区绑定,而GLOBAL索引则对应整个分区表。 唯一约束和主键约束的约束键包含所有分区键则创建LOCAL索引,否则创建GLOBAL索引。 当查询语句在查询数据涉及多个目标分区时,建议使用GLO
在创建LOCAL索引时,可以通过FOR { partition_name | ( partition_value [, ...] ) }子句,指定在单个分区上创建LOCAL索引,此类索引在其他分区上不生效,后续新增的分区也不会自动创建该索引。需要注意的是,当前仅静态剪枝到单个分区的计划支持生成分类索引的查询路径。
MERGE、MOVE、RENAME)、分区VACUUM/ANALYZE、分类分区索引等。相关命令使用方法请参见分区表DQL/DML、分区索引、分区表运维管理、以及《开发指南》中各个语法命令对应的章节。 分区级操作命令一般通过指定分区名或者分区值的方式进行,比如语法命令可能是如下情形:
MERGE、MOVE、RENAME)、分区VACUUM/ANALYZE、分类分区索引等。相关命令使用方法请参见分区表DQL/DML、分区索引、分区表运维管理、以及《开发指南》中各个语法命令对应的章节。 分区级操作命令一般通过指定分区名或者分区值的方式进行,比如语法命令可能是如下情形:
分区表统计信息 对于分区表,支持收集分区级统计信息,相关统计信息可以在pg_partition和pg_statistic系统表以及pg_stats和pg_ext_stats视图中查询。分区级统计信息适用于分区表进行静态剪枝后,分区表的扫描范围剪枝到单分区的场景下。分区级统计信息的
分区表统计信息 对于分区表,支持收集分区级统计信息,相关统计信息可以在pg_partition和pg_statistic系统表以及pg_stats和pg_ext_stats视图中查询。分区级统计信息适用于分区表进行静态剪枝后,分区表的扫描范围剪枝到单分区的场景下。分区级统计信息的
对分区表重命名分区 使用ALTER TABLE RENAME PARTITION可以对分区表重命名分区。 例如,通过指定分区名将范围分区表range_sales的分区date_202001重命名。 ALTER TABLE range_sales RENAME PARTITION date_202001
删除分区 用户可以使用删除分区的命令来移除不需要的分区。删除分区可以通过指定分区名或者分区值来进行。 删除分区不能作用于HASH分区上。 执行删除分区命令会使得Global索引失效,可以通过UPDATE GLOBAL INDEX子句来同步更新Global索引,或者用户自行重建Global索引。
p表的问题并且该部分普通表和分区表共用,而分区路由部分解决分区路由即tuple元组插入到对应partRel的问题,并且分区路由算法本身作为一级、二级分区共用,不同之处在于二级分区相比一级分区多一层路由操作,对路由算法为两次调用。 图1 普通表&分区表数据插入 因此对数据插入优化的侧重点如下:
分割后的新分区,可以与源分区名字相同,比如将分区p1分割为p1,p2。但数据库不会将分割前后相同名的分区视为同一个分区,这会影响分割期间对源分区p1查询,具体参考DQL/DML-DDL并发。 对范围分区表分割分区 对间隔分区表分割分区 对列表分区表分割分区 对*-RANGE二级分区表分割二级分区
分区键 分区键由一个或多个列组成,分区键值结合对应分区方法能够唯一确定某一元组所在的分区,通常在建表时通过PARTITION BY语句指定: CREATE TABLE table_name (…) PARTITION BY part_strategy (partition_key)
对二级分区表清空一级分区 使用ALTER TABLE TRUNCATE PARTITION可以清空二级分区表的一个一级分区,数据库会将这个一级分区下的所有二级分区都进行清空。 例如,通过指定分区名清空二级分区表range_list_sales的一级分区date_202005,并更新Global索引。
向二级分区表新增二级分区 使用ALTER TABLE MODIFY PARTITION ADD SUBPARTITION可以在二级分区表中新增一个二级分区,这个行为可以作用在二级分区策略为RANGE或者LIST的情况。 例如,对二级分区表range_list_sales的date_202004新增一个二级分区。
二级分区 二级分区(Sub Partition,也叫组合分区)是基本数据分区类型的组合,将表通过一种数据分布方法进行分区,然后使用第二种数据分布方式将每个分区进一步细分为子分区。给定分区的所有子分区表示数据的逻辑子集。常见的二级分区组合如下所示: Range-Range Range-List
ld的值,同时还需要预留部分空间以供其他功能使用。 新增分区不能作用于HASH分区上。 向范围分区表新增分区 向间隔分区表新增分区 向列表分区表新增分区 向二级分区表新增一级分区 向二级分区表新增二级分区 父主题: 分区表运维管理