MySQL的分区表(的分区表(PartitionedTable)功能详解)功能详解
MySQL分区简介
数据库分区
数据库分区是一种物理数据库设计技术。其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时
间,同时对于应用来说分区完全是透明的。
分区的作用
数据库性能的提升和简化数据管理,在扫描操作中MySQL优化器只扫描数据的那个分区以减少扫描范围获得性能的提高。分
区技术使得数据管理变得简单,删除某个分区不会对另外的分区造成影响。MySQL从5.1版本开始支持分区,同个表中的分区
表名称要唯一
MYSQL的分区形式
主要有两种形式:水平分区和垂直分区
水平分区
这种形式的分区是根据表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割
(单分区)或集体分割(1个或多个分区)。所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。水
平分区一定要通过某个属性列来分割。常见的比如年份,日期等。
垂直分区(VerticalPartitioning)
这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了
其中的列所对应所有行。
可以用 show variables like '%parts%' 命令查询当前的MySQL数据库版本是否支持分区。
MySQL分区类型
现详细介绍下水平分区。水平分区根据所使用的不同分区规则可以分成几大分区类型。
RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。
LIST分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这
个函数可以包含MySQL中有效的、产生非负整数值的任何表达式。
KEY分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提供其自身的哈希函数。必须
有一列或多列包含整数值。
复合分区:基于RANGE/LIST 类型的分区表中每个分区的再次分割。子分区可以是 HASH/KEY等类型。
创建分区表
创建range分区
以价格为依据做范围分区,这里最值得注意的是表达式必须有返回值。
创建list分区
以分类作为分区依据,每个分类做一分区。
创建hash分区
HASH分区主要用来确保数据在预先确定数目的分区中平均分布。在RANGE和LIST分区中,必须明确指定一个给定的列值或
列值集合应该保存在哪 个分区中;而在HASH分区中,MySQL 自动完成这些工作,你所要做的只是为将要被哈希的列值指定
一个列值或表达式,以及指定被分区的表将要被分割成的分区数量。
创建key分区
评论0