MySQL 自动根据年份动态创建范围分区

2023-09-14 15:46:31

前言

要在MySQL中按年对日期进行分区,可以使用自动递增存储过程的方式实现动态分区,它并没有像Oracle里面的**INTERVAL (numtoyminterval(1, ‘year’))**方法。

创建动态分区

1.创建一个包含所有分区的表,并使用InnoDB存储引擎。例如,创建一个名为mytable的表。

CREATE TABLE mytable (
  id INT,
  create_time DATE
) ENGINE=InnoDB;

2.接下来,使用下面的语句来创建分区:

ALTER TABLE mytable
PARTITION BY RANGE(YEAR(create_time)) (
  PARTITION p1 VALUES LESS THAN (2022),
  PARTITION p2 VALUES LESS THAN (2023),
  PARTITION p2 VALUES LESS THAN (2024)
);

注意:此时可能会报 a primary key must include all columns in the table is partitioning function,意思是 一个唯一键必须包含表分区函数所有的列,不知道为啥MySQL要这么设计,此时你需要将一个唯一值(比如唯一id)加上create_time做联合主键。
详情链接: https://blog.csdn.net/run_boy_2022/article/details/131735670
https://blog.csdn.net/qq_33326449/article/details/104292311

3.为了实现动态分区,你可以为每个新的年份自动生成一个分区。可以使用存储过程来实现这一点。下面是一个例子:

DELIMITER //

CREATE PROCEDURE create_new_partition()
BEGIN
  DECLARE current_year INT;
  SELECT YEAR(CURDATE()) INTO current_year;
  SET @partition_name = CONCAT('p', current_year);
  SET @sql = CONCAT(
    'ALTER TABLE mytable ADD PARTITION (PARTITION ', @partition_name, ' VALUES LESS THAN (', current_year + 1, '))'
  );
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;
END //

DELIMITER ;

该存储过程将当前年份作为变量 current_year,然后创建一个新的分区,命名为 p当前年份,并将其添加到表中。如果数据库日期有偏差,可以将年份+2,在当年12月时进行定时任务。
你可以定期运行这个存储过程,例如在每年的开始或月初,以便自动为下一个新的年份添加分区。
请注意,分区表的性能可能会受到分区数量的影响。如果分区过多,可能会导致性能下降。建议根据实际需要和系统性能进行分区设置。

创建定时任务

你可以创建一个定时任务来每年初自动执行上面那个存储过程。

CREATE EVENT create_partition_event
ON SCHEDULE
  EVERY 1 YEAR
  STARTS '2024-01-01 00:00:00'
DO
  CALL create_new_partition();

这个事件被命名为 create_partition_event,它将在每年的 1 月 1 日 00:00:00 开始执行。它使用 create_new_partition() 存储过程来创建新分区。你可以根据需要自定义事件的名称、执行时间和频率。

附常用命令

-- 查询表中可用分区
SELECT * FROM information_schema.PARTITIONS WHERE TABLE_NAME = '表名';

-- 清除表中全部分区
ALTER TABLE 表名 REMOVE PARTITIONING;

-- 清除指定表中分区
ALTER TABLE 表名 DROP PARTITION 分区名;

-- 查询定时任务是否已开启,如果开关是ON状态,说明定时任务是开启的
SHOW VARIABLES LIKE 'event_scheduler';

-- 查询全部定时任务
select *  from mysql.event;
更多推荐

Nat. Rev. Bioeng. | 中山大学左涛组详述肠道微生态工程化改造

肠道微生态工程化改造EngineeringthegutmicrobiomeReviewArticle,2023-6-16,NatureReviewsBioengineeringDOI:10.1038/s44222-023-00072-2原文链接:https://www.nature.com/articles/s4422

vue国际化教程

需求背景项目需求要做国际化,结果网上找了好几篇文章,没有一个可以一次性搞定,现在这里总结一下。首先,我们分为两部分处理,一个是前端页面的静态文字,这个由前端vue.json自行处理。第二部分就是后端的错误消息和日志部分,我们由springboot的拦截器来处理。i18n介绍i18n(其来源是英文单词internatio

说说hashCode() 和 equals() 之间的关系?

每天一道面试题,陪你突击金九银十!上一篇关于介绍Object类下的几种方法时面试题时,提到equals()和hashCode()方法可能引出关于“hashCode()和equals()之间的关系?”的面试题,本篇来解析一下这道基础面试题。先祭一张图,可以思考一下为什么?介绍equals()的作用是用来判断两个对象是否相

第二证券:算力概念强势拉升,竞业达涨停,南凌科技等大涨

算力概念20日盘中强势拉升,到发稿,竞业达涨停,南凌科技涨近10%,拓维信息涨近9%,亚康股份、神州数码涨约5%,青云科技涨逾4%。音讯面上,9月19日,国际大学生程序设计竞赛(ICPC)官网披露了华为创始人兼CEO任正非与ICPC基金会及金牌获得者的谈话纪要。任正非表明,我们行将进入波澜壮阔的第四次工业革命,其规划之

Denoising diffusion implicit models 阅读笔记

Denoisingdiffusionprobabilisticmodels(DDPMs)从马尔科夫链中采样生成样本,需要迭代多次,速度较慢。Denoisingdiffusionimplicitmodels(DDIMs)的提出是为了加速采样过程,减少迭代的次数,并且要求DDIM可以复用DDPM训练的网络。加速采样的基本思

许战海战略文库|品类缩量时代:制造型企业如何跨品类打造份额产品?

所有商业战略的本质是围绕着竞争优势与竞争效率展开的。早期,所有品牌立足于从局部竞争优势出发。因此,品牌创建初期大多立足于单个品类。后期增长受限,就要跨品类持续扩大竞争优势,将局部竞争优势转化为长期竞争优势,如果固化不前很难获得增长,也无法成为“链主品牌”。当品类缩量,制造型企业要跨品类打造份额产品第一,聚焦的品类处于增

数据库设计步骤

一、数据库设计重点:有效存储、高效访问1、为什么要进行数据库设计:(1)减少数据冗余;(2)避免数据异常维护;(3)节约存储空间;(4)高效访问;二、数据库设计步骤1、需求分析;2、逻辑设计:ER图等建模;3、物理设计:根据每种数据库特点设计;4、维护优化;三、为什么要进行需求分析1、了解系统中所要存储的数据;2、了解

基于本地持久内存的并行一致性哈希文件系统CHFS

摘要CHFS是一个利用计算节点的持久内存的自适应并行文件系统。该设计完全基于高度可扩展的分布式键值存储,采用一致性哈希算法。CHFS通过消除专用元数据服务器、顺序执行和集中式数据管理,提高了并行数据访问性能和元数据性能的可扩展性。该实施利用了多核和多核CPU、高性能网络和Mochi-Margo库的远程直接内存访问。在一

操作系统备考学习 day3 (2.1.1 - 2.1.6)

操作系统备考学习day3二、进程与线程2.1进程与线程2.1.1进程的概念和特征2.1.2进程的状态与转换2.1.3进程的组织2.1.4进程控制2.1.5进程间通信(IPC)2.1.6线程和多线程模型二、进程与线程2.1进程与线程2.1.1进程的概念和特征进程:是动态的,是程序的一次执行过程。同一个程序多次执行会对应多

C++数据结构 -- 哈希表

目录一、哈希概念二、哈希冲突三、哈希函数四、减少哈希冲突常用的方法4.1闭散列4.1.1闭散列的开放定址法的增容4.1.2闭散列的开放定址法的哈希结构的实现4.3开散列4.3.1开散列概念4.3.2插入元素4.3.2删除元素4.3.3开散列的哈希桶的增容4.3.4开散列的哈希桶(拉链法)代码实现4.3.5关于开散列的思

过拟合和欠拟合:机器学习模型中的两个重要概念

文章目录🍋引言🍋过拟合和欠拟合的概念🍋过拟合和欠拟合的影响与危害🍋过拟合和欠拟合的原因与解决方法🍋过拟合和欠拟合的研究现状与发展趋势🍋过拟合&欠拟合---案例🍋总结🍋引言在机器学习模型中,过拟合和欠拟合是两种常见的问题。它们在模型训练和预测过程中扮演着重要的角色。了解过拟合和欠拟合的概念、影响、解决方法

热文推荐