MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 2436|回复: 0
打印 上一主题 下一主题

[表及表类型] 学习MySQL分区(1)-什么是分区

[复制链接]
跳转到指定楼层
1#
发表于 2014-6-3 11:06:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  
学习MySQL分区(1)-什么是分区
  
关于分区
  
MySQL从5.1版本开始支持分区,基本上可以分成几类:
  

       
  • RANGE分区
       
  • HASH分区
       
  • LIST分区
       
  • COLUMNS分区
       
  • KEY分区
       
  • 复合分区
      
  
MySQL支持使用大部分存储引擎创建分区表,但不支持使用MERGE或CSV存储引擎来创建分区表。在MySQL 5.6版本中,同一个分区表的所有分区必须使用同一个存储引擎。但是,可以在同意个MySQL服务器中,甚至同一个数据库中,对不同的分区表使用不同的存储引擎。
  
对于任何类型的MySQL分区,分区键都必须建在主键/唯一键字段上,除非分区表上没有主键/唯一键。
  
  对于索引,MySQL分区表上的创建索引一定是本地LOCAL索引,即不能只对表数据分区而不对索引分区,反过来也不能只对索引分区而不对表分区。
  
  MySQL创建分区的好处包括可存储更多数据,优化查询,便于删除旧数据,以及增加吞吐量等方面,这里不多论述,而将重点放在分区类型的选择和实现上。
  
一、 什么时候使用Range分区
  
Range 分区是应用范围比较广的分区方式,它是以取值范围为条件来将数据划分成分区,将数据存放到列值所在的range分区中,取值区间要连续并且不能互相重叠。比如按照时间划分,2014年1季度的数据放到a分区,2季度的数据放到b分区,因此在创建的时候呢,需要你指定基于的列,以及分区的范围值,如果某些记录暂无法预测范围,可以创建maxvalue分区,所有不在指定范围内的记录都会被存储到maxvalue所在分区中。
  
Range分区功能在以下两种情况特别适用。
  

       
  • 经常运行包含分区键地查询,MySQL可以只扫描某一个或者某些在Range范围内的分区。
       
  • 当需要删除过期数据库时,只需要简单的删除某些分区,这笔运行一个DELETE语句效率高。
      
  
二、 什么时候使用Hash分区
  
  Hash分区主要用来分散热点读,确保数据在各个分区中尽量平均分布。通常呢,对于那些无法有效划分范围的表,可以使用hash分区,这样对于提高性能还是会有一定的帮助。hash分区表的列所在分区是依据分区列的hash值自动分配,因此你并不需要控制哪条记录放到哪个分区中。
  
三、 什么时候使用List分区
  
  List 分区与range分区有很多类似之处,该分区与range分区类似的是也需要你指定列的值,但这又不同与range分区的范围式列值---其分区值必须明确指定。
  
你在分区时必须确定分区列可能存在的值,一旦插入的列值不在分区范围内,则插入/更新就会失败, list分区并不存在类似range分区中的maxvalue分区。
  
从MySQL 5.5版本开始支持非整数分区,之前的版本只支持整数分区。
  
四、 什么时候使用Columns分区
  
Columns分区是在MySQL 5.5中引入的分区类型,解决了之前版本的RANGE分区和LIST分区只支持整数分区的问题。Columns分区分为RANGE Columns分区和LIST Columns分区,这两种分区都支持整数、日期时间、字符串三大数据类型。此外,Columns分区的另外一大亮点就是支持多列分区。
  
五、 什么时候使用Key分区
  
Key进行分区类似于HASH分区,区别在于HASH分区允许用户使用自定义的表达式,而Key分区不允许使用用户自定义的表达式,需要使用MySQL服务器提供的HASH函数;同时HASH分区只支持整数分区,而Key分区支持使用BLOB或Text雷系外其他雷系的列作为分区键。
  
四、 什么时候使用复合分区
  
  如果某表按照某列分区之后,仍然较大,或者是一些其它的需求,还可以对分区再次分割,用创建子分区的方式将分区再分区,即复合分区。
  
从MySQL 5.1开始支持对RANGE分区或者LIST分区再进行子分区,子分区可以是Hash分区或KEY分区。
  
  
  

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶1 踩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-5-3 18:46 , Processed in 0.068264 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表