Mysql分區(qū)創(chuàng)建與刪除方式
Mysql分區(qū)創(chuàng)建與刪除
實(shí)例代碼
CREATE PROCEDURE `add_table_partition`() COMMENT '增加表分區(qū)' BEGIN /****************************************************************** * Creator: Donne * Create Date: 2019-05-29 * Description: 增加所有表的分區(qū),分區(qū)類型為p_date_20190529 每月最后一天執(zhí)行,生成下一個(gè)月所有分區(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); ##下個(gè)月最后一天 SET @end_date:= last_day(DATE_ADD(last_day(curdate()),INTERVAL 1 DAY)); IF @j > @end_date THEN LEAVE my_loop; END IF; #計(jì)數(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; #重新計(jì)數(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é)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL數(shù)據(jù)庫(kù)遷移data文件夾位置詳細(xì)步驟
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)遷移data文件夾詳細(xì)步驟,需要的朋友可以參考下2014-03-03MySQL四種日志binlog/redolog/relaylog/undolog詳解
undo?log主要存儲(chǔ)的也是邏輯日志,比如我們要insert一條數(shù)據(jù)了,那undo?log會(huì)記錄的一條對(duì)應(yīng)的delete日志,我們要update一條記錄時(shí),它會(huì)記錄一條對(duì)應(yīng)相反的update記錄,這篇文章主要介紹了MySQL四種日志binlog/redolog/relaylog/undolog,需要的朋友可以參考下2024-08-08MySQL中count(*)、count(1)和count(col)的區(qū)別匯總
count()函數(shù)是用來統(tǒng)計(jì)表中記錄的一個(gè)函數(shù),返回匹配條件的行數(shù),下面這篇文章主要給大家總結(jié)介紹了關(guān)于MySQL中count(*)、count(1)和count(col)的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。2018-03-03MySQL數(shù)據(jù)庫(kù)服務(wù)器端核心參數(shù)詳解和推薦配置
MySQL手冊(cè)上也有服務(wù)器端參數(shù)的解釋,以及參數(shù)值的相關(guān)說明信息,現(xiàn)針對(duì)我們大家重點(diǎn)需要注意、需要修改或影響性能 的服務(wù)器端參數(shù),作其用處的解釋和如何配置參數(shù)值的推薦,此事情拖了不少時(shí)間,為方便大家?guī)兔m錯(cuò)2011-12-12詳解MySQL數(shù)據(jù)庫(kù)優(yōu)化的八種方式(經(jīng)典必看)
關(guān)于數(shù)據(jù)庫(kù)優(yōu)化,網(wǎng)上有不少資料和方法,但是不少質(zhì)量參差不齊,有些總結(jié)的不夠到位,內(nèi)容冗雜。今天給大家分享一篇文章關(guān)于mysql數(shù)據(jù)庫(kù)優(yōu)化的八種方式,非常經(jīng)典,需要的的朋友參考下2017-03-03安裝mysql 8.0.17并配置遠(yuǎn)程訪問的方法
這篇文章主要介紹了安裝mysql 8.0.17并配置遠(yuǎn)程訪問的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-10-10mysql 8.0.11 安裝配置方法圖文教程(win10)
這篇文章主要為大家詳細(xì)介紹了mysql 8.0.11 安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03Mysql ID生成策略的三種方法選擇及優(yōu)缺點(diǎn)
mysql ID生成策略一般常用的有三種,包括自增、UUID 以及雪花算法,本文主要介紹了Mysql ID生成策略的三種方法選擇及優(yōu)缺點(diǎn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-06-06