mysql創建分區時依賴字段需要設為主鍵 例 我的依賴字段為collect_time
需要先創建至少一個分區 例:創建第一個分區時間小於’2020-02-01’
ALTER TABLE tb_electric_power_info PARTITION BY RANGE (TO_DAYS(collect_time))
(partition p20200201 values less than (to_days(‘2020-02-01’))
)
創建存儲過程自動分區
BEGIN
#Routine body goes here...
/* 到系統表查出這個表的最大分區,得到最大分區的日期。在創建分區的時候,名稱就以日期格式存放,方便后面維護 */
SELECT REPLACE(partition_name,'p','') INTO @P12_Name FROM INFORMATION_SCHEMA.PARTITIONS
WHERE table_name='tb_electric_power_info' ORDER BY partition_ordinal_position DESC LIMIT 1;
SET @Max_date= DATE(DATE_ADD(@P12_Name+0, INTERVAL 1 MONTH))+0;
/* 修改表,在最新分區的后面增加一個分區,時間范圍加1月 */
SET @s1=CONCAT('ALTER TABLE tb_electric_power_info
ADD PARTITION (PARTITION p',@Max_date,' VALUES LESS THAN (to_days(''',DATE(@Max_date),''')))');
/* 輸出查看增加分區語句*/
SELECT @s1;
PREPARE stmt2 FROM @s1;
EXECUTE stmt2;
DEALLOCATE PREPARE stmt2;
/* 取出最小的分區的名稱,並刪除掉 。
注意:刪除分區會同時刪除分區內的數據,慎重 */
/*select partition_name into @P0_Name from INFORMATION_SCHEMA.PARTITIONS
where table_name='tb_electric_power_info' 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
3.新建事件在每個月1號觸發
————————————————
版權聲明:本文為CSDN博主「tyroxyz」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_38762283/article/details/105578950