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

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;

    推荐阅读
  • 腊鱼干的做法和配方(腊鱼干的做法和配方介绍)

    腊鱼干的做法和配方主料:草鱼2500G。草鱼处理干净,抹干水份。调腌料,盘里放盐,生抽,少许老抽,姜丝,胡椒粉,米酒,白砂糖,和匀。倒入鱼块中,用手抓匀,入味腌3小时以上,或用腌一晚,第二天即可用竹签串挂起来晾晒。晾晒了一天一夜的鱼干,表面水份都干了,继续晾晒至全干为止即可,需时约5天左右,视天气情况而定。

  • 秋天的别称和雅称(秋天的别称和雅称简单介绍)

    接下来我们就一起去研究一下吧!秋天的别称和雅称秋天的别称和雅称:首秋、上秋、瓜秋、早秋、新秋、肇秋、兰秋、正秋、中秋、桂秋、秋高、晚秋、凉秋、暮秋、秋末、残秋、素秋、穷秋、金天、商秋、西陆、白藏、爽节、请求、高秋、霜天等。秋季,是“春夏秋冬”四季之一。在我国,传统上是以二十四节气的“立秋”作为秋季的起点。进入秋季,意味着降雨、湿度等趋于下降或减少,在自然界中万物开始从繁茂成长趋向萧索成熟。

  • 华中科技大学优势专业及分数线(华中科技大学专业录取分大比拼)

    华中科技大学位于湖北省武汉市,是教育部直属重点综合性大学,也是985、211、双一流高校。2019年吉林省理科专业录取分数线:吉林省排在前几名的依然是临床八年、计算机、电气工程及其自动化。2019年湖南省理科专业录取分数线:湖南省分数排名前几的专业依次为临床八年、计算机类、电气工程及其自动化,录取分数分别为651、641、639分。

  • 英语四六级过了可以干什么工作(别说英语没用了)

    只要是学生们的能力保持中等水平,成绩相差不会超过20分。4类工作和“四六级”挂钩,有证后就业更顺利空乘类工作,尤其是飞国际航班我们在坐飞机的时候,经常能够听见广播中会使用英文进行播报。是否有大学英语四六级证书。但在在国际航班的岗位上,要求是非常严格的。如果乘客的体验感极差的话,是会进行投诉相关工作人员的。这对一名空乘人员来说,绝对是工作上永远无法抹去的污点的。

  • 喝柠檬水有什么禁忌(喝柠檬水的禁忌)

    下面内容希望能帮助到你,我们来一起看看吧!喝柠檬水有什么禁忌由于富含果酸,经期不要喝,以免腹痛。不易过酸,以免损伤牙釉质,为此可切1-2片柠檬,还可加入一勺蜂蜜,凉或温开水直接冲泡饮用。痰多、伤风感冒、胃寒气滞、腹部胀满者不易食用。不宜与阿司匹林同服。

  • 希望阳光很暖微风不燥的句子(希望阳光很暖微风不燥)

    做个稳妥的人、不要高估两年内的自己;也不要低估十年后的自己。穷与丑能同时拥有,鱼和熊掌却不可兼得,你不要在最美的年纪里,一个劲儿的省钱,不然你不仅穷,还丑!你没权利看不惯我的生活方式,但你有权抠瞎自己的双眼。人生就像蒲公英,看似自由,却往往身不由己。生活没有如果,只有结果,自己尽力了,努力了,就好。如涉及版权问题,请作者持权属证明与本网联系

  • 刚需首套房最好面积(刚需93从毛坯到硬装结束)

    对于这套刚需住宅,业主一家提出了以下需求:装修需求家里只有一个阳台,但业主希望不仅是用来洗衣晾晒也渴望有休闲的场所;原始户型开发商提供了一个小书房,装修后希望能够保留;主卧要有衣帽间的功能,但也要安排一张1.6米的大床。一侧摆躺椅,喝茶看景;三间卧室全保留,并且给小书房做榻榻米书桌衣柜一体式的设计,打造成一间多功能房;为释放主卧更多空间,砖砌衣柜打造一个最省地方的“衣帽间”!

  • 咒印佐助疾风传怎么获得(带你深入了解游戏规则)

    以下内容大家不妨参考一二希望能帮到您!咒印佐助疾风传怎么获得获得方式唯一途径:关注游戏中的各种活动。平民玩家的福音,需要关注获得,即可获取咒印佐助以及咒印佐助碎片。登场加成:全属性+12.2%(满级)收集加成:攻击+3.0%(满级)

  • 小三是怎样了解出轨男人心(情感故事之小三自白)

    朋友都叫了陪唱小姐,阿华也不例外,他要了我的台。阿华和他老婆开了家羊毛衫厂,他管生产,老婆管销售,经过几年的打拼,原始积累越滚越大,如今资产已经接近了1000万。阿华也想过离婚,但他老婆死活不同意。对阿华的遭遇,我深感同情。目前阿华正在联系律师,准备诉讼离婚。等到阿华解除了和他老婆的婚约后,我要把处女身献给阿华。当然,我现在已离开了那家歌舞厅,在阿华的联系下,我在一家贸易公司当会计。

  • 2022北京中考延庆区一分一段统计表 北京市延庆区一中分数线

    分数本段人数累计人数655分以上3365536541465346521565127650310649414648317647219646196453226442246436306425356417426406486392506381060637107063667663510866347936338101632101116311612763015142629815062810160627101706