久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql如何刪除分區

143次閱讀
沒有評論

共計 4191 個字符,預計需要花費 11 分鐘才能閱讀完成。

這篇文章主要介紹了 mysql 如何刪除分區的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇 mysql 如何刪除分區文章都會有所收獲,下面我們一起來看看吧。

在 mysql 中,可以利用 alter 語句配合“DROP PARTITION”來刪除分區,“DROP PARTITION”的作用就是用于刪除指定的分區,語法為“ALTER TABLE 表名 DROP PARTITION 分區名”。

本教程操作環境:windows10 系統、mysql8.0.22 版本、Dell G3 電腦。

mysql 刪除分區

刪除分區語法為:ALTER TABLE 表名 DROP PARTITION 分區名

清理分區數據為空,保留分區不刪除,僅僅是清理數據,命令如下

alter table bm_scenes_data_reminder truncate partition p20210104;

刪除分區

alter table bm_scenes_data_reminder drop partition p20210104;

刪除后執行查看建表語句,可以看到 p20210104 分區沒有了

增加分區

## 如果希望將剛刪除的 p20210104 分區重新加回去?怎么辦。先嘗試直接執行增加分區命令試試

ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);

結果如下,說明是不可行的。

mysql  ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);
ERROR 1481 (HY000): MAXVALUE can only be used in last partition definition
mysql 

##1 步驟中不可行,提示必須是在最后一個分區的后面才可以這樣增加。

因此如果一定要加回 p20210104 這個分區(即需要在中間部分增加分區), 只能將 p20210104 后面的分區先全刪除,再增加 p20210104 分區,再后 p20210104 后面的分區重新加回去。操作如下:

## 先刪除 p20210104 分區后面的所有分區

ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210105;
ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210106;
ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210107;
ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210108;
ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210109;
ALTER TABLE bm_scenes_data_reminder drop PARTITION p20210110;
ALTER TABLE bm_scenes_data_reminder drop PARTITION future;

## 增加 p20210104 分區

ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210104 VALUES LESS THAN (738159) ENGINE = InnoDB);

## 把 p20210104 分區后面的所有分區重新加回去

ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210105 VALUES LESS THAN (738160) ENGINE = InnoDB);
ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210106 VALUES LESS THAN (738161) ENGINE = InnoDB);
ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210107 VALUES LESS THAN (738162) ENGINE = InnoDB);
ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210108 VALUES LESS THAN (738163) ENGINE = InnoDB);
ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210109 VALUES LESS THAN (738164) ENGINE = InnoDB);
ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION p20210110 VALUES LESS THAN (738165) ENGINE = InnoDB);
ALTER TABLE bm_scenes_data_reminder ADD PARTITION (PARTITION future VALUES LESS THAN MAXVALUE ENGINE = InnoDB);

最后再查看一下 ddl 發現分區加回去了,但這種操作方式會把 p20210104 分區后面的所有分區數據刪除,在正式線上環境中請慎

案例

系統有操作系統表 sys_log,實現每天刪除 90 天前的分區并同時建一個 4 天后的分區(即每天將 4 天后的分區創建表),步驟如下:

## 新建普通表,只執行一次

CREATE TABLE `sys_log` ( `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `begin_time` datetime DEFAULT NULL COMMENT  開始時間 ,
 `end_time` datetime DEFAULT NULL COMMENT  結束時間 ,
 `spend_mills` int(11) DEFAULT NULL COMMENT  運行時長, 單位 ms ,
 `username` varchar(100) DEFAULT NULL COMMENT  用戶 id ,
 `log_status` int(11) NOT NULL DEFAULT  0  COMMENT  運行狀態,[0]成功 [1] 失敗 ,
 `code` int(11) NOT NULL DEFAULT  0  COMMENT  錯誤碼 ,
 `remote_addr` varchar(50) DEFAULT   COMMENT  遠程地址 ,
 `request_uri` varchar(255) DEFAULT NULL COMMENT  請求路徑 ,
 `user_agent` text COMMENT  用戶代理 ,
 `req_data` text NOT NULL COMMENT  請求參數 ,
 `resp_data` longtext NOT NULL COMMENT  返回結果 ,
 PRIMARY KEY (`id`) USING BTREE,
 KEY `idx_log_begintime` (`begin_time`) USING BTREE COMMENT  系統日志的 beginTime 字段索引 
) ENGINE=Innodb DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

## 修改成分區表,只執行一次,留一個當前時間的分區和將來的 future 分區

ALTER TABLE `sys_log` DROP PRIMARY KEY, ADD PRIMARY KEY(`id`,`begin_time`);
alter table sys_log partition by RANGE (to_days(begin_time)) ( PARTITION p20210816 VALUES LESS THAN (738383),
 PARTITION future VALUES LESS THAN MAXVALUE
);

## 每天執行以下的分區操作,進行增加一天的分區, 如

ALTER TABLE sys_log drop PARTITION future;
ALTER TABLE sys_log ADD PARTITION (PARTITION p20210817 VALUES LESS THAN (738384) ENGINE = InnoDB);
ALTER TABLE sys_log ADD PARTITION (PARTITION p20210818 VALUES LESS THAN (738385) ENGINE = InnoDB);
ALTER TABLE sys_log ADD PARTITION (PARTITION p20210819 VALUES LESS THAN (738386) ENGINE = InnoDB);
ALTER TABLE sys_log ADD PARTITION (PARTITION future VALUES LESS THAN MAXVALUE ENGINE = InnoDB);

## 定時任務配置,每天執行一次分區的清理與創建

30 4 * * * /bin/python /home/testuser/SyslogPartitionClear.py  /dev/null 2 1

關于“mysql 如何刪除分區”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“mysql 如何刪除分區”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計4191字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 枝江市| 江津市| 邓州市| 西华县| 会理县| 北票市| 丰县| 汶上县| 张家川| 郁南县| 井研县| 昆山市| 利津县| 青龙| 夹江县| 博兴县| 林甸县| 林周县| 汝南县| 海南省| 莎车县| 额尔古纳市| 云南省| 绥宁县| 昭通市| 聂荣县| 凌海市| 深圳市| 龙里县| 江源县| 平利县| 油尖旺区| 禹城市| 浦北县| 威海市| 滨州市| 吴川市| 江源县| 浦江县| 祁门县| 定边县|