千家信息网

初步了解Mysql 分区知识

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文主要给大家介绍Mysql 分区知识,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下Mysql 分区知识吧。一、分区类型1. RANGE类型(
千家信息网最后更新 2026年11月02日初步了解Mysql 分区知识

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

一、分区类型
1. RANGE类型(范围分区)

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

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

咱们看一个创建的例子

CREATE TABLE `t1` (  `id` int(11) NOT NULL,  `uid` int(11) NOT NULL COMMENT '用户id',  `score` int(3) NOT NULL DEFAULT '0' COMMENT '分数',  PRIMARY KEY (`id`,`score`)) ENGINE=InnoDB DEFAULT CHARSET=utf8PARTITION BY RANGE (score)(PARTITION p0 VALUES LESS THAN (10) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (20) ENGINE = InnoDB, PARTITION p2 VALUES LESS THAN (30) ENGINE = InnoDB, PARTITION p3 VALUES LESS THAN (40) ENGINE = InnoDB)

创建了个t1表, 并且t1有四个分区, 第一个分区p0的范围是小于10的, 第二个是小于20的。这就是一个range分区的例子。

那为啥主键定义的是双主键呢? 因为分区键(score) 必须也是主键或者唯一键的一部分。

Range分区的详细介绍请看Mysql 分区介绍(二) -- RANGE分区

2. LIST分区

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

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

create table t2 (    id int not null,    uid int not null comment '用户id',    score int(3) not null default 0 comment '分数',    primary key(id, uid))partition by list(uid) (    partition p0 values in (1,3,5,7,9),    partition p1 values in (2,4,6,8,10))

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

Range分区的详细介绍请看Mysql 分区介绍(三) -- LIST分区

3. COLUMNS 分区

COLUMNS和以上两种是很不一样的, 这个是可以用多个分区键确定分区的。有两种方式, RANGE COLUMNS 和 LIST COLUMNS

1. RANGE COLUMNS 分区

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

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

create table t3 (    a int,    b int,    c char(3),    d int)PARTITION BY RANGE COLUMNS(a,d,c) (PARTITION p0 VALUES LESS THAN (5,10,'ggg'),PARTITION p1 VALUES LESS THAN (10,20,'mmm'),PARTITION p2 VALUES LESS THAN (15,30,'sss'))

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

RANGE COLUMNS分区的详细介绍请看Mysql 分区介绍(四) -- RANGE COLUMNS分区

2. LIST COLUMNS 分区

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

还是看例子吧

CREATE TABLE customers_1 (    first_name VARCHAR(25),    last_name VARCHAR(25),    street_1 VARCHAR(30),    street_2 VARCHAR(30),    city VARCHAR(15),    renewal DATE)PARTITION BY LIST COLUMNS(city) (    PARTITION pRegion_1 VALUES IN('Oskarshamn', 'Högsby', 'Mönsterås'),    PARTITION pRegion_2 VALUES IN('Vimmerby', 'Hultsfred', 'Västervik'),    PARTITION pRegion_3 VALUES IN('Nässjö', 'Eksjö', 'Vetlanda'),    PARTITION pRegion_4 VALUES IN('Uppvidinge', 'Alvesta', 'Växjo'));

LIST COLUMNS分区的详细介绍请看Mysql 分区介绍(五) -- LIST COLUMNS分区

3. HASH分区

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

CREATE TABLE employees (    id INT NOT NULL,    fname VARCHAR(30),    lname VARCHAR(30),    hired DATE NOT NULL DEFAULT '1970-01-01',    separated DATE NOT NULL DEFAULT '9999-12-31',    job_code INT,    store_id INT)PARTITION BY HASH(store_id)PARTITIONS 4;

HASH分区的详细介绍请看Mysql 分区介绍(六) -- HASH分区

4. KEY分区

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

CREATE TABLE k1 (    id INT NOT NULL PRIMARY KEY,    name VARCHAR(20))PARTITION BY KEY()PARTITIONS 2;

KEY分区的详细介绍请看Mysql 分区介绍(七) -- KEY分区

5. 子分区

子分区也称为复合分区, 在分区的基础上进一步进行分区的方式

CREATE TABLE ts (id INT, purchased DATE)PARTITION BY RANGE( YEAR(purchased) )SUBPARTITION BY HASH( TO_DAYS(purchased) )SUBPARTITIONS 2 (    PARTITION p0 VALUES LESS THAN (1990),    PARTITION p1 VALUES LESS THAN (2000),    PARTITION p2 VALUES LESS THAN MAXVALUE);

看完以上关于Mysql 分区知识,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。

范围 类型 请看 例子 多个 就是 还是 知识 方式 数据 函数 分数 数字 服务器 用户 笔者 行业 哈希 服务 明显 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 蓝思科技飞鸽互联网 江苏根荣互联网科技 科技赋能下的互联网金融 上海喔噻互联网科技 互联网科技股有哪些 多迪互联网科技有限公司 天扬科技互联网广告 甘肃拓世互联网科技有限公司 深圳市运趣互联网科技有限公司 广州慧亚互联网科技怎么样 福建科技产业互联网发展 昭通互联网科技选哪家 宝灵互联网科技有限公司 威龙国际互联网科技公司 长沙互联网科技 互联网企业科技类企业如何做账 北京市互联网新科技 中国互联网有什么科技 玉溪新华互联网科技怎么选 高科技和互联网的现代国家 喔噻互联网科技 互联网科技股票 唐信互联网科技 深圳国际航运科技和互联网 小米互联网科技园设置 贵州叶脉互联网科技有限公司所属行业 互联网金融中的现代科技 广西互联网科技孵化中心 工业互联网等科技实现智能化赋能 华人运通互联网科技公司
0