mysql分区表测试分析和总结.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
主要内容包括MySQL分区的基本概念MySQL分区类型以及常见分区操作推荐使用范围分区或list分区以实现更好的性能在使用过程中需要注意分区的选择,以及如何使用MySQL的索引功能以提高效率最后,总结为MySQL分区的优缺点,并强调了分区的高效性和可扩展性

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)

tianya189 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档