分区是指根据一定的规则,数据库把一个表分解成多个更小的、更容易管理的部分。就访问数据库的应用而言,逻辑上只有一个表或一个索引,但是实际上这个表可能由数10个物理分区对象组成,每个分区都是一个独立的对象,可以独自处理,可以作为表的一部分进行处理。分区对应用来说是完全透明的,不影响应用的业务逻辑。
MySQL分区的优点主要包括以下4个方面。
(1)和单个磁盘或者文件系统分区相比,可以存储更多数据。
(2)优化查询。在Where子句中包含分区条件时,可以只扫描必要的一个或多个分区来提高查询效率;同时在涉及sum()和count()这类聚合函数的查询时,可以容易地在每个分区上并行处理,最终只需要汇总所有分区得到的结果。
(3)对于已经过期或者不需要保存的数据,可以通过删除与这些数据有关的分区来快速删除数据。
(4)跨多个磁盘来分散数据查询,以获得更大的查询吞吐量。
MYSQL分区类型有以下4中方式。
(1)range分区:基于一个给定连续区间范围,把数据分配到不同的分区。
(2)list分区:类似range分区,区别在list分区是基于枚举出的值列表分区,range是基于给定的连续区间范围分区。
(3)hash分区:基于给定的分区个数,把数据分配到不同的分区。
(4)key分区:类似于hash分区,区别在key分区可以使用除blob或text类型外的其他类型的字段,hash分区只能使用int类型的字段。
网友评论