肥宅钓鱼网
当前位置: 首页 钓鱼百科

mysql分区表每天新增(MySQL按月自动创建分区表)

时间:2023-08-13 作者: 小编 阅读量: 3 栏目名: 钓鱼百科

mysql分区表每天新增?对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层表的对象封装,但对SQL层来说是一个完全封装底层的黑盒子。MySQL实现分区的方式也意味着索引也是按照分区的子表定义,没有全局索引。分区表的好处是1、可以让单表存储更多的数据。

mysql分区表每天新增?对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层表的对象封装,但对SQL层来说是一个完全封装底层的黑盒子,接下来我们就来聊聊关于mysql分区表每天新增?以下内容大家不妨参考一二希望能帮到您!

mysql分区表每天新增

什么是表分区?

对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层表的对象封装,但对SQL层来说是一个完全封装底层的黑盒子。

MySQL实现分区的方式也意味着索引也是按照分区的子表定义,没有全局索引

分区的意思是指将同一表中不同行的记录分配到不同的物理文件中,几个分区就有几个.idb文件。MySQL数据库的分区是局部分区索引,一个分区中既存了数据,又放了索引。也就是说,每个区的聚集索引和非聚集索引都放在各自区的(不同的物理文件)。

分区表的好处是

1、可以让单表存储更多的数据

2、分区表的数据更容易维护,可以通过删除与那些数据有关的分区,更容易删除数据,也可以增加新的分区来支持新插入的数据。另外,还可以对一个独立分区进行优化、检查、修复等操作。

3、部分查询能够从查询条件确定只落在少数分区上,查询速度会很快

4、通过跨多个磁盘来分散数据查询,来获得更大的查询吞吐量

新建分区表

-- 假设有个表叫tmp_logs,设置分区条件为按end_time按月分区DROP TABLE IF EXISTS `tmp_logs`;CREATE TABLE `tmp_logs` (`id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,`start_time` datetime NOT NULL,`end_time` datetime NOT NULL,`memo` varchar(128) CHARACTER SET utf8mb4 NOT NULL,PRIMARY KEY (`id`,`end_time`)) ENGINE=InnoDB DEFAULT CHARSET=utf8PARTITION BY RANGE (TO_DAYS(end_time))(PARTITION p_202112 VALUES LESS THAN (TO_DAYS('2022-01-01')),PARTITION p_202201 VALUES LESS THAN (TO_DAYS('2022-02-01')),PARTITION p_202202 VALUES LESS THAN (TO_DAYS('2022-03-01')),PARTITION p_202203 VALUES LESS THAN (TO_DAYS('2022-04-01')));

存储过程,每月创建新的分区

-- create_table_partition 为创建表分区,调用后为该表创建到下月结束的表分区DELIMITER $$DROP PROCEDURE IF EXISTS create_table_partition$$CREATE PROCEDURE `create_table_partition`(IN `table_name` varchar(64))BEGINSET @next_month = CONCAT(date_format(date_add(now(),interval 2 month),'%Y-%m'),'-01');SET @next_p = CONCAT(date_format(date_add(now(),interval 1 month),'%Y%m') );SET @SQL = CONCAT( 'ALTER TABLE `', table_name, '`', ' ADD PARTITION (PARTITION p_', @next_p, " VALUES LESS THAN (TO_DAYS('", @next_month ,"')) );" );PREPARE STMT FROM @SQL;EXECUTE STMT;DEALLOCATE PREPARE STMT;END$$DELIMITER ;

存储过程,删除历史分区,空间回收

-- delete_table_partition 为删除N月前的表分区,方便历史数据空间回收DELIMITER $$DROP PROCEDURE IF EXISTS delete_table_partition$$CREATE PROCEDURE `delete_table_partition`(`str_table_name` VARCHAR(64),`int_reserved_month` INT)BEGINDECLARE str_part_name VARCHAR(64);DECLARE DOne INT DEFAULT 0;DECLARE cursor1 CURSOR FOR SELECT partition_name from information_schema.partitions where table_schema = 'webrtc'and table_name=str_table_name and partition_description<=TO_DAYS(CONCAT(date_format(date_sub(now(),interval int_reserved_month month),'%Y-%m'),'-01'));DECLARE CONTINUE HANDLER FORSQLSTATE '02000' SET done = 1;open cursor1;read_loop: LOOPFETCH cursor1 INTO str_part_name ;IF done=1 THENLEAVE read_loop;END IF;SET @SQL = CONCAT( 'ALTER TABLE `', str_table_name, '` DROP PARTITION ', str_part_name, ";" );PREPARE STMT FROM @SQL;EXECUTE STMT;DEALLOCATE PREPARE STMT;END LOOP;CLOSE cursor1;END$$DELIMITER ;

触发器,每月自动新建分区,并删除旧分区

-- 创建一个Event,每个月的一号凌晨1点执行存储过程,自动创建创建表分区,同时最多保存6个月的数据DELIMITER $$CREATE EVENT IF NOT EXISTS `event_records_auto_partition`ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)ON COMPLETION PRESERVE ENABLEDOBEGINcall create_table_partition('tmp_logs');call delete_table_partition('tmp_logs',18);END$$DELIMITER ;

备注,MySQL EVENT 操作事项:

要使定时事件起作用,MySQL的常量GLOBAL event_scheduler必须为on或者是1。

1、查看scheduler的当前状态:

SHOW VARIABLES LIKE 'event_scheduler';SELECT @@event_scheduler;

2、修改scheduler状态为打开(0:off , 1:on):

SHOW VARIABLES LIKE 'event_scheduler'; -- 查看是否开启定时器(OFF:关闭,ON:开启)

3、临时打开定时器(四种方法):

a、SET GLOBAL event_scheduler=ON;b、SET @@global.event_scheduler=ON;c、SET GLOBAL event_scheduler=1;d、SET @@global.event_scheduler=1;

4、永久生效的方法,修改配置文件my.cnf

event_scheduler = 1 #或者ON

5、临时开启某个事件

ALTER EVENT ent_test ENABLE;

6、临时关闭某个事件

ALTER EVENT ent_test DISABLE;

    推荐阅读
  • 驻马店城建很好(不要一提驻马店就想到总部)

    不要一提驻马店就想到总部其实,驻马店也不知道自己惹了谁这个城市在网络时代刚开始的时候,就火遍了大江南北说起“总部”,驻马店人都是一脸苦涩多灾多难的过去,自然资源的制约,还有天灾,又遭受了种种误解和骂名但即使是这样,驻马店仍然。

  • 2021中国教育电视台一套孙秀梅家庭教育直播课在哪看?

    为帮助孩子树立正确的人生观、价值观,中国教育电视台一套将于2021年10月23日(本周六)早上7:52左右播出由著名家庭教育专家孙秀梅主讲的《家庭教育的责任与未来》教育专题节目。主要内容是指导家长正确处理在教育孩子过程中遇到的问题。直播时间:2021年10月23日07:52左右直播入口:点击进入本期播出主要内容:一、家庭教育的责任有哪些二、家长在家庭教育中的角色定位三、孩子希望父母的角色定位有哪些

  • sql语言的数据操纵语句使用最频繁的是 sql语言的数据库语句分类

    2、sql语言的数据库语句分为数据定义语句还有:DDL数据操纵语句:DML数据查询语句:DQL数据控制语句:DCL。

  • 鸡肉陷饺子做法大全(鸡肉陷饺子家常做法)

    鸡肉搅成肉未,芹菜切碎,把所有食材放入容器,加入调味料,顺时针方向搅拌均匀。中间再次加入少许清水,继续煮至熟透就可以捞出。食材明细:饺子皮445克,新鲜香菇5个,鸡胸肉1块,香葱适量,料酒适量,生抽适量,盐适量,胡椒粉适量,鸡精适量。将已洗净的新鲜香菇放在案板上切碎,待用。将已清洗的鸡胸肉放在案板上剁碎。接着,取饺子皮放入香菇鸡肉馅。放入盐,麻辣鲜,味极鲜,打入一个鸡蛋。

  • 植树节吉祥语(植树节的祝福语有哪些)

    5、给地球一点色彩,一起动起来!

  • 韩国经典催泪神剧对不起我爱你(中韩两版命中注定我爱你大比拼)

    Anna为了舞蹈前往纽约,存希也答应等她三年,但Anna离开后,存希却阴错阳差的发生史上最扯的一夜情,意外让“便利贴女孩”欣怡怀孕!在奶奶的逼迫下,他娶了欣怡。生活平凡的欣怡,竟然跟存希这种人人爱慕的白马王子发生了一夜情,而且还怀孕了。李健李健演员张赫拥有着金钱、且魅力无边的男人,全州李氏9代单传独子。金美英金美英演员张娜拉大韩民国具有代表性的平凡女人。

  • 女人有哪些杂志可以看(女性合集整理的精品呈现)

    诸生黄鼎妹,布衣杨元勋妻。因此,赵青女士编校的《黄媛贞黄媛介合集》,称得上是为学界的继续研究提供了扎实、准确、全面的基础,值得关注。赵青此处的考量,显然依据前者。本书首次对《云卧斋诗稿》进行了细致入微的校订整理,并从传世文献中辑录佚作作为补遗,完成了对黄媛贞别集的首次全面整理。三本书对黄氏姐妹的研究资料进行了系统勾勒。

  • 菁护金领冠奶粉价格表(宝宝奶粉排行榜中的金领冠菁护奶粉)

    新国标出炉之后,在宝宝奶粉排行榜中,有一遥遥领先的奶粉,引发了诸多新手父母的关注,就是伊利金领冠菁护奶粉。但作为新手父母,可能对于奶粉的不同种类并不了解,所以,通过下文的内容,大家可能会对A2奶粉以及伊利金领冠菁护奶粉有全新的认知。在众多的A2奶粉里,伊利金领冠菁护婴幼儿配方奶粉拔得头筹。

  • 珍珠白车漆修复方法(知识分享车漆有问题)

    珍珠白车漆修复方法汽车漆面对于汽车的美观性来说,它占据了绝dui的主导地位。车漆是车身上最易受伤的部分,车漆自身也是化学品,是脆弱的。局部位置有一两个黄点,需要检查是否油漆漆膜受损,被尖锐物划伤或被高速石子击打。对策:将破损处彻底清洁,选择最接近车色的补漆笔进行修补或前往4S店进行返修,在补漆完成后三天内切勿洗车。不及时对受伤的车漆进行修补,带腐蚀性的物质会慢慢氧化导致伤口表面生锈恶化,造成更大损失。

  • 擀面杖吹火的下一句(下一句一窍不通)

    以下内容希望对你有帮助!用擀面杖吹火,中间因无孔隙,自然是——窍不通”。比喻对某事一点儿也不懂。