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

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

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

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;

    推荐阅读
  • 孕妇梦见洗澡(孕妇梦见洗澡什么意思)

    下面希望有你要的答案,我们一起来看看吧!最后,孕妇经常性的梦到洗澡,也要注意一下健康方面的问题,平时要适当的做一些运动,还要注意晒太阳,不要经常待在室内,孕妈要保证有良好的身体,才能孕育出健康的宝宝。

  • 暗黑破坏神2重制版哪些职业厉害(暗黑2重制版什么职业最厉害)

    刺客Assassin强度★★★尴尬的干女儿两大套路:主修陷阱、龙虎刺客陷阱刺客一般是主流,生存强,亡者守卫有尸体爆炸的效果,电属性陷阱能达到几K的输出也不俗。龙虎刺客没有保命技能作为近战并不算太强势。标马则必须泰坦复仇。因为技能点数限制,不会三修,一般是冰火双修、电法、纯冰法打不动冰免疫通关比。较难,一般用来开荒刷装备,电法依赖无限,一般开荒通关只能冰火双修。各种光环破免疫、加抗性。

  • 大象是用什么辨别气味的(大象靠什么闻气味)

    接下来我们就一起去研究一下吧!大象是用什么辨别气味的大象靠鼻子辨别气味,除了可以辨别特殊气味,大象的鼻子还有很多的其它功能。大象非常聪明,能开辟场地,还能把死去的同伴安埋在落叶枯枝之中。大象分布极广,大约在四千万年以前,除了大洋洲和南极洲以外,各洲都有它的足迹,然而现在主要有亚洲象和非洲象两大类。

  • 西安太平万花山游览时间需要多久 陕西太平万花山风景区

    西安太平万花山游览时间大约须知半天至一天时间。65周岁以上的老人(含)凭居民身份证或陕西敬老优待证免票。现役军人凭军人有效证件免票。残疾人凭残疾证实行免票2、优惠政策6周岁(不含)至18周岁(含)未成年人凭居民身份证或学生证等有效证件实行半票。为回馈鄠邑区乡亲对本景区的支持,凡持本人鄠邑区籍身份证进入景区一律享有半价。西安太平峪万花山从早上8点运营至下午18点30分。

  • 北京十大画室怎么选(北京有哪些好画室)

    以中央美院设计和清华美院设计为培养核心的高端精品画室,目前已成长为北京美术培训界的清美央美设计领军品牌。约300人左右,属于中型画室。但其设计排名在北京也是极为靠前的。各省联考通过率100%,全国重点院校合格率96%,其历届学员数次获得央美,清华,国美,央戏等高校第一,是美术高考教育知名品牌。北京七点画室这十家画室是行业内普遍公认的,极具实力和教学特色的。

  • 春望杜甫古诗赏析(古诗词赏析杜甫)

    古代男子蓄长发,成年后束发于头顶,用簪子横插住,以免散开。“国破”和“城春”两个截然相反的意象,同时存在并形成强烈的反差。“草木深”三字意味深沉,表示长安城里已不再是市容整洁、井然有序了,而是荒芜破败,人烟稀少,草木杂生。烽火连月,家书不至,国愁家忧齐上心头,内忧外患纠缠难解。表现了在典型的时代背景下所生成的典型感受,反映了同时代的人们热爱国家、期待和平的美好愿望,表达了大家一致的内在心声。

  • 内裤穿一天有点黄是什么原因(内裤发黄到底是该换掉)

    另外,一般一条内裤的保质期只有半年,如果是自己经常穿,那么大概穿30次左右就应该丢弃了。

  • 粤菜腌牛肉的做法(粤菜腌牛肉怎么做)

    我们一起去了解并探讨一下这个问题吧!粤菜腌牛肉的做法主料:牛肉200g、香芹100g。辅料:沙茶王1/2汤匙、姜2片、盐1/2小勺、鸡精1小勺、食用油适量、生粉1/2小勺。牛肉切薄片、姜切丝、香芹去掉叶子洗净切段再切细。将牛肉、香芹、姜丝放入碗中。锅烧热加入油,跟平时炒菜的油量。倒入腌好的牛肉。大火炒至牛肉变色即可出锅。

  • 各种价位的组装电脑配置单(献给不懂电脑的朋友一套实用的组装配置)

    您还在组装机中游荡而找不到方向吗?组装机就是把所有电脑必备硬件组合后安装到机箱里面再安装好系统就可以直接使用了,组装一般都是非常的简单,难点就是选择硬件了,不懂配置、不懂硬件的朋友也是那些黑心的电脑店下手的对象,我们拒绝被以次充好及同质高价,那么这两点也就是一般无良维修商的高额利润所在,对我们个人来说也是衡量是否被坑的标准。机箱:航嘉天王星,拿货价格:50元。原创作品版权所有,未经允许禁止盗用。

  • 抖音发图片怎么配音乐 抖音发图片怎么配音乐怎么说话

    抖音发图片配音乐的方法是:1、打开手机中的抖音APP,在首页中点击下方的拍摄按钮。