一、基本理论

在mysql大数据处理上,水平分表技术是很常用的,但是分表技术带来了PHP处理的很大开销,为了解决这个弊端Mysql5.1以后以插件的方式增加了一个新的技术--分区技术。

分区技术是在逻辑层进行的水平分表,对于应用程序而言还是一张表,Mysql5.1有4种分区类型

1、RANGE:基于属于一个给定连续区间的列值,把多行分配给分区。

2、LIST :类似于RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行 选择

3、HASH :基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些列值进行计算,这个函数可以包含MySQL中有效的、产生非负整数值的任何表达式。

4、KEY :类似于HASH,区别在于KEY 分区只支持计算一列或多列,且MySQL提供其自身的哈希函数。

二、不同分区技术对比

类型
优点
缺点
共性
RANGE
适合日期类型,支持复合分区
有限的分区
一般只针对某一列
LIST
适合有固定取值的列,支持复合分区
有限的分区,插入记录这一列的值不再list中,数据会丢失
一般只针对某一列
HASH
线性Hash使增加、删除和合并分区更快捷
线性Hash数据分布不均匀,而一般的Hash数据分布比较均匀
一般只针对某一列
KEY
列可以是字符等其他非int型
函数比较复杂,效率比较低
一般只针对某一列