一、基本理论
在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型 | 函数比较复杂,效率比较低 | 一般只针对某一列 |