[转帖]人大金仓数据库分区表

人大,数据库,分区表 · 浏览次数 : 0

小编点评

**分区表声明式创建分区按列创建分区(PARTITION BY LIST)** ```sql CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, city VARCHAR(50) NOT NULL ) PARTITION BY LIST (city) ( PARTITION city1 VALUES ('上海'), PARTITION city2 VALUES ('北京'), PARTITION city3 VALUES ('广州') )   CREATE TABLE子分区名 partition of 基表名 for values in ('分区列的值1','分区列的值2’); CREATE TABLE子分区名 PARTITION OF student default; ``` **分区规则:** 1. `PARTITION BY LIST (city)` 将数据根据城市分组。 2. `city1`、`city2`、`city3` 分别包含上海、北京和广州的城市名。 **子分区表创建:** ```sql CREATE TABLE子分区名 PARTITION OF 分区名(基表名) FOR VALUES FROM (起始时间) TO ('终止时间'); ``` 例如,如果 `student` 表包含以下数据: | id | name | city | |---|---|---| | 1 | 张三 | 上海 | | 2 | 李四 | 北京 | | 3 | 王五 | 广州 | 则创建子分区表 `city1` 的 SQL 语句如下: ```sql CREATE TABLE子分区名 PARTITION OF student (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, city VARCHAR(50) NOT NULL) FOR VALUES FROM (1) TO (3) PARTITION city1 VALUES ('上海'); ``` **分区约束:** ```sql CREATE TABLE子分区名 PARTITION OF 分区名(基表名)   FOR VALUES WITH (MODULUS 取模的数量, REMAINDER 取余结果); ``` 例如,如果 `city` 列包含以下值: | city | |---|---| | 上海 | | 北京 | | 广州 | | 北京 | 则创建分区约束 `city`,其值为` Shanghai` 的分区将包含所有数据。 **使用示例:** ```sql -- 插入测试数据 INSERT INTO student (name, city) VALUES ('张三', '上海'); -- 查询所有城市 SELECT * FROM student; -- 按城市分区查询数据 SELECT * FROM student WHERE city = '上海'; ```

正文

分区表

声明式创建分区

按列创建分区(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; #按默认

 

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

 

按范围分区(PARTITION BY RANGE)

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

创建分区表(基表)

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

 

创建子分区(子表)

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

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

使用Hash分区(PARTITION BY HASH)

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

创建分区表(基表)

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

 

创建子分区表(子表)

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

 

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

 

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

创建父表

 

创建子表

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

 

查看父表状态信息

 

创建触发器函数

创建触发器

 

插入测试数据

查询测试

 

分区表注意事项

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

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

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

分区表扫描控制

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

 

文章知识点与官方知识档案匹配,可进一步学习相关知识
MySQL入门技能树数据库组成61869 人正在系统学习中
黑马金牌编程
微信公众号
黑马金牌编程

与[转帖]人大金仓数据库分区表相似的内容:

[转帖]人大金仓数据库分区表

分区表 声明式创建分区 按列创建分区(PARTITION BY LIST) 将学员表student按所在城市使用partition by list创建分区 创建分区表(基表) 创建格式 create table 表名(字段名 数据类型)PARTITION BY LIST(要分区的字段名) 创建子分区

[转帖]人大金仓数据库的备份与还原

人大金仓数据库的备份与还原 文章目录 人大金仓数据库的备份与还原前言备份sys_dump 命令 还原ksql 命令sys_restore 一. 从人大金仓数据库备份还原到人大金仓数据库二 从postgresql数据库备份还原到人大金仓数据库 后记 前言 本文记录一次使用人大金仓数据库(Kingbas

[转帖]人大金仓数据库的用户与角色

数据库的表、索引、视图等,在数据库中的一切都可以称为数据库对象。 对象分为以下两类 模式(SCHEMA)对象:可视为一个表的集合,可以理解为一个存储目录,包含视图、索引、数据类型、函数和操作符等。非模式对象:其他的数据库对象。如数据库、表空间、用户、权限。 查看当前用户在数据库中拥有的权限 \l 查

[转帖]国产数据库到底行不行?人大金仓KINGBASE数据库与主流开源数据库性能实测

近年来,人大金仓的数据库产品受到了外界诸多的关注。做产品,免不了要接受用户的对比和选择,数据库因其行业的自身特点,还有很多开源的技术产品同台比拼,用户因此也会产生诸多疑问,国产数据库相比开源数据库到底如何,今天我们选择数据库的一项核心能力——性能,将金仓KingbaseES和目前业界主流的两种开源数

[转帖]炫“库”行动—人大金仓有奖征文——金仓分析型数据库系统执行计划生成和查看

【本文正在参与炫“库”行动—人大金仓有奖征文】 人大金仓有奖征文 (csdn.net)https://bss.csdn.net/m/topic/kingbase 一、执行计划生成 EXPLAIN和EXPLAIN ANALYZE是金仓分析型数据库系统优化性能的工具。EXPLAIN会为查询显示其查询计划

[转帖]人大金仓和PG的关系

作者:山抹微云链接:https://www.zhihu.com/question/582960448/answer/2997151260来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 只针对人大金仓的集中式关系数据库kes86: 结论:kes86应该是人大金仓对pg进

[转帖]人大金仓- KWR 报告初体验

【本文正在参与炫"库"行动-人大金仓有奖征文】 开发者请集结丨炫“库”行动——2021人大金仓征文大赛悬赏万元等你来! 最近一直在研究 Oracle 的 AWR 报告,觉得它功能很强大,尤其是 DB Time 模型和等待事件能够让性问题的分析变得十分方便,再也不需要依赖大量的运维脚本去分析和定位问题

[转帖]人大金仓修改最大连接数

https://www.cnblogs.com/darcy-hui/p/13212108.html#:~:text=%E4%BA%BA%E5%A4%A7%E9%87%91%E4%BB%93%E4%BF%AE%E6%94%B9%E6%9C%80%E5%A4%A7%E8%BF%9E%E6%8E%A5%E

[转帖]kingbase(人大金仓)的一些常用表操作语句

包括 1)创建表 2)删除表 3)加字段 4)字段换名 5)字段改类型 6)字段添加注释 7)修改字段为自增类型 8)增加主键 9)查看模式下的表 一、创建和删除表 DROP TABLE IF EXISTS "DZ_RAIN" CASCADE; CREATE TABLE "DZ_RAIN" ( "I

[转帖]人间终极定律,熵增定律

https://www.cnblogs.com/zhoading/p/17115776.html 人活着就是在对抗熵增定律。 ——薛定谔《生命是什么》 一 这个世界上所有的定律,都可以说是废话,都可以是多余的,但唯独“熵 [shāng] 增定律”是人类不可多得的价值总结。 “熵增定律”也是自然界至高