MySQL旧表做分区流程

1. 为什么做分区

数据库分区是将数据库中的数据划分成独立的部分,每个部分称为一个分区。分区可以根据特定的标准,如范围、列表或哈希值,将数据分隔到不同的物理存储位置中。数据库表分区可以在多种情况下提供显著的好处。以下是一些应该考虑对数据库表进行分区的情况:

  • 大型数据量: 当数据库表包含大量数据时,性能可能会受到影响。通过将表分区,可以将数据分散到不同的物理位置,从而提高查询性能和管理效率。

  • 历史数据管理: 对于需要长期保留历史数据的系统,可以根据时间范围对数据进行分区。这样可以轻松地管理和维护历史数据,执行归档、备份和清理操作。

  • 提高查询性能: 当数据库表面临频繁的查询操作时,分区可以帮助提高查询性能。通过将数据分散到多个分区,可以减少单个查询对系统的压力,从而提高整体性能。

  • 改善数据加载速度: 对于需要频繁加载数据的系统,分区可以帮助提高数据加载速度。例如,在分析型数据库中,可以根据时间范围对数据进行分区,以便更快地加载最新的数据。

  • 数据安全性要求: 对于需要对数据进行严格隔离和访问控制的系统,可以通过分区来实现数据的安全存储和管理。例如,可以将敏感数据存储在单独的分区中,并为其应用更严格的访问控制。

  • 提高可用性和容错性: 通过将数据分散到多个物理位置,可以提高系统的可用性和容错性。如果一个分区发生故障,其他分区仍然可以继续工作,从而降低了系统停机时间。

总的来说,数据库表分区可以在面对大量数据、频繁查询、历史数据管理或数据安全性要求等情况下提供多种好处。然而,需要在实际应用中仔细权衡利弊,以确定是否值得对数据库表进行分区。

2. 旧表分区步骤

2.1 备份原始表

rename table t_A to t_A_bak;

2.2 创建新表,定义分区规则,创建初始分区

create table t_A (
	ID int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
    NAME varchar(255) NOT NULL COMMENT '姓名',
    IDCARD varchar(255) NOT NULL COMMENT '身份证号码',
    PHONE varchar(255) DEFAULT NULL COMMENT '手机号码',
    CREATE_TIME datetime NOT NULL COMMENT '创建时间',
    MOD_TIME datetime DEFAULT NULL COMMENT '修改时间',
    PRIMARY KEY (ID, CREATE_TIME)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
partition by range columns (CREATE_TIME) (
    -- 按月分区
	partition `P_202401` values less than ('2024-02-01 00:00:00'),
    partition `P_202402` values less than ('2024-03-01 00:00:00'),
    partition `P_202403` values less than ('2024-04-01 00:00:00'),
    partition `P_202404` values less than ('2024-05-01 00:00:00'),
    partition `P_202405` values less than ('2024-06-01 00:00:00')
);

注意事项:

  • 分区列不能为 NULL;
  • 分区列必须是主键索引,一般与 ID 列构成主键复合索引;
  • 如果表存在唯一索引,分区列还需添加到唯一索引中(这种情况,要考虑该唯一索引是否有必要,添加分区字段不可避免地破坏唯一逻辑,若没必要直接删除,若有必要,那得在Java代码里处理唯一逻辑);

2.3 新表插入原始数据

insert into t_A select t_A_bak where create_time >= #{startTime} and create_time < #{endTime};

注意事项:

  • select ... 后面最好加 where 条件,where 跟的筛选列需创建索引,否则全表扫描,容易产生锁表,丢失数据等;这个问题的详细分析参考 [同事使用 insert into select 迁移数据,开开心心上线,上线后被公司开除!];

  • 若是停机更新,不担心锁表问题,或是 where 跟的筛选列没有创建索引,则可以不加 where 条件,直接insert into B select * from A

    • 针对这种方式,曾经担心过一个问题:【若表A超大,数据量达到千万级别,MySQL 是否一次性地把表A的所有数据查出来放到内存或是磁盘,再一次性地插入表B?如果这样,不可避免地导致内存爆炸或是 IO 次数增加】:这个问题我抛给 ChatGPT 解答,它的解释如贴图。我觉得最好还是手动分批查询插入吧。
      在这里插入图片描述

2.4 新表创建原始索引

注意:要最后创建原表索引;

-- 创建原表的身份证号码的唯一索引,在线不锁表方式创建索引
create index `IDX_IDCARD` on t_A (`IDCARD`) algorithm=inplace lock=none;

如果先建立索引,再插入数据,由于索引相当于一种排序,插入数据时会给数据进行排序,毫无疑问会影响插入数据的性能。

3. 分区相关SQL

-- 查询某张表每个分区的数据行数
select table_name, partition_name, table_rows from information_schema.partitions where table_name = 't_A';
-- 若上述语句没有显示行数为0,需刷新一下表
analyze table t_A;
-- 查询某个分区的数据
select * from t_A partition (P_202401);
-- 删除某个分区,分区数据也一并删除
alter table t_A drop partition P_202401;
-- 新增分区
alter table t_A add partition (partition `P_202406` values less than ('2024-07-01 00:00:00'));

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

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

相关文章

如何对基本公共服务均等化进行统计监测

党的十九大指出“履行好政府再分配调节职能&#xff0c;加快推进基本公共服务均等化&#xff0c;缩小收入分配差距”&#xff0c;提出到2035年基本公共服务均等化基本实现。国务院相继于2012年和2017年发布了《国家基本公共服务体系“十二五”规划》和《“十三五”推进基本公共…

Windows里使用ollama本地大模型部署

下载 ollama官网进行下载 下载完后下一步下一步即可 安装完成后验证是否成功&#xff0c;打开命令行输入ollama&#xff0c;有该指令即安装成功 环境变量配置 配置模型下载位置 看自己电脑硬盘情况配置 打开所有ip接口访问权限 如果想要远程调用ollama接口&#xff0c;…

Output directory is not specified

场景&#xff1a;从GitHub拉取Java项目使用IDEA打开运行的时候抛出 java: 写入com.common.exception.ChatException时出错: Output directory is not specified网上大部分是说在项目结构增加编译器输出路径&#xff0c;但我在实际开发的项目的时候这里为空&#xff0c;包括我加…

测试用例设计方法:招式组合,因果判定出世

1 引言 上篇讲了等价类划分和边界值分析法&#xff0c;而这两种方法只考虑了单个的输入条件&#xff0c;并未考虑输入条件的各种组合、输入条件之间的相互制约关系的场景。基于此短板&#xff0c;因果图法和判定表法应运而生。 2 因果图法 2.1 概念及原理 2.1.1 定义 一种…

分布式光伏监控系统功能模块详解

目前&#xff0c;分布式光伏发电系统的总容量比较小&#xff0c;并且光伏电站的功率受外界环境影响容易出现大起大落的现象。这使电压调整变得很困难。光伏电站运行维护人员不足&#xff0c;长时间不保养维护会影响光伏电站的发电效率。针对上述问题&#xff0c;鹧鸪云基于无线…

汇聚荣科技:拼多多开店没有流量应该怎么办?

拼多多开店没有流量是一个常见的问题&#xff0c;许多新手商家都会遇到这样的困境。那么&#xff0c;如何解决这个问题呢?下面从四个方面进行详细阐述。 一、优化店铺和商品 首先&#xff0c;要确保店铺和商品的质量。店铺要有自己独特的风格和特色&#xff0c;商品要有高质量…

Airtest核心API汇总

2024.2.25更新&#xff1a;新增剪切板、Airtest1.3.3touch/swipe支持绝对坐标和相对坐标 2023.9.3更新&#xff1a;Airtest1.2.7新增14个断言、断开连接API&#xff1b;Airtest1.2.10.2新增录屏API&#xff1b; 以下基于airtest1.2.0(截止2021.7.12&#xff0c;最新版本) https…

如何将公众号添加到CSDN个人主页

1. 创作中心- 推广管理 输入个人公众号名字并开启微信公众号推广 2. 将公众号的二维码图片加入拓展信息 个人主页的左下角就能看到推广 如果希望能看到是二维码 操作如下&#xff1a; 写篇文章贴上二维码 然后点击鼠标右键获得此页面链接 &#xff0c;例如我的个人公众号 htt…

洗地机哪款好用?希亦、追觅、顺造、米家等高品质洗地机推荐

家用洗地机已经成为家庭清洁的重要利器&#xff0c;其多功能性能帮助您轻松应对各种清洁任务&#xff0c;从而保持家居环境的清洁整洁。然而&#xff0c;市场上品牌繁多、功能各异的洗地机让人眼花缭乱。为了帮助大家做出明智的选择&#xff0c;我们将在本文中提供全面的选购指…

力扣98.验证二叉搜索树

法一&#xff08;自己思路&#xff0c;复杂了&#xff09;&#xff1a; from collections import dequeclass Solution(object):def isValidBST(self, root):""":type root: TreeNode:rtype: bool"""queue deque()if root.left!None:queue.app…

凸优化理论学习三|凸优化问题(一)

系列文章目录 凸优化理论学习一|最优化及凸集的基本概念 凸优化理论学习二|凸函数及其相关概念 文章目录 系列文章目录一、优化问题&#xff08;一&#xff09;标准形式的优化问题&#xff08;二&#xff09;可行点和最优点&#xff08;三&#xff09;局部最优点&#xff08;四…

地平线X3开发板Intel Realsense深度相机调试记录

1. 预编译包 编译这个SDK花费了5.6个小时&#xff0c;为了方便各位后续使用&#xff0c; 各位可以直接下载编译好的文件&#xff0c;包含C和Python的库&#xff0c;相关文件已经上传至百度云&#xff08;提取码&#xff1a;awe4 &#xff09;。 在提供的这些文件中&#xf…

思科模拟器学习1--Vlan Trunk

实验说明&#xff1a;将三台电脑的vlan 加到一台交换机里面&#xff0c;为了验证什么是虚拟局域网&#xff0c;把一个设备隔成三个空间&#xff0c;三个电脑互相不能通讯&#xff1b;目的是&#xff1a;vlan 1的通讯不可以向vlan 2传送&#xff0c;就是消息传送互不干扰的&…

独家揭秘:亲历清华大学答辩现场,惊喜万分 名校答辩不简单

会议之眼 快讯 五月&#xff0c;对于学术界来说&#xff0c;迎来了答辩的高潮&#xff01;是收获的季节&#xff01;今天&#xff0c;趁着阳光明媚&#xff0c;小编怀揣着对学术探索的无限热情和好奇心&#xff0c;决定亲自踏入中国顶尖学术殿堂——清华大学深圳国际研究生院&…

【核弹】我的第一款IDEA插件

SuperHotSwap 插件名称叫做&#xff1a;SuperHotSwap&#xff08;超级热更新&#xff09; 开发初心&#xff1a;旨在做出一款最便捷的IDEA热更新插件&#xff0c;减少用户操作步骤&#xff0c;提供零配置的可视化操作更新。 为什么要写这个插件&#xff1a; 每次改一下Mappe…

Linux内核发送网络数据

前言 我们开始今天对 Linux 内核⽹络发送过程的深度剖析。还是按照我们之前的传统&#xff0c;先从⼀段代码作为切⼊。 上述代码中&#xff0c;调⽤ send 之后内核是怎么样把数据包发送出去的。本⽂基于Linux 3.10&#xff0c;⽹卡驱动采⽤Intel的igb举例。 基础框架 我们看…

08 必会框架 - Spring全家桶

本课时主要介绍 Java 中常用的应用框架&#xff0c;重点讲解如下三部分内容。 Spring 框架中的主要知识点&#xff1b; NIO 框架 Netty 以及基于 Netty 实现的主流 RPC 框架 Motan、Dubbo 和 gRPC&#xff1b; ORM 框架 MyBatis。 常用框架汇总 先来看常用框架的知识点汇总…

AuroraFOC使用指南一(STM32F405双路FOC)

一. 简介 哈喽&#xff0c;感谢各位选择AuroraFOC开发板&#xff0c;在这里将对其进行一个详细的介绍&#xff0c;方便大家使用。并且对提供的工程文件和上位机的操作也进行了详细的说明。 有什么疑问或者好的建议 可以微信联系: WU1356742146 最后再次感谢大家的支持。 Aur…

番外篇 | 手把手教你利用YOLOv8进行热力图可视化 | 针对视频

前言:Hello大家好,我是小哥谈。YOLOv8的热力图可视化可以帮助我们更加直观地了解模型在图像中的检测情况,同时也可以帮助我们进行模型的调试和优化。热力图是一种颜色渐变的图像,不同颜色的区域表示不同程度的关注度或者置信度。在YOLOv8中,可以通过设置阈值来控制热力图的…

产品品牌CRUD

文章目录 1.renren-generator生成CRUD1.数据库表设计1.数据表设计2.分析 2.代码生成器生成crud1.查看generator.properties&#xff08;不需要修改&#xff09;2.修改application.yml 连接的数据库修改为云数据库3.启动renren-generator模块4.浏览器访问 http://localhost:81/5…