广告位联系
返回顶部
分享到

MySQL按时间进行表分区的方法

Mysql 来源:互联网 作者:佚名 发布时间:2024-09-29 21:49:05 人浏览
摘要

创建按月份分区的表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 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

创建按月份分区的表

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

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 P202401 values less than (TO_DAYS('2024-02-01')) ,

    partition P202402 values less than (TO_DAYS('2024-03-01')) ,

    partition P202403 values less than (TO_DAYS('2024-04-01')) ,

    partition P202404 values less than (TO_DAYS('2024-05-01'))

);

开启数据库事件

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

1

2

3

4

-- 开启事件

SET GLOBAL event_scheduler = ON;

-- 查看事件是否开启

SHOW VARIABLES LIKE '%event_sche%';

修改my.cnf文件(推荐)

  • 进入MySQL所在的服务器

1

sudo vi /etc/my.cnf

  • 找到 [mysqld],添加如下内容

1

event_scheduler = ON

  • 重启 MySQL 服务以使更改生效

1

sudo systemctl restart mysqld

定时事件自动建分区

  • 例:提前创建下个月的分区,如2024-04-01创建5月份的分区 P202405,2024-05-01创建6月份的分区。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

create event event_create_partition on schedule

    every '1' MONTH starts '2024-04-01 00:00:00'

    on completion preserve

    enable

    do

    BEGIN

     

        -- 当前时间 2024-04-01 00:00:00

        -- _DATE = 2024-05-01

        DECLARE _DATE VARCHAR(10) DEFAULT ADDDATE(SUBDATE(CURDATE(), DAY(CURDATE()) - 1), INTERVAL 1 MONTH);

        -- P202405

        SET @PARTITION_NAME = CONCAT('P', DATE_FORMAT(_DATE, '%Y%m'));

        -- 2024-06-01

        SET @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 事件不会执行。

  • 查看所有事件

1

SHOW EVENTS;

查询表分区信息

1

2

3

4

5

6

7

8

9

10

11

12

13

SELECT

   TABLE_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;


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • MySQL中关于表的约束介绍

    MySQL中关于表的约束介绍
    一、空属性 在MySQL中,空属性约束指定了某一列是否可以包含NULL值。 它们用于各种目的,例如数据验证和限制数据的输入格式。 NOT NULL:当
  • MySQL按时间进行表分区的方法
    创建按月份分区的表 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 create table if not exists table_name ( id bigint auto_increment comment 主键id, create_by varchar(64) not null
  • mysql数据库提权的三种方法

    mysql数据库提权的三种方法
    MySql提权的三种方式: udf提权 mof提权 启动项提权 以下是一些常见的数据库及其默认端口: 1. MySQL: 默认端口为 3306 2. PostgreSQL: 默认端口为
  • 解决ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘

    解决ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘
    最近在学习Django框架,于是在windows系统上搭建了Django环境,并使用虚拟机ubuntu系统上安装的mysql作为项目的远程数据库,前几天一直用得好
  • mysql中xtrabackup全量备份/增量备份及恢复

    mysql中xtrabackup全量备份/增量备份及恢复
    一、测试前准备 mysql数据库 端口 3306 数据文件目录 /data/mysql/3306/data 安装目录 /usr/lcoal/mysql 配置文件 /etc/my.cnf 创建数据库 testXtra 创建备份目
  • 深入理解MySQL8.0默认TCP端口
    1、本文内容 选择题 TCP/IP MySQL 8.0 的默认TCP端口 show variables查看 总结 2、选择题 A、3306 B、33060 C、33062 D、33063 3、TCP/IP TCP/IP(Transmission Cont
  • MySQL8全文索引的实现方法

    MySQL8全文索引的实现方法
    创建索引 之前未尝试过使用MySQL8的全文索引,今天试一试看看什么效果,否则跟不上时代了都。 创建索引非常简单,写句SQL就行。 1 2 3 4
  • MySQL8.0 MGR的维护管理
    现在有个三节点的MGR集群: 1 2 3 4 5 6 7 8 9 mysql select * from performance_schema.replication_group_members; +---------------------------+-------------------------------
  • 探讨MySQL约束下的查询功能

    探讨MySQL约束下的查询功能
    一. 数据库约束: 1.约束类型汇总: 约束类型 说明 NULL约束 使用NOT NULL指定列不为 空 UNIQUE唯一约束 指定列为唯一的、不重复的 DEFAULT默认值
  • MySQL文件权限存在的安全问题和解决方案

    MySQL文件权限存在的安全问题和解决方案
    在实际生产环境中,应按照软件安全设计的「最小特权原则」设置MySQL的文件权限。 MySQL「安装目录」的属主和属组需要设置成mysql用户;
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计