mysql怎么分割 mysql怎么分割表( 四 )


比如 根据字段 把值为1、3、5的放到一起,2、4、6的另外放到一起 等等...
3. HASH分区:基于用户定义的表达式的返回值来进行选择分区,该表达式使用将要插入到表中的这些行的列值来进行计算,这个函数必须产生非负整数值 。
通过HASH运算来进行分区,分布的比较均匀
4. KEY分区:类似于按HASH分区 , 由MySQL服务器提供其自身的哈希函数 。
按照KEY进行分区类似于按照HASH分区
六、使用分区注意事项
1. 如果表中存在primary key 或者 unique key 时 , 分区的列必须是paimary key或者unique key的一个组成部分,也就是说 , 分区函数的列只能从pk或者uk这些key中取子集
2. 如果表中不存在任何的paimary key或者unique key,则可以指定任何一个列作为分区列
3. 5.5版本前的RANGE、LIST、HASH分区要求分区键必须是int;MySQL5.5及以上,支持非整形的RANGE和LIST分区,即:range columns 和 list columns (可以用字符串来进行分区) 。
七、分区命名
1. 分区的名字基本上遵循其他MySQL 标识符应当遵循的原则,例如用于表和数据库名字的标识符 。应当注意的是,分区的名字是不区分大小写的 。
2. 无论使用何种类型的分区 , 分区总是在创建时就自动的顺序编号,且从0开始记录 。
八、 创建分区
1. RANGE分区:
解读:以上为 uuid小于5时放到p0分区下 , uuid大于5且小于10放到p1分区下,uuid大于10且小于15放到p2分区下,uuid大于15 一直到最大值的存在p3分区下
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. 子分区
【mysql怎么分割 mysql怎么分割表】

推荐阅读