mysql处理少量数据非常方便,但是当表中数据量过大,进行增删改查操作时就会很慢。mysql的数据处理瓶颈是百万级,但是随着业务的深入,业务量的增多,存储的数据肯定会上升到千万级以上,这个时候就要对表进行处理了。前期阶段可以先对表进行水平或垂直拆分处理,后期可能就需要进行分库等操作了,本文只是对表的分区进行总结。
mysql的表分区包括range、list、hash、hash线性、key分区等等这几种。
range分区:每个分区都是一个连续的区间,分区的区间不能重复,也就是不能有交集
list分区:list分区与range分区类似,简单区别在于list分区的值是枚举的
hash分区:支持表达式,它的特点是已经提前预定好分几个区了,分区字段是整数或者表达式结果是整数。比如确定做20个分区。
hash线性分区:相对于hash分区,它处理增删改操作,以及分区的删除或合并操作非常快捷,缺点是数据分布不太均匀。
key分区:类似hash分区,不支持自定义表达式,支持除了blob和text字段以外的其它类型进行分区。默认以主键或唯一键分区,没有的话必须制定主键或唯一键。
对表进行分区,需要注意一些问题。
1、查看数据库是否支持表分区。
2、如果对表的某个列进行分区,那么主键中必须包含此列(以range分区为例)
如上图,主键中并没有包含ext_int,所以以ext_int进行分区的话,就会报错。