您好,登錄后才能下訂單哦!
這篇文章主要介紹了MySQL每天自動增加分區(qū)如何實現(xiàn)的相關(guān)知識,內(nèi)容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇MySQL每天自動增加分區(qū)如何實現(xiàn)文章都會有所收獲,下面我們一起來看看吧。
有一個表tb_3a_huandan_detail,每天有300W左右的數(shù)據(jù)。查詢太慢了,網(wǎng)上了解了一下,可以做表分區(qū)。由于數(shù)據(jù)較大,所以決定做定時任務(wù)每天執(zhí)行存過自動進行分區(qū)。
1、在進行自動增加分區(qū)前一定得先對表手動分幾個區(qū)
ALTER TABLE tb_3a_huandan_detail PARTITION BY RANGE (TO_DAYS(ServiceStartTime)) ( PARTITION p20160523 VALUES LESS THAN (TO_DAYS('2016-05-23')), PARTITION p20160524 VALUES LESS THAN (TO_DAYS('2016-05-24')), PARTITION p20160525 VALUES LESS THAN (TO_DAYS('2016-05-25')), PARTITION p20160526 VALUES LESS THAN (TO_DAYS('2016-05-26')), PARTITION p20160527 VALUES LESS THAN (TO_DAYS('2016-05-27')) )
2、分區(qū)存過如下:
DELIMITER $$ USE `nres`$$ DROP PROCEDURE IF EXISTS `create_Partition_3Ahuadan`$$ CREATE DEFINER=`nres`@`%` PROCEDURE `create_Partition_3Ahuadan`() BEGIN /* 事務(wù)回滾,其實放這里沒什么作用,ALTER TABLE是隱式提交,回滾不了的。*/ DECLARE EXIT HANDLER FOR SQLEXCEPTION ROLLBACK; START TRANSACTION; /* 到系統(tǒng)表查出這個表的最大分區(qū),得到最大分區(qū)的日期。在創(chuàng)建分區(qū)的時候,名稱就以日期格式存放,方便后面維護 */ SELECT REPLACE(partition_name,'p','') INTO @P12_Name FROM INFORMATION_SCHEMA.PARTITIONS WHERE table_name='tb_3a_huandan_detail' ORDER BY partition_ordinal_position DESC LIMIT 1; SET @Max_date= DATE(DATE_ADD(@P12_Name+0, INTERVAL 1 DAY))+0; /* 修改表,在最大分區(qū)的后面增加一個分區(qū),時間范圍加1天 */ SET @s1=CONCAT('ALTER TABLE tb_3a_huandan_detail ADD PARTITION (PARTITION p',@Max_date,' VALUES LESS THAN (TO_DAYS (''',DATE(@Max_date),''')))'); /* 輸出查看增加分區(qū)語句*/ SELECT @s1; PREPARE stmt2 FROM @s1; EXECUTE stmt2; DEALLOCATE PREPARE stmt2; /* 取出最小的分區(qū)的名稱,并刪除掉 。 注意:刪除分區(qū)會同時刪除分區(qū)內(nèi)的數(shù)據(jù),慎重 */ /*select partition_name into @P0_Name from INFORMATION_SCHEMA.PARTITIONS where table_name='tb_3a_huandan_detail' order by partition_ordinal_position limit 1; SET @s=concat('ALTER TABLE tb_3a_huandan_detail DROP PARTITION ',@P0_Name); PREPARE stmt1 FROM @s; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; */ /* 提交 */ COMMIT ; END$$ DELIMITER ;
3、增加定時事件
DELIMITER || CREATE EVENT Partition_3Ahuadan_event ON SCHEDULE EVERY 1 day STARTS '2016-05-27 23:59:59' DO BEGIN CALL nres.`create_Partition_3Ahuadan`; END || DELIMITER ;
關(guān)于“MySQL每天自動增加分區(qū)如何實現(xiàn)”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“MySQL每天自動增加分區(qū)如何實現(xiàn)”知識都有一定的了解,大家如果還想學習更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。