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

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;

    推荐阅读
  • 光遇端游和手游互通吗(知名社交手游光)

    ---------------------------------12月30日,网易旗下知名手游《光·遇》iOS平台与安卓平台即将互通,具体的合服日期以及相关消息将会在5天内公布。小雷了解到,《光·遇》双平台合并后,玩家在不同平台、渠道的角色都会保存,不会合并,同时也不影响正常登录。《光·遇》是游戏开发商thatgamecompany的最新作品,国内由网易代理发行。基本操作比较简单,故事情节十分精巧,受到广大网友的一致好评。凭借清新唯美的游戏画面,《光·遇》曾荣获多项年度最佳游戏提名。

  • 猪心炖冰糖要多久时间(美味的冰糖心到底从何而来)

    冰糖心苹果,因其靠近果核部果肉糖分堆积成透明状,故称之为“冰糖心”。一般比较容易形成于昼夜温差较大、采摘较晚、成熟度较高的果园,在全国各个苹果产区均有分布。“冰糖心”苹果并不是某一种苹果的种类,而是指苹果的一种特殊状态——水心病。冰糖心苹果通常是因为种植条件的不同而在苹果内部积累了较多糖分、减少了酸味,对人类健康是完全无害的。解冻手抓饼,一切四。

  • 一天吃两个百香果会上火吗(一天吃两个百香果会上火吗女)

    另外,百香果籽吃起来脆脆的,并且味道较酸,可以增加口感,有增进食欲、促进消化的作用。百香果泡水的最佳搭配百香果冰糖茶原料百香果、冰糖、温水。做法1、冰糖放入杯中,倒入沸水,搅匀;2、将百香果切开,取出果肉;3、冰糖水转温后,将百香果放入杯中;4、搅拌均匀,即可饮用。

  • 多款经典车型为全新奔驰sl造势(四座GT敞篷跑车-新一代奔驰SL级曝光)

    日前,海外媒体获曝光一组全新梅赛德斯-AMGSL级的最新测试谍照。新车作为奔驰SL级第七代车型的AMG车型,将基于MSA模块化运动架构打造,并采用前中置后驱的布局。同时对外观以及内饰进行细节化升级。预计将在7-8月份正式亮相。看完上面的最新奔驰SL,我们接下来看一下现款奔驰SL,如下图就外观而言,新款奔驰SL要更炫酷一点,在外观方面就直击人心了,而现款要更稳重一点,不过两者各有各的好,如果是你,你更喜欢哪一款呢

  • 夏季吃喝什么清热去火(适合夏天喝的清热去火的茶有哪些)

    菊花茶有清热去火的作用,对改善、目涩很有帮助。同时,它还能明目,对治疗眼睛疲劳、视力模糊效果也不错。莲子心有清心、祛热、止血等功能,可治心烦、口渴、目赤肿痛等症,此清火茶可清心火、除烦热、降血压。并且苦丁茶还能有效的降血压、降血脂、利便降火、清咽利喉等作用。苦丁茶味苦性寒,能有效的疏风清热、明目生津,治疗的风热头痛、目赤齿痛等症状。

  • 耐磨地坪施工抹光机刀片如何调整角度(注意事项)

    耐磨地坪施工抹光机刀片如何调整角度要保证刀片的大小基本上一致,而且转动的时候一定要保持平衡。抹光机操作注意事项:使用前应检查电机、电器开关、电缆线和接线是否正常,是否符合规定,并安装漏电保护器。使用前应检查和清理抹盘上的杂物,以避免使用时整机跳动。操作人员应穿绝缘鞋,戴绝缘手套,电缆线由辅助人员提拿,辅助人员也应穿绝缘鞋和戴绝缘手套。注意防止电缆绝缘层被檫破而发生触电事故。

  • 腌牛排的腌制方法是什么(牛排怎样腌制)

    腌牛排的腌制方法是什么食材:牛排一块、黑胡椒适量、盐适量、大蒜适量、洋葱适量。首先需要准备两块牛排,然后准备黑胡椒和食用盐,再准备一些大蒜,洋葱。然后把牛排放入盆中将胡椒面和食用盐,还有蒜末,洋葱都倒入盆中,然后把他们搅拌均匀铺在牛排的两面,用手慢慢的揉搓,这样才能让牛排尽快的入味。在腌制牛排的时候要经常把牛排翻面,至少要腌制五至六个小时。

  • 披萨怎么做法(披萨怎么做教程)

    下面内容希望能帮助到你,我们来一起看看吧!披萨怎么做法首先把青红椒、火腿切丁,在准备好的面饼上均匀涂抹番茄沙司。在番茄沙司上撒上三分之一的马苏,铺上菜椒、火腿,放上鲜虾,在披萨酱的上面撒上一层奶酪丝。铺上所有的材料,烤箱上下火160℃,将披萨放入烤箱中层,加热25分钟后取出。170度烤约5分钟左右即可。

  • 蚝干的功效与作用(蚝干有哪些功效与作用)

    蚝干的功效与作用食用蚝干能提高免疫力,蚝干富含十分优良的蛋白质,肝糖元、维生素与矿物质、含有十八种以上的氨基酸。能帮助人体除去体内的活性酸素,提高免疫力,抑制衰老。食用蚝干能消除疲劳,蚝干中的牛磺酸与肝糖元不仅可以帮助肉体上疲劳的恢复同时对精神上疲劳的恢复也是十分有效的。食用蚝干能养颜美容,可以防止皮肤干燥,促进皮肤的新陈代谢,分解皮下黑色素,产生白里透红的娇嫩皮肤。

  • 高评分韩国战争电影排行榜(韩国高分电影王者)

    朴泰洙知道这人是一名检察官,检察官是这个国家能够牢牢掌握大权的人。朴泰洙意识到,自己即使拳头再硬,也敌不过检察官手中的权利。朴泰洙的正义感让他无法忍受,各种收集证据,在即将定罪时,却来人了。朴泰洙没有任何反击,迅速抱住了韩部长这个大腿。因为这个消息,韩部长没能成功当上检察长,他将这一切迁怒于朴泰洙,将其一顿暴打,随后为了撇清关系,直接把朴泰洙发配到偏远地区避风头,彻底沦为弃子。