亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL按時(shí)間進(jìn)行表分區(qū)的方法代碼

 更新時(shí)間:2024年09月29日 10:47:56   作者:逢生博客  
本文介紹如何在MySQL中創(chuàng)建按月份分區(qū)的表,并通過(guò)修改配置文件或使用數(shù)據(jù)庫(kù)事件來(lái)實(shí)現(xiàn)自動(dòng)分區(qū),文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

創(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)文章

最新評(píng)論