MySQL 的分区

来源:互联网 发布:乐商店软件下载 编辑:程序博客网 时间:2024/06/03 16:56

一、分区概念 

分区是指允许根据指定的规则,跨文件系统分配单个表的多个部分。表的不同部分在不同的位置被存储为单独的表

通俗地讲表分区是将一大表,根据条件分割成若干个小表。数据库存存储的时候会存在多个文件中而对于程序或者数据库来说,依旧是一张表,就是将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系统产生的