谈谈Mysql分区
Mysql存储是以文件形式存储在磁盘上的,一张表对应的三个文件,分别是:frm(frame)存放表结构,myd存放表数据,myi存放表索引
当数据量太大时,myd和myi就会过大,查询就会变慢,这个时候我们就会用到mysql分区功能,将一张表对应的三个分区分成许多小块。
介绍:
@1.Mysql5.1以后才支持分区功能
@2.分区分为:横向分区和纵向分区,mysql提供的分区是横向分区。(也就是简单的将数据横向分为几个平等的区,例如:100w数据,平等分为10个区,每个区10w)
@3.横向分区的的方式:range分区,list分区,hash分区,key分区
range分区:这种模式允许将数据划分不同范围。例如可以将一个表通过年份划分成若干个分区
list分区: 这种模式允许系统通过预定义的列表的值来对数据进行分割。
hash分区: 这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。例如可以建立一个对表主键进行分区的表。
key分区: 上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的。
子分区:子分区是分区表中每个分区的再次分割,子分区既可以使用HASH分区,也可以使用KEY分区。这也被称为复合分区(composite partitioning)。