今天刚学习mysql分区技术,也是头一次写博客,以后慢慢养成好的学习习惯,加油!
mysql分区主要分为4种分区:
Range分区:按照RANGE分区的表是每个分区包含那些分区表达式的值位于一个给定的连续区间内的行
优点:适合于日期类型 支持复合分区
缺点:有限的分区
个人理解:根据分区字段 将字段值分为不同的范围
例: create table a(
id int not null,
fname varchar(30),
typeid int
)
parition by range(typeid){
parition po values less then (6),
parition p1 values less then (11),
parition p2 values less then maxvalue
};
表示 创建a表 包含三个字段 根据typeid字段进行range分区 分成3个区 (小于6 6-10 10以上三个区)
List分区:LIST分区中每个分区的定义和选择是基于某列的值从属于一个值列表集中的一个值,而RANGE分 区是从属于一个连续区间值的集合。
优点:适合于有固定值的列 支持复合分区
缺点:有限分区 插入的值不在list中 则数据丢失
个人理解:根据有固定值的分区字段 将另一字段的值分配在不同的区里
例:create table a(
id int not null,
typename varchar(30) COMMENT('东区','南区','北区') ,
typeid int
)
parition by list(typeid){
parition pnanqv values in (1,3,5,7,9),
parition pdongqv values in (2,4,6,8,10),
parition pbeiqv values in (11,12,13)
};
Hash分区:HASH分区主要用来确保数据在预先确定数目的分区中平均分布,你所要做的只是基于将要被哈希的列值指定一个列值或表达式,以 及指定被分区的表将要被分割成的分区数量
优点:线性hash使得增加 删除和合并分区更快捷
缺点:线性hash分区分布不均匀 而一般的hash分区较均匀
个人理解:根据分区字段平均分区
例:create table a(
id int not null,
typedate date COMMENT('1970-1-1') ,
typeid int
)
parition by hash(year( typedate)){
paritions 4
};
key分区:按照KEY进行分区类似于按照HASH分区,除了HASH分区使用的用 户定义的表达式,而KEY分区的 哈希函数是由MySQL 服务器提供
优点:列可以是字符型等其他非int类型
缺点:效率较其他的要低
学习网址:http://www.56.com/u31/v_NjkyNTIxNDg.html