小編這次要給大家分享的是詳解MySQL分區表,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
前言
在最近的項目中,我們需要保存大量的數據,而且這些數據是有有效期的,為了提供查詢效率以及快速刪除過期數據,我們選擇了MySQL的分區機制。把數據按照時間進行分區。
分區類型
分區命令
創建分區
CREATE TABLE `access_log` ( `id` int(11) NOT NULL AUTO_INCREMENT, `access_time` datetime NOT NULL, PRIMARY KEY (`id`,`access_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 /*!50100 PARTITION BY RANGE (to_days(access_time)) (PARTITION p1 VALUES LESS THAN (to_days(20190101)) ENGINE = InnoDB, PARTITION p2 VALUES LESS THAN (to_days(20190102)) ENGINE = InnoDB, PARTITION p3 VALUES LESS THAN (to_days(20190103)) ENGINE = InnoDB) */;
創建后可以看到,每個分區都會對應1個ibd文件

分區表
新增分區
alter table access_log add partition(
partition p4 values less than (to_days('20190105'))
);刪除分區
alter table access_log drop partition p1;
拆分分區
alter table access_log reorganize partition p4 into(
-> partition s0 values less than(to_days('20190104')),
-> partition s1 values less than(to_days('20190105'))
-> );合并分區
alter table access_log reorganize partition s0,s1 into (
partition p4 values less than (to_days('20190105'))
);注意事項
常見問題
alter table access_log partition by range(to_days(access_time))(
partition p1 values less than (to_days('20191202')),
partition p2 values less than (to_days('20191203')),
partition po values less than (maxvalue)
)看完這篇關于詳解MySQL分區表的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。