返回顶部
首页 > 资讯 > 数据库 >初步了解Mysql 分区知识
  • 132
分享到

初步了解Mysql 分区知识

2024-04-02 19:04:59 132人浏览 安东尼
摘要

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

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

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

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

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

咱们看一个创建的例子

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=utf8
PARTITioN 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分区的例子。 <br />
那为啥主键定义的是双主键呢? 因为分区键(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 分区知识,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的数据库栏目的。

您可能感兴趣的文档:

--结束END--

本文标题: 初步了解Mysql 分区知识

本文链接: https://lsjlt.com/news/34542.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 初步了解Mysql 分区知识
    本文主要给大家介绍Mysql 分区知识,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下Mysql 分区知识吧。一、分区类型1. RANGE类型(范围分...
    99+
    2024-04-02
  • 三分钟了解mysql事务知识
    本文主要给大家简单讲讲mysql事务知识,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望mysql事务知识这篇文章可以给大家带来一些实际帮助。mysql事务;...
    99+
    2024-04-02
  • MySql分表、分库、分片和分区知识深入详解
    一、前言 数据库的数据量达到一定程度之后,为避免带来系统性能上的瓶颈。需要进行数据的处理,采用的手段是分区、分片、分库、分表。 二、分片(类似分库) 分片是把数据库横向扩展(Scal...
    99+
    2024-04-02
  • MySQL分区表有哪些知识点
    本篇内容介绍了“MySQL分区表有哪些知识点”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MySQL分区表...
    99+
    2024-04-02
  • 简单了解mysql基础知识
    下面一起来了解下mysql基础知识,相信大家看完肯定会受益匪浅,文字在精不在多,希望mysql基础知识这篇短内容是你想要的。           ...
    99+
    2024-04-02
  • 一文搞懂mysql的分区和分表知识
    下面一起来了解下mysql的分区和分表,相信大家看完肯定会受益匪浅,文字在精不在多,希望mysql的分区和分表这篇短内容是你想要的。mysql分表和分区1.mysql分表什么是分表?分表是将一个大表按照一定...
    99+
    2024-04-02
  • MySql分表、分库、分片和分区知识点有哪些
    这篇文章主要介绍了MySql分表、分库、分片和分区知识点有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、前言   ...
    99+
    2024-04-02
  • 了解 MySQL 中外键的基础知识?
    外键可用于创建表之间的关系。外键关系可以是一对一或一对多。外键与另一个表的另一个字段匹配。 一对一关系 - 一个表中的一条记录将链接到另一个表中的一条记录。 一对多关系 - 一条记录将链接到另一个表中的多条记录。 下面是一个例子。首先,我们...
    99+
    2023-10-22
  • 深入了解MySQL数据库事务知识
    下文主要给大家带来MySQL数据库事务知识,希望这些内容能够带给大家实际用处,这也是我编辑MySQL数据库事务知识这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。一、前言只有InnoDB引擎支持事务...
    99+
    2024-04-02
  • 11.初始JavaScript[初步了解何为js]
    文章目录 1.初识 JavaScript1.1JavaScript 是什么1.2发展历史1.3JavaScript 和 HTML 和 CSS 之间的关系1.4JavaScript 运行过程1....
    99+
    2023-10-27
    javascript 开发语言 ecmascript
  • vue中的.capture和.self区分及初步理解
    目录.capture和.self区分修饰符capture和selfcaptureself.capture和.self区分 capture和self主要是函数执行顺序的问题 .capt...
    99+
    2024-04-02
  • 《初步了解JVM》第1章
    大家都知道,Java中JVM的重要性,学习了JVM你对Java的运行机制、编译过程和如何对Java程序进行调优相信都会有一个很好的认知。废话不多说,直接带大家来初步认识一下JVM。什么是JVM?JVM(Java Virtual Machin...
    99+
    2023-06-02
  • 简单了解MySQL高可用MHA架构知识
    下面一起来了解下MySQL高可用MHA架构知识,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL高可用MHA架构知识这篇短内容是你想要的。MHA软件介绍1.MHA软件是由MHA Manager(管...
    99+
    2024-04-02
  • mysql事务知识点分析
    这篇文章主要讲解了“mysql事务知识点分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql事务知识点分析”吧!1.  事务1.1.&n...
    99+
    2024-04-02
  • MySQL索引知识点分析
    这篇文章主要介绍“MySQL索引知识点分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL索引知识点分析”文章能帮助大家解决问题。1索引的概念1.1定义索引在关系型数据库中,是一种单独的、物...
    99+
    2023-07-02
  • 五分钟教你了解一下react路由知识
    目录什么是路由纯组件的基本使用纯组件使用的注意点路由的基本初体验HashRouter和BrowserRouterLink组件和NavLink组件Route和Switch组件路由传参什...
    99+
    2024-04-02
  • Python探索之Metaclass初步了解
    先以一个大牛的一段关于Python Metapgramming的著名的话来做开头: Metaclasses are deeper magic than 99% of users should ever w...
    99+
    2022-06-05
    Python Metaclass
  • MySQL性能调优之分区表的知识点有哪些
    本篇内容主要讲解“MySQL性能调优之分区表的知识点有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL性能调优之分区表的知识点有哪些”吧!对于用户而...
    99+
    2024-04-02
  • 【MySQL】MySQL基础知识详解(一)
    MySQL select列的别名去除重复行空值参与运算着重号查询常数显示表结构过滤数据 排序使用 ORDER BY 对查询到的数据进行排序操作。使用列的别名,进行排序二级排序 分页LI...
    99+
    2023-09-04
    mysql 数据库 SQL
  • 初识Django,了解一下大概流程
    学习Django一个礼拜了,对其有了一个大概的了解,自己画了一个简单的图,虽然有点丑,但是基本上已经把自己所想已经表达 写完这篇随笔之后发现自己逻辑表述的有点不太清晰,有点乱,哪里不对,希望各位指正   首先由外部浏览器发出请求,服务器...
    99+
    2023-01-30
    流程 Django
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作