一、基本理论
在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型 |
函数比较复杂,效率比较低 |
一般只针对某一列 |
本文转自shayang8851CTO博客,原文链接:http://blog.51cto.com/janephp/1305220,如需转载请自行联系原作者