MySql分区介绍和Range案例

news2025/7/20 13:55:05

MySql分区介绍和Range案例

什么是表分区?

通俗地讲表分区是将一个大表,根据条件分割成若干个小表。mysql5.1开始支持数据表分区。
如:某用户表的记录超过了600万条仓储信息,那么就可以根据入库日期将表分区,也可以根据所在地将表分区。当然也可根据其它的条件分区。

为什么要对表进行分区?

  • 为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率。
  • 分区的一些优点包括
    • 与单个磁盘或文件系统分区相比,可以存储更多的数据。
    • 通过删除与增加那些数据有关的分区,很容易地删除或增加那些数据。
    • 一些查询可以得到极大的优化。
    • 通过跨多个磁盘甚至服务器来分散数据查询,来获得更多的查询吞吐量。

基本分区类型

  • RANGE分区:基于连续的区间范围,把数据分配到不同区。只支持整数分区。
  • LIST分区:类似RANGE分区,区别是LIST分区基于给出的枚举的值进行分区,无需按照顺序。只支持整数分区。
  • HASH分区:给定分区个数,按照一个散列函数,确定数据进入哪个分区。
  • KEY分区,类似HASH分区。

首先看一下mysql中的year函数
如下图:
在这里插入图片描述
year函数会返回指定日期的年份。

RANGE分区
基于属于一个给定连续区间的列值,把多行分配给分区。
这些区间要连续且不能相互重叠,使用VALUES LESS THAN操作符来进行定义。看一个例子,如下:

CREATE TABLE part_tab (
    c1 int default NULL,
    c2 varchar(30) default NULL,
    c3 date default NULL
    )engine=INNODB PARTITION BY RANGE (year(c3) )( 
        PARTITION p3 VALUES LESS THAN (2000) ,
        PARTITION p4 VALUES LESS THAN (2010) ,
        PARTITION p11 VALUES LESS THAN MAXVALUE 
    ) ;

上述代码解释,我们会对日期年份进行一个范围分区,如果年份小于2000,那么我们把这些mysql表数据放到我们的p3区;如果2000 <= 年份 < 2010,那么我们把这些mysql表数据放到我们的p4分区;如果2010 <= 年份 < MAXVALUE,那么我们就把这些mysql表数据放到我们的p11分区。

LIST分区

  • 类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
  • LIST分区通过使用"PARTITION BY LIST(expr)"来实现,其中"expr"是某列值或一个基于某个列值,并返回一个整数值的表达式,然后通过"VALUES IN(value_list)"的方式来定义每个分区,其中"value_list"是一个通过逗号分隔的整数列表。

代码如下:

CREATE TABLE part_tab2 (
   c1 int default NULL,
   c2 varchar(30) default NULL,
   c3 date default NULL
   )engine=INNODB PARTITION BY LIST(year(c3) )( 
       PARTITION p1 VALUES IN (1999,2000) ,
       PARTITION p2 VALUES IN (1998,2005) ,
       PARTITION p2 VALUES IN (2010) 
   ) ;

List分区需要把所有的列值都写出来。

HASH分区

  • 基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL中有效的,产生非负整数值的任何表达式。
  • 要使用HASH分区来分割一个表,要在CREATE TABLE语句上添加一个"PARTITION BY HASH(expr)"子句,其中"expr"是一个返回一个整数的表达式。它可以仅仅是字段类型为MySQL整型的一列的名字。此外,你很可能需要在后面添加一个"PARTITIONS num"子句,其中num是一个非负的整数,它表示表将要被分割成的分区的数量。如果没有这个子句,那么分区的数量默认为1个分区。
  • 使用HASH分区的优点在于数据分布较为均匀,如何分区是通过函数进行计算的。

代码例子如下:

CREATE TABLE part_tab3 (
    c1 int default NULL,
    c2 varchar(30) default NULL,
    c3 date default NULL,
    id INT NOT NULL
    )engine=INNODB PARTITION BY HASH(id) PARTITIONS 4;

上面的代码会分为4个分区,通过id列的值通过mysql内部的哈希函数,mysql会为我们自动的计算出改行的分区,所以使用HASH分区的有点就是数据分布的会比较均匀,如果我们指定了4个分区,一共有1000条数据,最后应该每个区都差不多有250条左右。具体的hash算法是很复杂的,但mysql内部已经帮助我们写好了,所以我们不用太关心。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1102463.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爬取某网站计算机类图书

网页链接&#xff1a; https://www.ptpress.com.cn/shopping/search?tagsearch&orderstrhot&leve11-75424c57-6dd7-4d1f-b6b9-8e95773c0593 一、为了完成爬取数据&#xff0c;需要进行以下步骤 1.在浏览器中打开页面&#xff0c;选择"计算机" 2.可以看到…

2023年淘宝天猫京东双11红包领取口令入口怎么领取使用淘宝天猫京东双十一红包?

2023年淘宝/天猫、京东双十一红包领取活动即将开始&#xff01; 使用下面提供的淘宝/天猫、京东双11红包口令可以领取淘宝天猫、京东2023年双十一红包&#xff1b; 一、2023年淘宝/天猫双11红包活动时间与规则 1.1、淘宝/天猫双11红包领取时间 2023年10月24日20:00开始至11月…

Numpy(三)Numpy的函数与排序

Numpy&#xff08;三&#xff09;Numpy的函数与排序 一、通用函数 *通用函数使得Numpy数组操作用于数组中的每一个函数。它通常用C语言实现&#xff0c;可以提升执行效率。 1.1数学运算函数 1.1.1算数运算函数&#xff1a;通常使用的加、减、乘、除、乘方等数学运算符号 ①…

HCIA --- VLAN实验配置

一、各交换机上配置&#xff1a; 1、各交换机上创建VLAN 2、交换机上的各个接口划分到对应的VLAN中 3、将与交换机、路由器相连的接口创建trunk干道 SW1&#xff1a; [sw1]vlan batch 2 to 3 批量创建VLAN2-3 [sw1]interface Ethernet0/0/1 单独将某个接口划分到对应…

【Release】Photoshop ICO file format plug-in 3.0

【Introduction】 The Photoshop ICO plug-in is a file format plug-in developed for Photoshop, which allows Photoshop to directly read and write ICO format files. Because Photoshop has powerful pixel bitmap editing functions, it has many users and a good us…

Kotlin注释

一、设置注释样式 按需配置 二、单行多行注释 fun main() {// 单行注释println("单行注释") //单行注释/** 多行注释* */println("多行注释") }

<el-drawer>中在添加弹窗,遮罩层被覆盖

添加这个属性 <el-dialog :append-to-body"true"> </el-dialog>

nginx.2——优化和防盗链

1、隐藏版本号 bug多。更新版本速度比较快&#xff0c;所以一旦版本号暴露出去&#xff0c;有可能给对方提供攻击的漏洞。 方法一 vim /usr/local/nginx/conf/nginx.conf 开server_tokens on; 关server_tokens off; 在http大模块中修改&#xff0c;不再server中&#xf…

腾讯云最新优惠活动入口整理分享

腾讯云作为国内知名的云计算服务提供商&#xff0c;一直以来都为广大的个人用户和企业用户提供优质、稳定、安全的云服务。为了帮助大家更好地利用腾讯云&#xff0c;下面为大家整理分享一些腾讯云的最新优惠活动入口&#xff0c;希望能够为大家带来一些帮助和便利。 一、腾讯云…

误删除数据恢复?恢复数据,这3个方法足够!

“我已经遇到很多次数据误删除的情况了&#xff01;每次都要重写文件。但是这次的文件比较紧急&#xff0c;重写肯定来不及了&#xff0c;想问问大家有没有什么误删除数据恢复的方法呀&#xff1f;” 在使用电脑时&#xff0c;很多用户都不可避免会出现误删数据的情况。面对重要…

基于模型预测人工势场的船舶运动规划方法,考虑复杂遭遇场景下的COLREG(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

YOLOv5算法改进(7)— 添加单层注意力机制(包括代码+添加步骤+网络结构图)

前言:Hello大家好,我是小哥谈。注意力机制是近年来深度学习领域内的研究热点,可以帮助模型更好地关注重要的特征,从而提高模型的性能。注意力机制可被应用于模型的不同层级,以便更好地捕捉图像中的细节和特征,这种模型在计算资源有限的情况下,可以实现更好的性能和效率。…

TrustZone

TrustZone技术 让我们从最重要的问题开始&#xff1a;为什么存在TrustZone技术&#xff0c;它防御什么&#xff1f;保护用 C 和 C 编写的大型程序免受黑客攻击可能是一个挑战。内存损坏漏洞是一个常见问题&#xff0c;尽管消除它们是安全工程师的核心目标&#xff0c;但从操作…

AI_Neural Network_Note(一)

Input Data / Feature textimageaudiosensor data For RGB Image 三维矩阵 64 * 64 *3 每个element都对应着一个像素点的颜色值 Definition RGB 图像 ——三个独立的矩阵&#xff08;即三个二维数组&#xff09;&#xff0c;这三个矩阵分别与此图像的红色Red、绿色Green和…

YOLO目标检测——安全帽手套数据集【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;主要应用于监控视频中工作人员是否佩戴安全帽或手套的场景。数据集说明&#xff1a;YOLO目标检测数据集&#xff0c;类别有&#xff1a;手套、头盔、非头盔、人、鞋、背心、赤膊&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富。使用la…

【MyBatis系列】- 什么是MyBatis

【MyBatis系列】- 什么是MyBatis 文章目录 【MyBatis系列】- 什么是MyBatis一、学习MyBatis知识必备1.1 学习环境准备1.2 学习前掌握知识二、什么是MyBatis三、持久层是什么3.1 为什么需要持久化服务3.2 持久层四、Mybatis的作用五、MyBatis的优点六、参考文档一、学习MyBatis知…

LDMOS与VDMOS概述

目录 组会PPT展示&#xff08;10.13&#xff09;LDMOS器件概述VDMOS器件概述前景展望 组会PPT展示&#xff08;10.13&#xff09; LDMOS器件概述 VDMOS器件概述 前景展望

【代码随想录】算法训练营 第四天 第二章 链表 Part 2

24. 两两交换链表中的节点 思路 为了使得头结点的处理不用特殊化&#xff0c;所以依然设置一个虚拟头结点dummy&#xff0c;每次要交换的时候都要判断接下来的两个结点是否为空结点&#xff0c;即nullptr&#xff0c;若非空即可交换&#xff1b; 交换的时候&#xff0c;用一个…

基于springboot实现汉服文化分享平台项目【项目源码+论文说明】

摘要 本论文主要论述了如何使用JAVA语言开发一个汉服文化平台网站 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述汉服文化平台网站的当前背景以及系统开发的…

PostgreSQL性能调优:优化查询和索引设计

随着数据量的增长和业务需求的变化&#xff0c;数据库性能成为了许多企业关注的焦点之一。在众多的数据库管理系统中&#xff0c;PostgreSQL因其稳定性和可靠性而备受青睐。然而&#xff0c;即使是最强大的系统也需要合适的调优&#xff0c;以确保其能够高效地处理大规模数据和…