MySQL 定時新增分區(qū)的實現(xiàn)示例
MySQL創(chuàng)建好分區(qū)之后,有時候會需要自動創(chuàng)建分區(qū)。比如,一些表數(shù)據(jù)量非常大,有些數(shù)據(jù)是熱點數(shù)據(jù),按照日期分區(qū)后,業(yè)務量還在走,就會需要過段時間再創(chuàng)建一次分區(qū)。身為程序員總是手動創(chuàng)建不能忍。
首先創(chuàng)建一個存儲過程,可以自動新增分區(qū)(如果需要自動刪除分區(qū),本文同樣適用)
DELIMITER $$ USE `me`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `add_schedule_log_partition`() BEGIN set @pname = concat('p',date_format(curdate(),'%Y%m%d')); set @nexttodays = to_days(date_add(curdate(), INTERVAL 1 DAY)); set @executeStr = concat('alter table s_schedule_log add partition (PARTITION ', @pname, ' VALUES LESS THAN (', @nexttodays, ' ))'); prepare stmt from @executeStr; execute stmt; deallocate prepare stmt; select @executeStr; END$$ DELIMITER ; ;
存儲過程可以手動call下,有沒有問題。然后寫個定時任務
DELIMITER || CREATE EVENT add_schedule_log_partition_event ON SCHEDULE EVERY 1 day STARTS '2022-05-15 01:00:00' DO BEGIN call `me`.`add_schedule_log_partition`; END || DELIMITER ;
注意:定時任務需要參數(shù)event_scheduler開啟狀態(tài),使用sql:show variables like '%schedule%' 查看狀態(tài)。
開啟任務狀態(tài):set global event_scheduler = 'ON'
通過存儲過程和定時任務實現(xiàn)MySQL分區(qū)的自動創(chuàng)建,解決大數(shù)據(jù)量下手動維護的繁瑣問題,
相關文章
MySQL高級篇之索引的數(shù)據(jù)結(jié)構(gòu)詳解
在MySQL中索引屬于存儲引擎級別的概念,不同存儲引擎對索引的實現(xiàn)方式是不同的,下面這篇文章主要給大家介紹了關于MySQL高級篇之索引數(shù)據(jù)結(jié)構(gòu)的相關資料,需要的朋友可以參考下2022-05-05mysql split函數(shù)用逗號分隔的實現(xiàn)
這篇文章主要介紹了mysql split函數(shù)用逗號分隔的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-10-10MySQL 發(fā)生同步延遲時Seconds_Behind_Master還為0的原因
騰訊云數(shù)據(jù)庫 MySQL 的只讀實例出現(xiàn)了同步延遲,但是監(jiān)控的延遲時間顯示為 0,而且延遲的 binlog 距離非 0,且數(shù)值越來越大。臨時解決之后,仔細想了一想,Seconds_Behind_Master 雖然計算方式有點坑,但是出現(xiàn)這么“巨大”的誤差還是挺奇怪的,本文就來分析下這個問題2021-06-06