Mysql分區(qū)創(chuàng)建與刪除方式
更新時間:2025年02月11日 09:34:22 作者:Donnedaen
本文詳細(xì)介紹了如何在MySQL中創(chuàng)建和刪除分區(qū)的實例代碼,通過實際操作示例,幫助讀者理解分區(qū)的創(chuàng)建與管理方法,從而更好地優(yōu)化數(shù)據(jù)庫性能
Mysql分區(qū)創(chuàng)建與刪除
實例代碼
CREATE PROCEDURE `add_table_partition`() COMMENT '增加表分區(qū)' BEGIN /****************************************************************** * Creator: Donne * Create Date: 2019-05-29 * Description: 增加所有表的分區(qū),分區(qū)類型為p_date_20190529 每月最后一天執(zhí)行,生成下一個月所有分區(qū) ******************************************************************/ DECLARE v_table_name varchar(50); DECLARE v_par_name varchar(20); DECLARE i int DEFAULT 0; DECLARE no_more int DEFAULT 0; ##將表名和分區(qū)名放入游標(biāo) DECLARE cursor_employee CURSOR FOR SELECT table_name,max(partition_name) FROM information_schema.partitions WHERE table_schema='test' and partition_name is not null and partition_name<>'p_date_min' GROUP BY table_name; DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more= 1; ##打開游標(biāo) OPEN cursor_employee; FETCH cursor_employee INTO v_table_name,v_par_name; ##循環(huán) 1:ture, 0:false,!0:ture,!1:false ##select 1 from where !0 WHILE !no_more DO my_loop: LOOP ##從當(dāng)前開始 SET @j:= DATE_ADD(curdate(),INTERVAL i DAY); ##下個月最后一天 SET @end_date:= last_day(DATE_ADD(last_day(curdate()),INTERVAL 1 DAY)); IF @j > @end_date THEN LEAVE my_loop; END IF; #計數(shù) SET i=i+1; #分區(qū)使用values less than,所以+1 SET @par_value:= UNIX_TIMESTAMP(DATE_ADD(curdate(),INTERVAL i DAY)); SET @par_name:= concat('p_date_',date_format(@j,'%Y%m%d')); #如果新建分區(qū)大于已有分區(qū),則創(chuàng)建 IF @par_name>v_par_name THEN SET @add_par:= concat('ALTER TABLE ',v_table_name,' ADD PARTITION(PARTITION ',@par_name,' VALUES LESS THAN (',@par_value,'));'); PREPARE stmt from @add_par; EXECUTE stmt; DEALLOCATE PREPARE stmt; END IF; END LOOP; #重新計數(shù) SET i= 0; #從游標(biāo)中取出下一條數(shù)據(jù) FETCH cursor_employee INTO v_table_name,v_par_name; END WHILE; CLOSE cursor_employee; END
CREATE PROCEDURE `drop table partition`( in start_date date , in end_date date ) COMMENT '刪除分區(qū)' BEGIN /****************************************************************** * Creator: Donne * Create Date: 2019-05-29 * Description: 刪除表分區(qū) ******************************************************************/ DECLARE v_table_name varchar(50); DECLARE v_par_name varchar(20); DECLARE i int DEFAULT 0; DECLARE no_more int DEFAULT 0; ##將表名和分區(qū)名放入游標(biāo) DECLARE cursor_employee CURSOR FOR SELECT table_name,partition_name FROM information_schema.partitions WHERE table_schema='test' and partition_name is not null and partition_name<>'p_date_min' AND partition_name>=concat('p_date_',date_format(end_date,'%Y%m%d')) AND partition_name<=concat('p_date_',date_format(end_date,'%Y%m%d')); DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more= 1; ##打開游標(biāo) OPEN cursor_employee; FETCH cursor_employee INTO v_table_name,v_par_name; ##循環(huán) WHILE !no_more DO SET @drop_par:= concat('ALTER TABLE ',v_table_name,' DROP PARTITION ',v_par_name,';'); PREPARE stmt from @drop_par; EXECUTE stmt; DEALLOCATE PREPARE stmt; FETCH cursor_employee INTO v_table_name,v_par_name; END WHILE; CLOSE cursor_employee; END
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL數(shù)據(jù)庫遷移data文件夾位置詳細(xì)步驟
這篇文章主要介紹了MySQL數(shù)據(jù)庫遷移data文件夾詳細(xì)步驟,需要的朋友可以參考下2014-03-03MySQL四種日志binlog/redolog/relaylog/undolog詳解
undo?log主要存儲的也是邏輯日志,比如我們要insert一條數(shù)據(jù)了,那undo?log會記錄的一條對應(yīng)的delete日志,我們要update一條記錄時,它會記錄一條對應(yīng)相反的update記錄,這篇文章主要介紹了MySQL四種日志binlog/redolog/relaylog/undolog,需要的朋友可以參考下2024-08-08MySQL中count(*)、count(1)和count(col)的區(qū)別匯總
count()函數(shù)是用來統(tǒng)計表中記錄的一個函數(shù),返回匹配條件的行數(shù),下面這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL中count(*)、count(1)和count(col)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2018-03-03MySQL數(shù)據(jù)庫服務(wù)器端核心參數(shù)詳解和推薦配置
MySQL手冊上也有服務(wù)器端參數(shù)的解釋,以及參數(shù)值的相關(guān)說明信息,現(xiàn)針對我們大家重點需要注意、需要修改或影響性能 的服務(wù)器端參數(shù),作其用處的解釋和如何配置參數(shù)值的推薦,此事情拖了不少時間,為方便大家?guī)兔m錯2011-12-12詳解MySQL數(shù)據(jù)庫優(yōu)化的八種方式(經(jīng)典必看)
關(guān)于數(shù)據(jù)庫優(yōu)化,網(wǎng)上有不少資料和方法,但是不少質(zhì)量參差不齊,有些總結(jié)的不夠到位,內(nèi)容冗雜。今天給大家分享一篇文章關(guān)于mysql數(shù)據(jù)庫優(yōu)化的八種方式,非常經(jīng)典,需要的的朋友參考下2017-03-03安裝mysql 8.0.17并配置遠(yuǎn)程訪問的方法
這篇文章主要介紹了安裝mysql 8.0.17并配置遠(yuǎn)程訪問的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-10-10mysql 8.0.11 安裝配置方法圖文教程(win10)
這篇文章主要為大家詳細(xì)介紹了mysql 8.0.11 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03