2. LIST分区:
解读:以上为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会自动完成这些工作,要做的只是基于将要被哈希的列值指定一个表达式,以及指定被分区的表将要被分割成的分区数量 , 如:
解读: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分区表的时候,可以不指定分区键 , 默认会选择使用主键或唯一键作为分区键,没有主键或唯一键 , 就必须指定分区键 。
解读:根据分区键来进行分区
5. 子分区
子分区是分区表中,每个分区的再次分割 , 适合保存非常大量的数据 。
解读:主分区使用RANGE按照年来进行分区,有3个RANGE分区 。这3个分区中又被进一步分成了2个子分区,实际上,整个表被分成了3 * 2 = 6个分区 。每个子分区按照天进行HASH分区 。小于2017的放在一起,2017-2020的放在一起,大于2020的放在一起 。
注意:
(1) 在MySQL5.1中,对于已经通过RANGE或LIST分区了的表在进行子分区是可能的 。子分区既可以使用HASH分区,也可以使用KEY分区 。这也被称为复合分区 。
(2) 每个分区必须有相同数量的子分区 。
(3) 如果在一个分区表上的任何分区上使用SUBPARTITION来明确定义任何子分区,那么就必须定义所有的子分区 。
(4) 每个SUBPARTITION子句必须包含(至少)子分区的一个名字 。
(5) 在每个子分区内,子分区的名字必须是惟一的,目前在整个表中,也要保持唯一 。例如:
子分区可以用于特别大的表,可以在多个磁盘间分配数据和索引 。例如:
九、MySQL分区处理NULL值的方式
十、分区管理概述
可以对分区进行添加、删除、重新定义、合并或拆分等管理操作 。
① RANGE和LIST分区的管理
1. 删除分区语句如:alter table tbl_test drop partition p0;
注意:
(1) 当删除了一个分区,也同时删除了该分区中所有的数据 。
(2) 可以通过show create table tbl_test;来查看新的创建表的语句 。
(3) 如果是LIST分区的话,删除的数据不能新增进来 , 因为这些行的列值包含在已经删除了的分区的值列表中 。
推荐阅读
- 过关小游戏经营,过关小游戏经营类游戏
- 游戏怎么用显卡截图快捷键,怎么用显卡玩游戏
- 微信公众号直播怎么做的,微信公众号直播怎么弄
- 包含python内建函数使用的词条
- 即时战略游戏情侣网名,好玩的即时战略类游戏
- 字符串的截取方式js,截取字符串的函数js
- php源码自带数据库 php+mysql源码
- word文件怎么用微信发,word文件怎么用微信发送
- ios怎么变为ghost,iso改成gho