初步了解Mysql分区知识

  

本文主要给大家介绍Mysql分区知识,文章内容都是笔者用心摘选和编辑的,具有一定的针对性、对大家的参考意义还是比较大的、下面跟笔者一起了解下Mysql分区知识吧。

一、分区类型
1。范围类型(范围分区)

通过范围的方式进行分区,为每个分区给出一定的范围,范围必须是连续的并且不能重复,使用值小于操作符

啥意思呢?就是范围类型就是一种范围,比如,从1到10,11日至20日,21 - 30这种的方式分区,1 - 10就在一个分区里,11日至20日是另外一个分区,但是看起来他们还是同一个表& lt; br/祝辞

咱们看一个创建的例子

 CREATE TABLE t1 (
  ,“id”int(11)不是零,
  ,“uid”int (11) NOT NULL评论& # 39;用户id # 39;,
  ,“分数”int (3) NOT NULL默认& # 39;0 & # 39;评论& # 39;分数& # 39;,
  ,主键(“id”、“分数”)=InnoDB默认字符集=utf8)引擎
  范围分区(分数)
  (分区p0值小于=InnoDB(10)引擎,
  分区p1值小于=InnoDB(20)引擎,
  分区p2值小于=InnoDB(30)引擎,
  分区p3值小于(40)引擎=InnoDB) 

创建了个t1表,并且t1有四个分区,第一个分区p0的范围是小于10的,第二个是小于20的。这就是一个范围分区的例子。& lt; br/祝辞
那为啥主键定义的是双主键呢?因为分区键(分数)必须也是主键或者唯一键的一部分。

范围分区的详细介绍请看Mysql分区介绍(二)——范围分区

2。列表分区

列表不同分于范围区,每个分区必须被显式的定义,每个分区是根据列值的成员在一组列表中的元素定义的

这说的有点乱,还是直接看一个创建的例子吧

创建表t2 (
  ,,int id不空,
  ,,uid int not null评论& # 39;用户id # 39;,
  ,,得分int (3) not null默认0评论& # 39;分数& # 39;,
  ,uid,主键(id)
  )
  分区的列表(uid) (
  ,,分区p0值(1、3、5、7、9),
  ,,分区p1值(2、4、6、8、10)
  )

t2的分区键是uid,有两个分区(这个很明显嘛),如果的uid(1、3、5、7、9),那么这条数据就会保存在p0中,如果是2,4,6,8,10的话,就会在p1中,这就是列表分区

范围分区的详细介绍请看Mysql分区介绍(三)——列表分区

3。列分区

列以上两种是很不一样的,这个是可以用多个分区键确定分区的。有两种方式,范围列和列列表

1。范围列分区

类似分范围区,但是可以使用一个或多个字段值定义

不太好理解…还是看例子吧

创建表t3 (
  ,,一个int,
  ,b, int,
  ,,c char (3),
  ,,d int
  )
  范围分区的列(d c) (
  分区p0值小于(5 10 & # 39;ggg& # 39;),
  分区p1值小于(10年,20年,& # 39;嗯,),
  分区p2值小于(15日30日& # 39;瑞士# 39;)
  )

分区键有多个,并且都是范围的,就是范围列分区

范围列分区的详细介绍请看Mysql分区介绍(四)——范围列分区

2。名单列分区

Mysql 5.6开始支持列表列分区,可以开始使用多个列作为分区的键,并且列的数据类型除了数字类型可以作为分区列;你也可以使用字符串类型、日期和DATETIME

还是看例子吧

创建表customers_1 (
  ,,first_name VARCHAR (25),
  ,,last_name VARCHAR (25),
  ,,street_1 VARCHAR (30),
  ,,street_2 VARCHAR (30),
  ,,城市VARCHAR (15),
  ,,更新日期
  )
  分区通过列表列(市)(
  ,,分区pRegion_1值(& # 39;奥斯卡# 39;,& # 39;H ? gsby& # 39;, & # 39; M ?望远镜? & # 39;),
  ,,分区pRegion_2值(& # 39;Vimmerby& # 39;, & # 39; Hultsfred& # 39;, & # 39; V ? stervik& # 39;),
  ,,分区pRegion_3值(& # 39;N压? & # 39;,& # 39;Eksj ? & # 39;, & # 39; Vetlanda& # 39;),
  ,,分区pRegion_4值(& # 39;Uppvidinge& # 39;, & # 39; Alvesta& # 39;, & # 39; V ?指数# 39;)
  );

列表列分区的详细介绍请看Mysql分区介绍(五)——列表列分区

3。散列分区

使用分区键去确保数据可以均匀的分布在一个预先确定数字的分区上,在散列分区中,无需显式的指定分区

创建表员工(
  ,,INT id不空,
  ,帧VARCHAR (30),
  ,,lname VARCHAR (30),
  ,,雇用日期NOT NULL默认& # 39;1970 - 01 - 01 & # 39;,
  ,,分离NOT NULL默认日期& # 39;9999 - 12 - 31日& # 39;,
  ,job_code INT,
  ,,store_id INT
  )
  分区通过散列(可以)
  分区4;

散列分区的详细介绍请看Mysql分区介绍(六)——散列分区

4。关键分区

关键分区类似散列分区,接受0个或多个列名,关键分区的哈希函数由MySQL云服务器提供.NDB集群使用md5();使用其他存储引擎的表,云服务器采用自己的内部的哈希函数是基于相同的算法密码()。

初步了解Mysql分区知识