千家信息网

初步了解Mysql 分区知识

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本文主要给大家介绍Mysql 分区知识,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下Mysql 分区知识吧。一、分区类型1. RANGE类型(
千家信息网最后更新 2025年11月07日初步了解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安全错误 数据库的锁怎样保障安全 网络安全项目峻工验收程序 崇明区通用软件开发服务厂家直销 宜春头条网络安全周 互联网科技的名言警句 数据库 ha 数据库怎么设计是与否 瀑布软件开发周期 mysql 查数据库名称 上海管理软件开发收费多少 腐蚀怎么看服务器地图大小 sql语句更新数据库怎么写 网络安全和信息通报工作情况 服务器里面的副本怎么做 易语言创建与数据库登录界面 新乡市点墨网络技术工作室 安徽高科技网络安全 网吧服务器回收多少钱一台 互联网对科技发展有什么好处 开发一个服务器至少要多长时间 sdk表示软件开发包的是 软件开发一般用多少系数 数据库字段的检查 新吴区项目软件开发代理品牌 随着计算机网络技术的应用和发展 方舟手游永久pve服务器 云数据库包括什么地方 徐州手机软件开发管理 网络技术开发实训报告 网络安全授权有什么好处 成都移动教育系统开发软件开发
0