2. LIST分区:
CREATE TABLE tbl_test (
uuid INT NOT NULL,
title VARCHAR(20)
)
)
PARTITION BY List (uuid) (
PARTITION p0 VALUES in (1,2,3,5),
PARTITION p1 VALUES in (7,9,10),
PARTITION p2 VALUES in (11,15)
)
);
解读:以上为uuid 等于1/2/3/5时放到p0分区,7/9/10放到p1分区,11/15放到p2分区 。当时用insert into时 如果uuid的值不存在p0/p1/p2分区时,则会插入失败而报错 。
3. HASH分区:
HASH分区主要用来确保数据在预先确定数目的分区中平均分布 。在RANGE分区和LIST分区中必须明确指定一个指定的列值或列值集合以指定应该保存在哪个分区中 。而在HASH分区中,MySQL会自动完成这些工作,要做的只是基于将要被哈希的列值指定一个表达式,以及指定被分区的表将要被分割成的分区数量,如:
CREATE TABLE tbl_test (
uuid INT NOT NULL,
title VARCHAR(20)
))
PARTITION BY HASH (uuid) (
PARTITIONS 3
));
解读:MySQL自动创建3个分区,在执行insert into时,根据插入的uuid通过算法来自动分配区间 。
注意:
(1) 由于每次插入、更新、删除一行 , 这个表达式都要计算一次,这意味着非常复杂的表达式可能会引起性能问题,尤其是在执行同时影响大量行的运算(例如批量插入)的时候 。
(2) 最有效率的哈希函数是只对单个表列进行计算 , 并且它的值随列值进行一致的增大或减小 , 因为这考虑了在分区范围上的“修剪” 。也就是说,表达式值和它所基于的列的值变化越接近,就越能有效地使用该表达式来进行HASH分区 。
3.1:线性HASH分区
线性HASH分区在“PARTITION BY”子句中添加“LINEAR”关键字 。
线性HASH分区的有点在于增加、删除、合并和拆分分区将变得更加快捷,有利于处理含有及其大量数据的表 。它的缺点在于各个分区间数据的分布不大可能均衡 。
4. KEY分区
类似于HASH分区,HASH分区允许用户自定义的表达式,而KEY分区则不允许使用用户自定义的表达式;HASH分区只支持整数分区,KEY分区支持除了blob和text类型之外的其他数据类型分区 。
与HASH分区不同,创建KEY分区表的时候,可以不指定分区键,默认会选择使用主键或唯一键作为分区键,没有主键或唯一键 , 就必须指定分区键 。
CREATE TABLE tbl_test (
uuid INT NOT NULL,
title VARCHAR(20)
))
PARTITION BY LINEAR Key (uuid)
PARTITIONS 3;
解读:根据分区键来进行分区
5. 子分区
子分区是分区表中,每个分区的再次分割 , 适合保存非常大量的数据 。
CREATE TABLE tbl_test (
registerTime Date
))
PARTITION BY GANGE(YEAR(registerTime))
SUBPARTITION BY HASH (TO_DAYS(registerTime))
SUBPARTITIONS 2
(
PARTITION p0 VALUES LESS THAN (2017),
PARTITION p1 VALUES LESS THAN (2020),
PARTITION p2 VALUES LESS THAN MAXVALUE
);
解读:主分区使用RANGE按照年来进行分区 , 有3个RANGE分区 。这3个分区中又被进一步分成了2个子分区,实际上 , 整个表被分成了3 * 2 = 6个分区 。每个子分区按照天进行HASH分区 。小于2017的放在一起,2017-2020的放在一起,大于2020的放在一起 。
注意:
(1) 在MySQL5.1中 , 对于已经通过RANGE或LIST分区了的表在进行子分区是可能的 。子分区既可以使用HASH分区,也可以使用KEY分区 。这也被称为复合分区 。
(2) 每个分区必须有相同数量的子分区 。
(3) 如果在一个分区表上的任何分区上使用SUBPARTITION来明确定义任何子分区,那么就必须定义所有的子分区 。
推荐阅读
- python爬虫新增mysql,python增量爬虫
- 大侠驿馆经营游戏,大侠网络科技有限公司
- 直播间见面技巧,第一次直播怎么和别人打招呼
- 直接看go语言实战 go语言自学
- JAVA分层窗口代码,java分层架构设计
- 电脑启动蓝屏怎么找回硬盘,电脑蓝屏怎么一键恢复,发现不了硬盘
- 虎牙直播怎么购买粉,虎牙如何买粉丝
- linux限制用户命令 linux限制用户cpu使用率
- 电脑密码用u盘怎么重置密码,电脑重置密码的u盘