MySQL按時(shí)間進(jìn)行表分區(qū)的方法代碼
創(chuàng)建按月份分區(qū)的表
create table if not exists table_name
(
id bigint auto_increment comment '主鍵id',
create_by varchar(64) not null comment '創(chuàng)建者',
create_time datetime default CURRENT_TIMESTAMP not null comment '創(chuàng)建時(shí)間',
update_by varchar(64) null comment '更新者',
update_time datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新時(shí)間',
primary key (id, create_time)
)
comment '測試表名' partition by range (TO_DAYS(create_time)) (
partition P202401 values less than (TO_DAYS('2024-02-01')) ,
partition P202402 values less than (TO_DAYS('2024-03-01')) ,
partition P202403 values less than (TO_DAYS('2024-04-01')) ,
partition P202404 values less than (TO_DAYS('2024-05-01'))
);
開啟數(shù)據(jù)庫事件
臨時(shí)配置(服務(wù)重啟會(huì)失效)
-- 開啟事件 SET GLOBAL event_scheduler = ON; -- 查看事件是否開啟 SHOW VARIABLES LIKE '%event_sche%';
修改my.cnf文件(推薦)
- 進(jìn)入MySQL所在的服務(wù)器
sudo vi /etc/my.cnf
- 找到 [mysqld],添加如下內(nèi)容
event_scheduler = ON
- 重啟 MySQL 服務(wù)以使更改生效
sudo systemctl restart mysqld
定時(shí)事件自動(dòng)建分區(qū)
- 例:提前創(chuàng)建下個(gè)月的分區(qū),如2024-04-01創(chuàng)建5月份的分區(qū) P202405,2024-05-01創(chuàng)建6月份的分區(qū)。
create event event_create_partition on schedule
every '1' MONTH starts '2024-04-01 00:00:00'
on completion preserve
enable
do
BEGIN
-- 當(dāng)前時(shí)間 2024-04-01 00:00:00
-- _DATE = 2024-05-01
DECLARE _DATE VARCHAR(10) DEFAULT ADDDATE(SUBDATE(CURDATE(), DAY(CURDATE()) - 1), INTERVAL 1 MONTH);
-- P202405
SET @PARTITION_NAME = CONCAT('P', DATE_FORMAT(_DATE, '%Y%m'));
-- 2024-06-01
SET @SHEAR_DATE = CONCAT('', ADDDATE(LAST_DAY(_DATE), 1));
SET @SQL = CONCAT('ALTER TABLE table_name ADD PARTITION (PARTITION ', @PARTITION_NAME, ' VALUES LESS THAN (TO_DAYS("', @SHEAR_DATE, '")))');
PREPARE STMT FROM @SQL;
EXECUTE STMT;
DEALLOCATE PREPARE STMT;
END;
注意: 數(shù)據(jù)庫
event_scheduler = ON要確認(rèn)有開啟,否則 event_create_partition 事件不會(huì)執(zhí)行。
- 查看所有事件
SHOW EVENTS;
查詢表分區(qū)信息
SELECT
TABLE_SCHEMA,
TABLE_NAME,
PARTITION_NAME,
PARTITION_METHOD,
PARTITION_EXPRESSION,
SUBPARTITION_NAME,
SUBPARTITION_METHOD,
SUBPARTITION_EXPRESSION
FROM information_schema.partitions
WHERE TABLE_SCHEMA = '數(shù)據(jù)庫名'
AND TABLE_NAME IN ('table_name')
ORDER BY PARTITION_NAME DESC;總結(jié)
到此這篇關(guān)于MySQL按時(shí)間進(jìn)行表分區(qū)的文章就介紹到這了,更多相關(guān)MySQL按時(shí)間表分區(qū)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql啟動(dòng)服務(wù)報(bào)1058錯(cuò)誤的解決方法
這篇文章主要介紹了mysql啟動(dòng)服務(wù)報(bào)1058錯(cuò)誤的解決方法,需要的朋友可以參考下2014-03-03
MySQL 8.0.19安裝詳細(xì)教程(windows 64位)
這篇文章主要介紹了MySQL 8.0.19安裝詳細(xì)教程(windows 64位),本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
windows下mysql 5.7版本中修改編碼為utf-8的方法步驟
mysql的默認(rèn)編碼是拉?。╨atin1),當(dāng)輸入中文的時(shí)候就會(huì)報(bào)錯(cuò),所以需要將編碼修改為utf8,從網(wǎng)上找了相關(guān)教程都不可以,索性自己摸索后分享給大家,下面這篇文章主要給大家介紹了在mysql 5.7版本中如何修改編碼為utf-8的方法步驟,需要的朋友可以參考下。2017-06-06
MySQL數(shù)據(jù)庫無法遠(yuǎn)程連接的問題詳細(xì)解決過程
這篇文章主要介紹了MySQL數(shù)據(jù)庫無法遠(yuǎn)程連接問題的詳細(xì)解決過程,解決MySQL無法遠(yuǎn)程連接的問題需要檢查并修改MySQL的用戶權(quán)限,確保配置文件允許遠(yuǎn)程訪問,并且防火墻開放3306端口,需要的朋友可以參考下2025-05-05
mysql如何將查詢結(jié)果內(nèi)容進(jìn)行轉(zhuǎn)換
文章介紹了如何在MySQL中使用CASE表達(dá)式對查詢結(jié)果進(jìn)行多分支判斷,并分享了個(gè)人經(jīng)驗(yàn),希望對大家有所幫助2025-02-02
MySQL從零開始了解數(shù)據(jù)庫開發(fā)之復(fù)合查詢
本文介紹了MySQL數(shù)據(jù)庫開發(fā)中的復(fù)合查詢技術(shù),包括多表查詢、自連接和子查詢?nèi)N方法,示例演示了從員工表和部門表中聯(lián)合查詢員工姓名、工資及部門名稱, 本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2025-11-11
MySQL的id關(guān)聯(lián)和索引使用的實(shí)際優(yōu)化案例
這篇文章主要介紹了MySQL的id關(guān)聯(lián)實(shí)際優(yōu)化案例,關(guān)聯(lián)和索引一直是MySQL常見的可優(yōu)化大塊兒,需要的朋友可以參考下2015-05-05
Mysql性能優(yōu)化案例研究-覆蓋索引和SQL_NO_CACHE
這篇文章主要介紹了Mysql性能優(yōu)化案例研究-覆蓋索引和SQL_NO_CACHE,需要的朋友可以參考下2016-03-03

