MySQL分区

来源:互联网 发布:淘宝评价福利图 编辑:程序博客网 时间:2024/04/30 21:47

1、分区概述

分区键:根据某个区间值(或者范围值)、特定值列表或者hash函数值执行数据的聚集,让数据根据规则分布在不同的分区中,让一个大对象变成一些小对象。

用show variables命令确定当前的mysql是否支持分区。

show variables like '%partition%'


用show   plugins命令能检查当前版本是否安装了分区插件。


MySQL支持MyISAM、InnoDB、Memory等存储引擎创建分区,不支持使用merge或csv存储引擎来创建分区。


5.1中,同一个分区表的所有分区必须使用同一个存储引擎,即同一个表上,不能对一个分区使用MyISAM引擎,对另一个分区使用innoDB

可以在同一个MySQL服务器中,甚至同一个数据库中,对于不同的分区表使用不同的存储引擎。


分区表设置存储引擎,只能用[storage]engine子句,且必须列在create table语句中的其他任何分区选项之前。


MySQL的分区适用于一个表的所有数据和索引,不能只对表数据分区而不对索引分区;也不能只对索引分区而不对表分区,同时也不能只对表的一部分数据进行分区。MySQL的分区表上创建的索引一定是本地的LOCAL索引。


2、分区类型

RANGE分区:基于一个给定连续区间范围,把数据分配到不同的分区

LIST分区:基于枚举出的值列表分区,RANGE是基于给定的连续区间范围分区。

HASH分区:基于给定的分区个数,把数据分配到不同的分区。

KEY分区:类似于HASH分区。


不能使用主键/唯一键字段之外的其他字段分区。数据库和表名区分大小写,分区的名字是不区分大小写的。


(1)range分区

利用取值范围将数据分成分区,区间要连续并且不能互相重叠,使用values  less than操作符进行分区定义。

(2)list分区

从一个枚举列表的值的集合,而range分区是从属于一个连续区间值的集合。

(3)columns分区

分为range columns和list columns

(4)hash分区

分散热点读!确保数据在预先确定个数的分区中尽可能平均分布。

常规hash分区取模和线性hash分区线性的2的幂的运算法则

(5)key分区

不允许使用用户自定义的表达式,需要使用MySQL服务器提供的hash函数。支持除blob or text类型外其他的列作为分区键。

(6)子分区

分区表中对每个分区的再次分割。支持对已经通过range或者list分区了的表再进行子分区,子分区既可以使用hash分区,也可以使用key分区。


3、mysql分区处理NULL值的方式

(1)mysql不禁止在分区键上使用null,一般mysql的分区把null当做0值,或者一个最小值进行处理。

(2)range分区中,null被当做最小值来处理;

         list分区中,null值必须初夏你在枚举列表中,否则不被接受

         hash/key分区中,null值会被当做0值来处理。


4、分区管理













0 0