一:为什么要进行分区(partition)
需求:大数据。解决办法:分而治之。将大表和大数据分为更小的操作单元。在Mysql中允许将表、索引和索引编排分为索引编排表细分为更小的单元。分区后,每个分区有自己单独的名称。对于DBA来讲,这些分区可以统一管理,也可以分开管理。但是对于应用程序来讲,分区的表和没有分区的表示是一样的。换句话说分区对于应用程序是透明的,只不过是数据库对于数据的重新整理。
二:分区的作用
(1)提升性能
没有分区前,数据每次在查询和检索总是面向的是整个数据库和表。分区之后,mysql针对每个分区生成特定的数据文件与索引文件。每次只会检索特定的部分数据,因此可以更好的来执行和维护数据库。究其原因还是因为在分区之后表指派到不同的物理驱动上,这样可以同时访问多个分区时减少物理I/O争用。
(2)易于管理
对于一些无用的冗余的历史数据,可以分区之后直接删除相应的分区。操作起来更加简便,因为执行数以万计的数据远比直接删除文件来的困难的多、时间也更加的长。
(3)容错
分区之后相比分区之前,一张表从之前一个文件分为现在三个文件。分区之后即使一个文件出现破坏,也不坏影响其他数据。
三:常用的分区方法
RANGE分区
LIST分区
HASH分区
KEY分区
RANGE分区
俗称:范围分区。根据表的字段值,依据给定某段连续的区间来分区。
LIST分区
俗称:列表分区。其实list分区和range分区应该说都是一样的,不同的是range分区在分区时的依据是一段连续的区间,而list分区针对的分区时一组分布的散列值。
HASH分区
哈希分区主要是依据表的某个字段以及指定分区的数量。
KEY分区
和hash分区类似,mysql默认使用表的主键或唯一键进行区分