码迷,mamicode.com
首页 > 数据库 > 详细

小贝_mysql分区理论学习

时间:2015-07-25 00:13:13      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:mysql   优化   

mysql分区

简要:

一、为什么需要mysql分区

二、mysql分区的类型

三、mysql分区技术对比

 

一、为什么需要mysql分区

1、首先,业务数据增大时,必然会影响数据操作。通常针对大数据,有如下优化方法:

              a、大表拆小表

              b、sql语句优化

2、不足:

a、sql语句优化可以通过增加索引等来调整,但是随着数据量增大时将会导致索引的维护代价增大

b、大表拆分小表可以在细分为垂直or水平分表。但是需要实现逻辑操作。即选择那张表

3、总结: 针对大数据,添加索引会导致索引文件大以及维护索引代价大,拆分表,就需要实现逻辑操作。因此,这里需要用到mysql分区。分区其实从本质上也是实现了拆分小表的做法。是基于物理层面上进行拆分成小表,无须实现逻辑操作,对用户而言是透明的。

 

二、mysql分区类型

1、range分区: 基于给定连续区间的列值,把多行分配给分区

2、list分区: 类似于按range分区,区别在于list分区是基于列值匹配一个离散值集合中的某个值来进行选择

3、hash分区: 基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算,这个函数可以包含mysql中有效的、产生非负整数值得任何表达式

4、key分区: 类似于hash分区,区别在于key分区只支持计算一列或多列,且mysql服务器提供自身的哈希函数

总结: 使用优先级 range>list>hash>key

        hash一般用于测试分区

 

三、mysql分区技术对比

分区名称

优点

缺点

共性

range

适合与日期类型,支持复合分区

有限的分区

一般只针对某一列

list

适合与有固定取值的列,支持复合分区

有限的分区,插入记录在这一列的值不在list中,则数据丢失

一般只针对某一列

hash

线性hash使得增加、删除和合并分区更快捷

线性hash的数据分布不均匀,而一般hash的数据分布均匀

一般只针对某一列

key

列可以为字符串等其它非int类型

效率较之前的低,因为函数为复杂的函数如md5或sha函数

一般只针对某一列

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

小贝_mysql分区理论学习

标签:mysql   优化   

原文地址:http://blog.csdn.net/u014795720/article/details/47049433

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!