- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
MYSQL分区表测试
一、mysql分区简介
数据库分区
数据库分区是一种物理数据库设计技术。虽然分区技术可以实现很多效果,但其主要目的是为了在特定的SQL操作中减少数据读写的总量以缩减sql语句的响应时间,同时对于应用来说分区完全是透明的。
MYSQL的分区主要有两种形式:水平分区和垂直分区
水平分区(HorizontalPartitioning)
这种形式的分区是对根据表的行进行分区,通过这样的方式不同分组里面的物理列分割的数据集得以组合,从而进行个体分割(单分区)或集体分割(1个或多个分区)。
所有在表中定义的列在每个数据集中都能找到,所以表的特性依然得以保持。水平分区一定要通过某个属性列来分割。常见的比如年份,日期等。
垂直分区(VerticalPartitioning)
这种分区方式一般来说是通过对表的垂直划分来减少目标表的宽度,使某些特定的列被划分到特定的分区,每个分区都包含了其中的列所对应所有行。
可以用 showvariableslike%partition%;命令查询当前的mysql数据库版本是否支持分区。分区的作用:数据库性能的提升和简化数据管理
在扫描操作中,mysql优化器只扫描保护数据的那个分区以减少扫描范围获得性能的提高。分区技术使得数据管理变得简单,删除某个分区不会对另外的分区造成影响,分区有系统直接管理不用手工干预。
mysql从5.1版本开始支持分区。每个分区的名称是不区分大小写。同个表中的分区表名称
要唯一。
二、mysql分区类型
根据所使用的不同分区规则可以分成几大分区类型。
RANGE分区:
基于属于一个给定连续区间的列值,把多行分配给分区。
LIST分区:
类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
HASH分区:
基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL中有效的、产生非负整数值的任何表达式。KEY
分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL服务器提
供其自身的哈希函数。必须有一列或多列包含整数值。复合分区:
基于RANGE/LIST类型的分区表中每个分区的再次分割。子分区可以是HASH/KEY等类型。
三、mysql分区表常用操作示例
以部门员工表为例子:
创建range分区
createtableemp
(empnovarchar(20)notnull,empnamevarchar(20),
deptnoint,birthdatedate,salaryint
)
partition
by
range(salary)
(
partition
p1
valueslessthan
(1000),
partition
p2
valueslessthan
(2000),
partition
p3
valueslessthan
maxvalue
);
以员工工资为依据做范围分区。
createtableemp
(empnovarchar(20)notnull,empnamevarchar(20),
deptnoint,
birthdatedatenotnull,salaryint
)
partitionbyrange(year(birthdate))(
partition
p1
values
less
than
(1980),
partition
p2
values
less
than
(1990),
partition
);
p3
values
less
than
maxvalue
以year(birthdate)表达式(计算员工的出生日期)作为范围分区依据。这里最值得注意的是表达式必须有返回值。
创建list分区
createtableemp
(empno varchar(20)notnull,empnamevarchar(20),
deptno int,
birthdatedatenotnull,salaryint
)
partition
by
list(deptno)
(
partition
p1
valuesin (10),
partition
p2
valuesin (20),
partition
p3
values in (30)
);
以部门作为分区依据,每个部门做一分区。
创建hash分区
HASH分区主要用来确保数据在预先确定数目的分区中平均分布。在RANGE和LIST分区中,
文档评论(0)