真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

mysql如何刪除分區(qū)

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

目前創(chuàng)新互聯(lián)已為近千家的企業(yè)提供了網(wǎng)站建設、域名、虛擬主機、網(wǎng)站改版維護、企業(yè)網(wǎng)站設計、岳陽縣網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

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

本教程操作環(huán)境:windows10系統(tǒng)、mysql8.0.22版本、Dell G3電腦。

mysql刪除分區(qū)

刪除分區(qū)語法為:ALTER TABLE '表名' DROP PARTITION '分區(qū)名'

清理分區(qū)數(shù)據(jù)為空,保留分區(qū)不刪除,僅僅是清理數(shù)據(jù),命令如下

alter table bm_scenes_data_reminder truncate partition p20210104;

刪除分區(qū)

alter table bm_scenes_data_reminder drop partition p20210104;

刪除后執(zhí)行查看建表語句,可以看到p20210104分區(qū)沒有了

增加分區(qū)

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

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步驟中不可行,提示必須是在最后一個分區(qū)的后面才可以這樣增加。

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

##先刪除p20210104分區(qū)后面的所有分區(qū)

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分區(qū)

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

##把p20210104分區(qū)后面的所有分區(qū)重新加回去

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發(fā)現(xiàn)分區(qū)加回去了,但這種操作方式會把p20210104分區(qū)后面的所有分區(qū)數(shù)據(jù)刪除,在正式線上環(huán)境中請慎

案例

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

##新建普通表,只執(zhí)行一次

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 '運行狀態(tài),[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 '請求參數(shù)',
  `resp_data` longtext NOT NULL COMMENT '返回結果',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `idx_log_begintime` (`begin_time`) USING BTREE COMMENT '系統(tǒng)日志的beginTime字段索引'
) ENGINE=Innodb DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC

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

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
);

##每天執(zhí)行以下的分區(qū)操作,進行增加一天的分區(qū),如

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);

##定時任務配置,每天執(zhí)行一次分區(qū)的清理與創(chuàng)建

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

關于“mysql如何刪除分區(qū)”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“mysql如何刪除分區(qū)”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


分享題目:mysql如何刪除分區(qū)
網(wǎng)站網(wǎng)址:http://weahome.cn/article/jgegoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部