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

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

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

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;

    推荐阅读
  • 长沙的方特乐园在哪里(长沙方特东方神画6日开园)

    长沙的方特乐园在哪里上午8时30分,随着悠扬鼓乐响起,古装舞者大气唯美的舞蹈拉开了开园仪式的序幕。高山在致辞时表示,推动文旅融合发展是长沙坚定不移的目标。项目的竣工开园,彰显了长沙打造全国一流营商环境的信心和决心,体现了华强方特讲好中国故事、传播中国文化的水平和能力。未来,长沙方特东方神画有望成为湖南文化旅游的一张特色新名片。

  • 关于狗的老话古语(狗年话狗文化为何有关)

    狗,是人类最早驯化的动物,也是饲养率最高的宠物,与马、牛、羊、猪、鸡并称“六畜”。“狗”在中国生肖文化里,排名第11位。这是说,从人类穴居并从事狩猎和采集时起,狗就开始和人类朝夕为伍了。唐代朝廷设“狗坊”,是专为皇帝饲养猎犬的官署。到了近现代社会,经培育改良,狗的品种不断增加,可谓繁盛兴旺!全天候执勤守卫,日夜不休,无怨无悔——谓之“劳”!将众美德集于一身者,故谓之:人类最忠实的朋友。

  • 王者荣耀孙策怎么玩(孙策怎么玩最强)

    王者荣耀孙策怎么玩孙策定位为战士,被动技能是“怒潮”,每6秒孙策普攻附带额外物理伤害,命中目标后恢复生命值。航行时间结束时,船都会爆炸造成一次范围物理伤害和击飞。从技能来看孙策是集输出,防御,控制,位移,续航于一身的强大战士,大招对于孙策来说非常关键。

  • 祖母绿会变绿柱石吗(原来祖母绿并不是绿色绿柱石)

    原来祖母绿并不是绿色绿柱石---宝石百科之绿柱石---大名鼎鼎的祖母绿和海蓝宝石、小众的摩根石,都来自同一个家族:绿柱石今天百科君就先介绍绿柱石这一豪门!前半部分都是基础内容,开眼界的在文末哦~(*´▽`*)(*´▽`*)绿柱。

  • 7月份十二星座美甲幸运色(12星座10月幸运色美甲款式来了)

    #头条创作挑战赛#水逆这段期间,想来很多北鼻过得有点艰难,尤其是心里压力巨大....终于,水逆结束了。以后都是好运连好运!祝大家暴富脱单!来吧,一起看看12星座的幸运色是什么,为大家专门汇总这期10月幸运色美甲款式合集!通勤款~金光闪闪发大财释放野性温柔款~大理石晕染,黑色不单调童话城堡~姐姐永远爱豹纹也有温柔波点豹纹~黑色搭配粉猫眼绝绝子五彩斑斓黑达成!

  • 易县太行水镇滑雪(元宵将至保定易县恋乡)

    #头条带你乐享河北##我是大美河北推荐官#闹花灯迎元宵在元宵佳节来临之际,省内各大景区张灯结彩,年味依旧浓郁。元宵节将至,畅游石家庄土门关驿道小镇,可以在许愿签墙写下新年祝福,品尝晋、陕、冀三省美食,观赏民俗特色表演、魔术表演,节目丰富多彩。红崖谷滑雪场位于石家庄市平山县温塘镇,迎接元宵佳节,红崖谷滑雪场特别推出惠民滑雪活动。

  • 头顶染太黄了怎么补救(这几种方法都可尝试)

    头顶染太黄了怎么补救?下面希望有你要的答案,我们一起来看看吧!勤洗头发,由于染发剂是利用植物或者化学的色素制成的,因此染好的头发在前一个星期左右都会有不同程度的掉色现象,此时通过勤洗头发可以使头顶的颜色逐渐变浅,看起来没有那么黄,稍微好看些。

  • 语文中考古诗词赏析题(中考语文古诗词鉴赏)

    酒酣胸胆尚开张。少年有意伏中行,馘名王,扫沙场。欲上治安双阙远,空怅望,过维扬。宋室南渡后金人多次攻入扬州,破坏惨重。这种尖锐态度和批判精神,在同代词人中也是少见的。这些单调的景物,为读者展现了维扬劫后的荒凉。英雄少年要杀敌立功、扫荡沙场。C.甲词上片记叙此次出猎的情况,下片以议论为主。李好古虽目睹维扬破败,痛心惆怅,但仍有御敌情怀。

  • 荞面的营养价值和功效(荞麦面面的营养价值及功效)

    荞麦中含有黄酮的成分就是抗菌,抗炎,止咳平喘的作用。

  • 阿胶糕怎么做(家庭版阿胶糕做法)

    阿胶鹿茸人参,称为滋补三宝,阿胶糕怎么做?先准备阿胶、黄酒、芝麻、红枣、核桃、桂圆、枸杞这些材料,我来为大家科普一下关于阿胶糕怎么做?以下内容希望对你有帮助!