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 '測(cè)試表名' 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ù)庫(kù)事件
臨時(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ù)庫(kù)
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ù)庫(kù)名' 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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程基本語(yǔ)法講解
本文通過(guò)一個(gè)實(shí)例來(lái)給大家講述一下Mysql數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程基本語(yǔ)法,希望你能喜歡。2017-11-11Mysql使用on update current_timestamp問(wèn)題
這篇文章主要介紹了Mysql使用on update current_timestamp問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03MySQL遠(yuǎn)程無(wú)法連接的一些常見(jiàn)原因總結(jié)
有的小伙伴發(fā)現(xiàn)自己的mysql無(wú)法正常連接遠(yuǎn)程服務(wù)器,下面這篇文章主要給大家介紹了關(guān)于MySQL遠(yuǎn)程無(wú)法連接的一些常見(jiàn)原因,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09Mysql數(shù)據(jù)庫(kù)介紹及mysql顯示命令
這篇文章主要介紹了Mysql數(shù)據(jù)庫(kù)介紹及mysql顯示命令 的相關(guān)資料,需要的朋友可以參考下2016-04-04Windows下MySql錯(cuò)誤代碼1045的解決方法
這篇文章主要介紹了Windows下MySql錯(cuò)誤代碼1045的解決方法,文中還包含了2個(gè)Linux下的解決方法,需要的朋友可以參考下2014-06-06MySQL?Workbench操作圖文詳解(史上最細(xì))
Workbench是MySQL最近釋放的可視數(shù)據(jù)庫(kù)設(shè)計(jì)工具,這個(gè)工具是設(shè)計(jì) MySQL數(shù)據(jù)庫(kù)的專用工具,下面這篇文章主要給大家介紹了關(guān)于MySQL?Workbench操作的相關(guān)資料,需要的朋友可以參考下2023-03-03MySQL 中查詢 VARCHAR 類型 JSON 數(shù)據(jù)的問(wèn)題記錄
在數(shù)據(jù)庫(kù)設(shè)計(jì)中,有時(shí)我們會(huì)將 JSON 數(shù)據(jù)存儲(chǔ)在 VARCHAR 或 TEXT 類型字段中,本文將詳細(xì)介紹如何在 MySQL 中有效查詢存儲(chǔ)為 VARCHAR 類型的 JSON 數(shù)據(jù),感興趣的朋友一起看看吧2025-04-04