一、分区概念
分区是指允许根据指定的规则,跨文件系统分配单个表的多个部分。表的不同部分在不同的位置被存储为单独的表。
通俗地讲表分区是将一张大表,根据条件分割成若干个小表。数据库存存储的时候会存在多个文件中。而对于程序或者数据库来说,依旧是一张表,就是将mysql相关的数据文件,分成了多个存储。 【MYSQL 5.1之后支持分区】
二、为什么要对表进行分区
为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率。
分区的一些优点包括:
1)、与单个磁盘或文件系统分区相比,可以存储更多的数据。
2)、对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有关的分区,很容易地删除那些数据。相反地,在某些情况下,添加新数据的过程又可以通过为那些新数据专门增加一个新的分区,来很方便地实现。
3)、一些查询可以得到极大的优化,这主要是借助于满足一个给定WHERE语句的数据可以只保存在一个或多个分区内,这样在查找时就不用查找其他剩余的分区。因为分区可以在创建了分区表后进行修改,所以在第一次配置分区方案时还不曾这么做时,可以重新组织数据,来提高那些常用查询的效率。
4)、涉及到例如SUM()和COUNT()这样聚合函数的查询,可以很容易地进行并行处理。这种查询的一个简单例子如 “SELECT COUNT (*) from user;”。 并行这意味着该查询可以在每个分区上同时进行,最终结果只需通过总计所有分区得到的结果。
5)、通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量。
三、mysql几种分区类型说明:
分区类型 | 特点 | |
RANGE分区 | 允许将数据划分不同范围。 例如:可以将一个表通过年份划分成若干个分区,或者是按照id的值范围进行划分。 | |
LIST分区 | 这种模式允许系统通过预定义的列表的值来对数据进行分Values In (1,2,3) 例如:将用户按照地图进行划分【省id 1,2,3在一个分区 4,5,6在一个分区等】 | |
Hash分区 | 这中模式允许通过对表的一个或多个列的Hash Key进行计算,最后通过这个Hash码不同数值对应的数据区域进行分区。 例如:可以建立一个对表主键进行分区的表【根据hash算法将数据平均分配在分区内】 | |
Key分区 | 上面Hash模式的一种延伸,这里的Hash Key是MySQL系统产生的 |