MySQL 按时间进行表分区

news/2024/11/30 10:33:03/

文章目录

  • 创建按月份分区的表
  • 开启数据库事件
    • 临时配置(服务重启会失效)
    • 修改`my.cnf`文件(推荐)
  • 定时事件自动建分区
  • 查询表分区信息

创建按月份分区的表

create table if not exists table_name
(id          bigint auto_increment comment '主键id',create_by   varchar(64)                        not null comment '创建者',create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间',update_by   varchar(64)                        null comment '更新者',update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',primary key (id, create_time)
)comment '测试表名' partition by range (TO_DAYS(create_time)) (partition P202403 values less than (TO_DAYS('2024-04-01')) ,partition P202404 values less than (TO_DAYS('2024-05-01'))
);

开启数据库事件

临时配置(服务重启会失效)

-- 开启事件
SET GLOBAL event_scheduler = ON;
-- 查看事件是否开启
SHOW VARIABLES LIKE '%event_sche%';
-- 查看所有事件
SHOW EVENTS;

修改my.cnf文件(推荐)

  • 进入MySQL所在的服务器
sudo vi /etc/my.cnf
  • 找到 [mysqld],添加如下内容
event_scheduler = ON
  • 重启 MySQL 服务以使更改生效
sudo systemctl restart mysqld

定时事件自动建分区

  • 例:2024-04-01 创建5月份的分区 P202405,5月1号创建6月份的分区。
create event event_create_partition on scheduleevery '1' MONTH starts '2024-04-01 00:00:00'on completion preserveenable do BEGIN-- 当前时间 2024-04-01 00:00:00-- _DATE = 2024-05-01DECLARE _DATE VARCHAR(10) DEFAULT ADDDATE(SUBDATE(CURDATE(), DAY(CURDATE()) - 1), INTERVAL 1 MONTH);-- P202405SET @PARTITION_NAME = CONCAT('P', DATE_FORMAT(_DATE, '%Y%m'));-- 2024-06-01SET @SHEAR_DATE = CONCAT('', ADDDATE(LAST_DAY(_DATE), 1));SET @SQL = CONCAT('ALTER TABLE table_name ADD PARTITION (PARTITION ', @PARTITION_NAME, ' VALUES LESS THAN (TO_DAYS("', @SHEAR_DATE, '")))');PREPARE STMT FROM @SQL;EXECUTE STMT;DEALLOCATE PREPARE STMT;END;

注意: 数据库event_scheduler = ON 要确认有开启,否则 event_create_partition 事件不会执行。

查询表分区信息

SELECTTABLE_SCHEMA,TABLE_NAME,PARTITION_NAME,PARTITION_METHOD,PARTITION_EXPRESSION,SUBPARTITION_NAME,SUBPARTITION_METHOD,SUBPARTITION_EXPRESSION
FROM information_schema.partitions
WHERE TABLE_SCHEMA = '数据库名'
AND TABLE_NAME IN ('table_name')
ORDER BY PARTITION_NAME DESC;

http://www.ppmy.cn/news/1425422.html

相关文章

centos 下如何锁定docker版本

可能因为某些原因无意间执行了yum update或者apt-get -y upgrade;导致Docker版本升级,这会引起你开发的项目因为环境不同而面临不能执行的风险,为了避免此类问题发生,建议在安装好Docker后对Docker软件进行锁定,防止Docker意外更新…

鸢尾花数据集的KNN探索与乳腺癌决策树洞察

鸢尾花数据集的KNN探索与乳腺癌决策树洞察 今天博主做了这个KNN和决策树的实验。 一.数据集介绍 介绍一下数据集: 威斯康星州乳腺癌数据集: 威斯康星州乳腺癌数据集(Wisconsin Breast Cancer Dataset)是一个经典的机器学习数…

如何解决热key问题

什么是热key问题?就是一个key的数据被大量访问,导致key所在节点的redis服务器承受巨大的压力甚至导致服务器直接崩了,这种情况如何解决了? 1.缓存预热: 通过在业务刚启动或者在业务的低峰期的时候,直接经常…

PSO-GPR单变量时序预测-递归预测未来数据 基于粒子群算法-高斯过程回归递归预测未来数据

文章目录 效果一览文章概述订阅专栏只能获取一份代码部分源码参考资料效果一览 文章概述 PSO-GPR单变量时序预测-递归预测未来数据 基于粒子群算法-高斯过程回归递归预测未来数据 订阅专栏只能获取一份代码 部分源码 %

VUE-ajax

VUE-ajax vue-resource的介绍 vue-resource是Vue高度集成的第三方包。 官网链接: 文档(http相关):https://github.com/pagekit/vue-resource/blob/master/docs/http.md vue-resource 依赖于 Vue。所以,我们要按照…

小型企业网络优化加速方案

随着数字化经济蓬勃发展,小型企业的网络基础设施变得尤为重要。在这一浪潮中,建立一个稳定、高效的企业网络成为支撑业务发展的关键。本文将深入研究针对小型企业设计的网络优化加速方案,助力企业主了解如何规划和实施适合自身业务需求的网络…

vue快速入门(三十三)scoped解决组件样式冲突

注释很详细&#xff0c;直接上代码 上一篇 新增内容 scoped解决样式冲突的用法 源码 MyHeader.vue <!-- 用于测试全局注册组件 --> <template><div id"myHeader"><h1>又可以愉快的学习啦</h1></div> </template><scri…

【论文笔记 | 异步联邦】Asynchronous Federated Optimization

论文信息 Asynchronous Federated Optimization&#xff0c;OPT2020: 12th Annual Workshop on Optimization for Machine Learning&#xff0c;不属于ccfa introduction 背景&#xff1a;联邦学习有三个关键性质 任务激活不频繁&#xff08;比较难以达成条件&#xff09;&…