MySQL按时间拆分千万级大表的实现代码

 更新时间:2023年09月26日 14:40:12   作者:攻城狮悠扬  
这篇文章主要介绍了MySQL按时间拆分千万级大表,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

1.创建存储过程

#-----创建存储过程
CREATE PROCEDURE ctrlcctrlv_table(var VARCHAR(20))
BEGIN
SET @param1 = concat('ALTER TABLE ', var, ' RENAME ', var, DATE_FORMAT(NOW(), '%Y_%m_%d'));
PREPARE stmt FROM @param1;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @param2 = concat('CREATE table ', var, ' like ', var, DATE_FORMAT(NOW(), '%Y_%m_%d'));
PREPARE stmt1 FROM @param2;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END;

2.创建EVEN事件

#-----创建存储过程
CREATE PROCEDURE ctrlcctrlv_table(var VARCHAR(20))
BEGIN
SET @param1 = concat('ALTER TABLE ', var, ' RENAME ', var, DATE_FORMAT(NOW(), '%Y_%m_%d'));
PREPARE stmt FROM @param1;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @param2 = concat('CREATE table ', var, ' like ', var, DATE_FORMAT(NOW(), '%Y_%m_%d'));
PREPARE stmt1 FROM @param2;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END;

3.启用EVEN

#-----创建存储过程
CREATE PROCEDURE ctrlcctrlv_table(var VARCHAR(20))
BEGIN
SET @param1 = concat('ALTER TABLE ', var, ' RENAME ', var, DATE_FORMAT(NOW(), '%Y_%m_%d'));
PREPARE stmt FROM @param1;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
SET @param2 = concat('CREATE table ', var, ' like ', var, DATE_FORMAT(NOW(), '%Y_%m_%d'));
PREPARE stmt1 FROM @param2;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END;

4.测试存储过程

#--测试存储过程执行情况
call ctrlcctrlv_table("zong_biao"); 

来点干货在mysql里面测试一下

创建一张测试表

CREATE TABLE `test_cut_demo` (
  `id` int NOT NULL AUTO_INCREMENT,
  `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `create_time` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `day` datetime DEFAULT NULL COMMENT '日期',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2997 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

添加一个循环插入的EVENT

#--创建循环测试插入数据
delimiter $$
create event event_insert_SECOND 
on schedule every 2 SECOND  STARTS   CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
COMMENT 'xiaowu create'
do 
    BEGIN
           insert into new_cut.test_cut_demo(username,password,create_time,day) values("李四","tomcat",now(),curdate());
    END $$
delimiter ;
#----红色库名,蓝色表明

添加事件启动

alter event event_insert_SECOND on completion preserve enable; 

查看数据库表中是否开始循环插入数据

MySQL按时间拆分千万级大表

调用存储过程测试是否可以进行表切割

#--测试存储过程执行情况
call ctrlcctrlv_table("test_cut_demo"); 

到此这篇关于MySQL按时间拆分千万级大表的文章就介绍到这了,更多相关MySQL千万级大表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL基于索引的压力测试的实现

    MySQL基于索引的压力测试的实现

    本文主要介绍了MySQL基于索引的压力测试的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • mysql 5.7.17 winx64安装配置方法图文教程

    mysql 5.7.17 winx64安装配置方法图文教程

    这篇文章主要为大家分享了mysql 5.7.17winx64安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • MySQL中按照多字段排序及问题解决

    MySQL中按照多字段排序及问题解决

    这篇文章主要介绍了MySQL中按照多字段排序及问题解决的方法,非常的实用,有需要的小伙伴可以参考下。
    2015-03-03
  • prometheus监控MySQL并实现可视化的操作详解

    prometheus监控MySQL并实现可视化的操作详解

    mysqld_exporter 是一个用于监控 MySQL 服务器的开源工具,它是由 Prometheus 社区维护的一个官方 Exporter,本文给大家介绍了prometheus监控MySQL并实现可视化的操作,文中通过代码和图文讲解的非常详细,需要的朋友可以参考下
    2024-04-04
  • MySQL 撤销日志与重做日志(Undo Log与Redo Log)相关总结

    MySQL 撤销日志与重做日志(Undo Log与Redo Log)相关总结

    这篇文章主要介绍了MySQL 撤销日志与重做日志(Undo Log与Redo Log)相关总结,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-03-03
  • mysql 子查询与连接表详情

    mysql 子查询与连接表详情

    这篇文章主要介绍了mysql 子查询与连接表,格式化SQL 包含子查询的SELECT语句难以阅读和调试,特别是它们较为复杂时更是如此,对于能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询,下面请跟雄安边一起来看看详细内容吧
    2021-10-10
  • MySQL学习之数据库备份详解

    MySQL学习之数据库备份详解

    本篇文章主要介绍了MySQL中的 数据库备份详解,有需要的朋友可以借鉴参考下,希望可以有所帮助,祝大家多多进步,早日升职加薪
    2021-09-09
  • SQL实现相邻两行数据的加减乘除操作

    SQL实现相邻两行数据的加减乘除操作

    这篇文章主要介绍了SQL实现相邻两行数据的加减乘除操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • MySQL安装过程中在第四步initializing database出错的解决方法

    MySQL安装过程中在第四步initializing database出错的解决方法

    安装mysql时,在第四步一直卡住了显示失败,文中通过图文介绍的解决方法非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家
    2023-09-09
  • MySQL 密码增强插件

    MySQL 密码增强插件

    这篇文章主要介绍了MySQL 密码增强插件的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07

最新评论