【SQL应知应会】表分区(四)• MySQL版

请添加图片描述

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流

本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle

请添加图片描述

分区表 • MySQL版

  • 前言
  • 一、分区表
  • 1.非分区表
  • 2.分区表
    • 2.1 概念
    • 2.2 MySQL数据库表分区
      • 2.2.1 InnoDB 逻辑存储结构
    • 2.3 MySQL数据库分区的由来
    • 2.4 为什么对表进行分区?
    • 2.5 MySQL的分区形式
    • 2.6 MySQL分区的类型
    • 2.7 MySQL分区代码
        • 2.7.5.3 range-key 复合分区
        • 2.7.5.4 list - key 复合分区
    • 2.8 常见分区操作
      • 2.8.1 删除分区
      • 2.8.2 增加分区
      • 2.8.3 分解分区
      • 2.8.4 合并分区
      • 2.8.5 重新定义分区
      • 2.8.6 重建分区
      • 2.8.7 检查分区
      • 2.8.8 修补分区
    • 2.9 MySQL分区表的局限性
      • 2.9.1 错误示例
      • 2.9.2 错误修正
  • 小结

前言

在前面的内容中,【SQL应知应会】表分区(一)• MySQL版、【SQL应知应会】表分区(二)• MySQL版、【SQL应知应会】表分区(三)• MySQL版中,已经完成了MySQL的表分区方面的大部分知识的学习,如为什么对表进行分区,分区有哪些形式,分区有哪些类型以及每一种类型的语句,分区的注意事项以及适用场景,并且用例子代码演示了MySQL的各种分区

今天这篇内容,将继续进行讲述MySQL的表分区的后续内容,主要包括常见的分区操作,如删除分区、增加分区、分解分区、合并分区、重新定义分区、重建分区、 检查分区、修补分区,不但使用代码进行演示,并且补充了一些需要注意的内容;今天还讲到了MySQL分区表的局限性,其中直接使用错误示例帮助大家更直接明了的看到错误的原因,并且展示了错误修正后的代码

希望文章的内容对大家有所帮助,如果有什么不足的地方,大家可以在评论区或者私信我,感谢大家的支持
那么,快拿出你的电脑,跟着文章一起学习起来吧

一、分区表

1.非分区表

👉:传送门💖非分区表构💖

2.分区表

2.1 概念

👉:传送门💖概念💖

2.2 MySQL数据库表分区

2.2.1 InnoDB 逻辑存储结构

👉:传送门💖InnoDB 逻辑存储结构💖

2.2.2 段(segment)
2.2.3 区(extent)
2.2.4 页(page)

2.3 MySQL数据库分区的由来

👉:传送门💖MySQL数据库分区的由来💖

2.4 为什么对表进行分区?

👉:传送门💖为什么对表进行分区💖

2.4.1 表分区要解决的问题
2.4.2 表分区有如下优点

2.5 MySQL的分区形式

👉:传送门💖MySQL的分区形式💖

2.5.1 水平分区(HorizontalPartitioning)
2.5.2 垂直分区(VerticalPartitioning)

2.6 MySQL分区的类型

2.6.1 range分区 👉:传送门💖range分区💖
2.6.2 list分区(列表分区)
2.6.3 hash分区
2.6.4 KEY表分区
2.6.5 多字段分区(range、list)
2.6.6 分区注意事项及适用场景
👉:传送门💖2.6.2 ~ 2.6.6💖

2.7 MySQL分区代码

2.7.1range分区
2.7.2list分区
👉:传送门💖2.7.1~ 2.7.2💖
2.7.3 hash表分区
2.7.4 key表分区
2.7.5复合分区
2.7.5.1 range-hash(范围哈希)复合分区
2.7.5.2 list-hash(列表哈希)复合分区
👉:传送门💖2.7.3 ~ 2.7.5💖

2.7.5.3 range-key 复合分区

## range-key 复合分区
create table foo_emp2 
(
    empno varchar(20) not null,
    empname varchar(20),
    deptno int,
    salary int 
)
partition by range(salary)
subpartition by key(deptno)
subpartitions 3
(	
    partition p1 values less than (2000),
    partition p2 values less than (3000)
)

insert into foo_emp2 select 1,1,20,1000 from dual

2.7.5.4 list - key 复合分区

## list - key 复合分区

create table empk(
    empno varchar(20) not null,
    empname varchar(20),
    deptno int,
    birthdate date not null,
    salary int 	
)
partition by list(deptno)
subpartition by key(birthdate)
subpartitions 3
(	
    partition p1 values in (10),
    partition p2 values in (20)
)

2.8 常见分区操作

在这里插入图片描述

2.8.1 删除分区

alter table emp drop partition p1
## 不能删除hash或者key分区
  • 一次性删除多个分区
alter table emp drop partition p1,p2
  • 删除表的所有分区
alter table emp remove partitioning; -- 不会丢失数据

2.8.2 增加分区

  • 增加范围分区
    • 范围分区一般只能往后增加,往前增加一般得reorganize重新组织分区或者Oracle的split分区
### 范围分区一般只能往后增加,往前增加一般得reorganize重新组织分区或者Oracle的split分区
alter table emp add partition(partition 3 values less than (4000))
-- 增加完4000的,是否可以增加一个3500?
   -- 不可以,因为4000之前的已经划分完了
  • 增加列表分区
alter table emp1 add partition(partiton 3 value in (40))
-- 如果前面的list分区中,主分区有3个子分区,那么新增加的这个也会自动给配3个子分区

2.8.3 分解分区

  • Reorganize partition关键字可以对表的部分分区或全部分区进行修改,并且不会丢失数据
  • 分解前后分区的整体范围应该一致
alter table te
reorignize partition p1 into
( 
    partition p1 values less than (100),
    partition p3 values less than (1000)
); -- 不会丢失数据

2.8.4 合并分区

  • Merge分区:把2个分区合并为1个
alter table te
reorganize partition p1,p3 into
(
    partition p1 values less than (1000)
) -- 不会丢失数据

2.8.5 重新定义分区

  • 重新定义hash分区表
alter table emp partition by hash(salary) partitions 7;
-- 不会丢失数据
  • 重新定义range分区表
alter table emp partition by range(salary)
(
    partition p1 values less than (2000),
    partition p2 values less than (4000)
) -- 不会丢失数据

2.8.6 重建分区

  • 这和先删除保存在分区中的所有记录,然后重新插入它们,具有同样的效果
  • 可用于整理分区碎片
alter table emp rebuild partition p1,p2;

2.8.7 检查分区

  • 可以使用几乎与对非分区表使用check table相同的方式检查分区
  • 这个命令可以告知表emp的分区p1,p2中的数据或索引是否已经被破坏,若发生了这种情况,使用修补命令
alter table emp check partition p1,p2;

2.8.8 修补分区

# 修补被破坏的分区
alter table emp repairpartition p1,p2

2.9 MySQL分区表的局限性

  • 在5.1版本中分区表对唯一约束有明确的规定,每一个唯一约束必须包含中分区表的分区键(也包括主键约束)

2.9.1 错误示例

报错:MySQL Database Error:A PRIMARY KEY must include allcolums in the tables partitioning function

create table emptt(
	empno varchar(20) not null,
    empname varchar(20),
    deptno int,
    birthdate date not null,
    salary int,
    primary key(empno)
)
partition by range(salary) -- 这样的语句会出错:MySQL Database Error:A PRIMARY KEY must include allcolums in the tables partitioning function
(
    partition p1 values less than (100),
    partition p2 values less than (200)
)

2.9.2 错误修正

create table emptt(
	empno varchar(20) not null,
    empname varchar(20),
    deptno int,
    birthdate date not null,
    salary int,
    primary key(empno,salary) -- 在主键中加入salary列就正常
)
partition by range(salary)
(
    partition p1 values less than (100),
    partition p2 values less than (200)
)

小结

感谢大家耐心的看完这篇文章,对于SQL在表分区的知识点,我们在MySQL方面已经有四篇内容了,如果大家觉着还算可以,那么就给个三连支持一下吧,如果想要继续关注和学习后续更多的内容,就关注一下爱书不爱输的程序猿吧,当然,如果大家还有什么其他方面的知识点想要看,可以在评论区或者私信我

请添加图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring MVC异步上传、跨服务器上传和文件下载

一、异步上传 之前的上传方案,在上传成功后都会跳转页面。而在实际开发中,很多情况下上传后不进行跳转,而是进行页面的局部刷新,比如:上传头像成功后将头像显示在网页中。这时候就需要使用异步文件上传。 1.1 JSP页面 …

centos7 访问windows系统的共享文件夹

window系统上共享文件夹 选择共享文件夹,点击属性 点击共享 选择用户,点击共享 centos系统挂载共享文件夹 创建挂载目的文件夹 mkdir -p /mnt/smb 挂载命令 mount -t cifs -o usernamezenglg,password*** //192.168.1.10/ftp /mnt/smb/其中&#xff…

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(7 月 18 日论文合集)

文章目录 一、分割|语义相关(14篇)1.1 Multimodal Diffusion Segmentation Model for Object Segmentation from Manipulation Instructions1.2 Variational Probabilistic Fusion Network for RGB-T Semantic Segmentation1.3 Dense Affinity Matching for Few-Shot Segmentat…

Spring MVC拦截器和跨域请求

一、拦截器简介 SpringMVC的拦截器(Interceptor)也是AOP思想的一种实现方式。它与Servlet的过滤器(Filter)功能类似,主要用于拦截用户的请求并做相应的处理,通常应用在权限验证、记录请求信息的日志、判断用…

二十四章:SEgmentation TRansformer (SETR)——以Transformer的序列到序列的视角重新思考语义分割问题

0.摘要 最近的语义分割方法采用了全卷积网络(FCN)和编码器解码器架构。编码器逐渐降低空间分辨率,并学习具有更大感受野的抽象/语义视觉概念。由于上下文建模对于分割是至关重要的,最新的研究工作将重点放在增加感受野上&#xff…

Upgrading kubeadm clusters from v1.27.3 to v1.27.4

文章目录 1. Before you begin2. Notes3. Master3.1 Login into the first node and upgrade the kubeadm tool only3.2 Verify the upgrade plan3.3 Drain the control plane node3.4 kubeadm upgrade3.5 Uncordon the control plane node3.6 Upgrade kubelet and kubectl3.7 …

自然语言处理: 第五章Attention注意力机制

自然语言处理: 第五章Attention注意力机制 理论基础 Attention(来自2017年google发表的[1706.03762] Attention Is All You Need (arxiv.org) ),顾名思义是注意力机制,字面意思就是你所关注的东西,比如我们看到一个非…

【计算机组成原理】24王道考研笔记——第二章 数据的表示和运算

第二章 数据的表示和运算 一、数值与编码 1.1 进制转换 任意进制->十进制&#xff1a; 二进制<->八进制、十六进制&#xff1a; 各种进制的常见书写方式&#xff1a; 十进制->任意进制&#xff1a;&#xff08;用拼凑法最快&#xff09; 真值&#xff1a;符合人…

嵌入式软件和硬件的安全性:保护连接世界的数字盾牌

引言&#xff1a; 随着嵌入式系统的广泛应用和物联网的快速发展&#xff0c;嵌入式软件和硬件的安全性问题越来越引起人们的关注。安全性是确保嵌入式系统能够抵御恶意攻击和数据泄露的关键。本文将深入探讨嵌入式软件和硬件的安全性问题&#xff0c;包括技术原理、应用场景、学…

Edge 中比较独特的调试技巧

背景 大家日常开发基本都会使用 Chrome&#xff0c;毕竟确实好用。但是基于 Chromium 的新版 Microsoft Edge 已于 2020 年 1 月 15 日发布。 Edge 目前的使用基本跟 Chrome 差不多了&#xff0c;但显然&#xff0c;Edge 团队不仅仅想当 Chrome 的备用。他们也提供了一些特有…

【C++】-模板进阶(让你更好的使用模板创建无限可能)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6:MySQL Enterprise Monitor之Query Analyzer

文章目录 MySQL 8.0 OCP (1Z0-908) 考点精析-性能优化考点6&#xff1a;MySQL Enterprise Monitor之Query AnalyzerMySQL Enterprise Monitor之Query AnalyzerQuery Response Time index (QRTi)例题例题1: Query Analyzer答案与解析1 参考 【免责声明】文章仅供学习交流&#x…

【本地电脑搭建Web服务器并用cpolar发布至公网

本地电脑搭建Web服务器并用cpolar发布至公网访问 随着互联网的快速发展&#xff0c;网络也成为我们生活中不可缺少的必要条件&#xff0c;为了能在互联网世界中有自己的一片天地&#xff0c;建立一个属于自己的网页就成为很多人的选择。但互联网行业作为资本密集的行业&#x…

一)Stable Diffusion使用教程:安装

目前AI绘画最火的当属Midjorney和Stable Diffusion&#xff0c;但是由于Midjourney没有开源&#xff0c;因此我们主要分享下Stable Diffusion&#xff0c;后面有望补上Midjourney教程。 本节主要讲解Stable Diffusion&#xff08;以下简述SD&#xff09;的下载和安装。 1&…

呼吸灯——FPGA

文章目录 前言一、呼吸灯是什么&#xff1f;1、介绍2、占空比调节示意图 二、系统设计1、系统框图2、RTL视图 三、源码四、效果五、总结六、参考资料 前言 环境&#xff1a; 1、Quartus18.0 2、vscode 3、板子型号&#xff1a;EP4CE6F17C8 要求&#xff1a; 将四个LED灯实现循环…

Redis源码篇 - Ziplist数据结构

Ziplist是一种内存优化的list存储结构&#xff0c;通过使用连续的内存空间存储&#xff0c;来减少内存碎片化&#xff0c;同时和链表的不同还有&#xff0c;它不存储前后指针&#xff0c;而是通过变长的字节存储前节点元素长度&#xff0c;通过计算长度来实现节点的查找。它是一…

Google 登录支付,Firebase 相关设置

登录sdk: https://developers.google.com/identity/sign-in/android/start?hlzh-cn 支付sdk: https://developers.google.com/pay/api/android/overview?hlzh-cn Firebase sdk: https://firebase.google.com/docs/android/setup?hlzh-cn 登录设置&#xff1a; 创建凭据&…

机器学习-线性代数-5-空间中的向量投影与最小二乘法

空间中的向量投影与最小二乘法 文章目录 空间中的向量投影与最小二乘法一、引入二、投影和投影的描述1、投影描述最近2、利用矩阵描述投影(1)向一维直线投影(2)向二维平面投影(3)向n维子空间投影的一般情况 三、最小二乘法1、重要的子空间(1)互补的子空间(2)正交的子空间(3)相互…

12.面板问题

面板问题 html部分 <h1>Lorem ipsum dolor sit, amet consectetur adipisicing.</h1><div class"container"><div class"faq"><div class"title-box"><h3 class"title">Lorem, ipsum dolor.<…

(转载)神经网络遗传算法函数极值寻优(matlab实现)

本博客的完整代码获取&#xff1a; https://www.mathworks.com/academia/books/book106283.html 1案例背景 对于未知的非线性函数,仅通过函数的输入输出数据难以准确寻找函数极值。这类问题可以通过神经网络结合遗传算法求解,利用神经网络的非线性拟合能力和遗传算法的非线性…