Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
MySQL每天自动增加分区如何实现_创想鸟

MySQL每天自动增加分区如何实现

每天大约有三百万条数据存储在tb_3a_huandan_detail这个表中。查询太慢了,网上了解了一下,可以做表分区。由于数据较大,所以决定做定时任务每天执行存过自动进行分区。

1、在进行自动增加分区前一定得先对表手动分几个区

ALTER TABLE tb_3a_huandan_detail PARTITION BY RANGE (TO_DAYS(ServiceStartTime))(    PARTITION p20160523 VALUES LESS THAN (TO_DAYS('2016-05-23')),    PARTITION p20160524 VALUES LESS THAN (TO_DAYS('2016-05-24')),    PARTITION p20160525 VALUES LESS THAN (TO_DAYS('2016-05-25')),    PARTITION p20160526 VALUES LESS THAN (TO_DAYS('2016-05-26')),    PARTITION p20160527 VALUES LESS THAN (TO_DAYS('2016-05-27')))

2、分区存过如下:

魔乐社区 魔乐社区

天翼云和华为联合打造的AI开发者社区,支持AI模型评测训练、全流程开发应用

魔乐社区 102 查看详情 魔乐社区

DELIMITER $$USE `nres`$$DROP PROCEDURE IF EXISTS `create_Partition_3Ahuadan`$$CREATE DEFINER=`nres`@`%` PROCEDURE `create_Partition_3Ahuadan`()BEGIN/* 事务回滚,其实放这里没什么作用,ALTER TABLE是隐式提交,回滚不了的。*/    DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK;    START TRANSACTION;/* 到系统表查出这个表的最大分区,得到最大分区的日期。在创建分区的时候,名称就以日期格式存放,方便后面维护 */    SELECT REPLACE(partition_name,'p','') INTO @P12_Name FROM INFORMATION_SCHEMA.PARTITIONS    WHERE table_name='tb_3a_huandan_detail' ORDER BY partition_ordinal_position DESC LIMIT 1;     SET @Max_date= DATE(DATE_ADD(@P12_Name+0, INTERVAL 1 DAY))+0;/* 修改表,在最大分区的后面增加一个分区,时间范围加1天 */    SET @s1=CONCAT('ALTER TABLE tb_3a_huandan_detail ADD PARTITION (PARTITION p',@Max_date,' VALUES LESS THAN (TO_DAYS (''',DATE(@Max_date),''')))');    /* 输出查看增加分区语句*/    SELECT @s1;    PREPARE stmt2 FROM @s1;    EXECUTE stmt2;    DEALLOCATE PREPARE stmt2;/* 取出最小的分区的名称,并删除掉 。    注意:删除分区会同时删除分区内的数据,慎重 */    /*select partition_name into @P0_Name from INFORMATION_SCHEMA.PARTITIONS    where table_name='tb_3a_huandan_detail' order by partition_ordinal_position limit 1;    SET @s=concat('ALTER TABLE tb_3a_huandan_detail DROP PARTITION ',@P0_Name);    PREPARE stmt1 FROM @s;    EXECUTE stmt1;    DEALLOCATE PREPARE stmt1; *//* 提交 */    COMMIT ; END$$DELIMITER ;

3、增加定时事件

DELIMITER ||CREATE EVENT Partition_3Ahuadan_event          ON SCHEDULE          EVERY 1 day STARTS '2016-05-27 23:59:59'          DO      BEGIN          CALL nres.`create_Partition_3Ahuadan`; END ||DELIMITER ;

以上就是MySQL每天自动增加分区如何实现的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/270617.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PHP与Java AES加密解密如何实现相同效果?
上一篇 2025年11月4日 12:11:11
荣耀play4tpro语音助手怎么唤醒_荣耀play4tpro语音助手唤醒方法
下一篇 2025年11月4日 12:11:15

相关推荐

发表回复

登录后才能评论
关注微信