0
点赞
收藏
分享

微信扫一扫

人大金仓数据库分区表


分区表

声明式创建分区

按列创建分区(PARTITION BY LIST)

将学员表student按所在城市使用partition by list创建分区

创建分区表(基表)

创建格式

create table 表名(字段名 数据类型)PARTITION BY LIST(要分区的字段名)

人大金仓数据库分区表_表名

 

创建子分区表(子表)

create table 子分区名 partition of 基表名 for values in ('分区列的值1','分区列的值2’);

 create table 子分区名 PARTITION OF student default; #按默认

人大金仓数据库分区表_字段名_02

 

插入测试数据、执行数据查询、查看SQL执行计划

人大金仓数据库分区表_分区表_03

 

按范围分区(PARTITION BY RANGE)

将学员表student按报名时间使用PARTITION BY RANGE创建分区

创建分区表(基表)

create table 表名(字段名 数据类型)PARTITION BY RANGE(要分区的字段名)

人大金仓数据库分区表_国产数据库_04

 

创建子分区(子表)

 create table 子分区名 PARTITION OF 分区名(基表名) FOR VALUES FROM (起始时间) TO ('终止时间');

 create table 子分区名 PARTITION OF student default; #按默认

人大金仓数据库分区表_表名_05

使用Hash分区(PARTITION BY HASH)

将学员表student按学员编号使用PARTITION BY HASH创建分区表

创建分区表(基表)

create table 表名(字段名 数据类型)PARTITION BY HASH(要分区的字段名)

人大金仓数据库分区表_分区表_06

 

创建子分区表(子表)

 create table 子分区名 PARTITION OF 分区名(基表名)  FOR VALUES WITH (MODULUS 取模的数量, REMAINDER 取余结果);

人大金仓数据库分区表_字段名_07

 

插入测试数据、执行数据查询、查看SQL执行计划

人大金仓数据库分区表_字段名_08

 

通过表继承和触发器创建分表

创建父表

人大金仓数据库分区表_表名_09

 

创建子表

create table 子表名(CHECK(reg_date>='日期起始' and reg_date<'日期终止')) INHERITS(要继承的表名);

人大金仓数据库分区表_字段名_10

 

查看父表状态信息

人大金仓数据库分区表_国产数据库_11

 

创建触发器函数

人大金仓数据库分区表_国产数据库_12

创建触发器

人大金仓数据库分区表_表名_13

 

插入测试数据

人大金仓数据库分区表_数据库_14

查询测试

人大金仓数据库分区表_表名_15

 

分区表注意事项

1、插入数据时按分区定义将数据存储在对应的分区中,如果插入的数据找不到任何满足定义条件分区,会导致数据插入失败。因此需要定义一个默认的分区用于存储非固定属性的数据。

2、查询整个分区表时,SQL根据查询条件执行分析后会自动跳过不需要扫描的分区。在某些特殊场景下,也可以显示指定要查询的分区。

3、创建子分区后通常需要为每个分区创建单独索引,提高查询性能。

分区表扫描控制

  1. 如果只查询分区表某个分区的数据,KES可能仍会扫描所有分区,这会降低查询性能。KES提供了参数constraint_exclusion,从而避免扫描素有分区。
  2. 参数constraint_exclusion控制查询规划器对表约束的使用,可以优化查询。

人大金仓数据库分区表_国产数据库_16

 

举报

相关推荐

0 条评论