mysql分區(qū)表學習之日期分區(qū)
更新時間:2023年08月03日 08:34:30 作者:Phil_xian
這篇文章主要給大家介紹了關(guān)于mysql分區(qū)表學習之日期分區(qū)的相關(guān)資料,分區(qū)是一種表的設(shè)計模式,通俗地講表分區(qū)是將一大表,根據(jù)條件分割成若干個小表,需要的朋友可以參考下
1.創(chuàng)建分區(qū)表
CREATE TABLE `api_log` ( `requestId` varchar(64) NOT NULL COMMENT '調(diào)用的唯一標示', `systemCode` varchar(64) NOT NULL COMMENT '業(yè)務(wù)系統(tǒng)編碼', `tongID` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `tong_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `pt` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '分區(qū)字段', PRIMARY KEY (`tongID`,`requestId`,`pt`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='日志信息表' /*!50100 PARTITION BY RANGE (TO_DAYS(pt)) (PARTITION p20230510 VALUES LESS THAN (739015) ENGINE = InnoDB, PARTITION p20230511 VALUES LESS THAN (739016) ENGINE = InnoDB) */;
2.查看分區(qū)
-- 01 查詢單分區(qū) SELECT * from api_log partition (p20230510) -- 02 查看所有分區(qū) SELECT PARTITION_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.PARTITIONS WHERE TABLE_NAME = 'api_log';
3.添加分區(qū)
-- 添加分區(qū) ALTER TABLE hz_api_log_delta add PARTITION (PARTITION p20230512 VALUES LESS THAN (TO_DAYS('2023-05-12')));
4.存儲過程:分區(qū)刪除與創(chuàng)建
delimiter // CREATE PROCEDURE `pro_create_del_pt`() BEGIN #Routine body goes here... ## 01.新建后面兩天的分區(qū) ## 02獲取當前時間 SELECT CONCAT('p',DATE_FORMAT(DATE_ADD(NOW(),INTERVAL 2 DAY),'%Y%m%d')) into @pname; SELECT DATE_ADD(NOW(),INTERVAL 2 DAY) into @pdate; #刪除的分區(qū)時間 SELECT DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -17 DAY) ,'%Y%m%d') into @ddate; ## 03新增分區(qū) -- ALTER TABLE api_log add PARTITION (PARTITION p20230509 VALUES LESS THAN (TO_DAYS(DATE_ADD(NOW(),INTERVAL 1 DAY)))); set @sql_add_p=concat("ALTER TABLE api_log add PARTITION (PARTITION ",@pname," VALUES LESS THAN (TO_DAYS('",@pdate,"')))"); prepare sql_add_p from @sql_add_p; EXECUTE sql_add_p ; DEALLOCATE PREPARE sql_add_p; ## 04 刪除分區(qū) #alter table api_log drop partition p20230507; set @sql_del_p=concat("ALTER TABLE api_log drop PARTITION p",@ddate); prepare sql_del_p from @sql_del_p; EXECUTE sql_del_p ; DEALLOCATE PREPARE sql_del_p; END // delimiter ;
5.事件定時
-- 創(chuàng)建事件 delimiter $$ create event event_pro_create_del_pt on schedule every 1 DAY STARTS '2023-05-10 20:00:00 ' comment '每日20:00執(zhí)行' DO call pro_create_del_pt(); $$ delimiter ;
-- 查看事件 show events; 或者 select * from mysql.event;
6.觸發(fā)器設(shè)計:子表每插入一行,總表獲得一行
-- 創(chuàng)建事件 delimiter $$ CREATE TRIGGER `trigger_api_log` AFTER INSERT ON `api_log` FOR EACH ROW BEGIN insert into hz_api.api_log_all (requestId,systemCode,sjly_part) VALUES (NEW.requestId,NEW.systemCode,'區(qū)縣'); end; $$ delimiter ;
7.創(chuàng)建索引
-- 創(chuàng)建普通索引:在tong_time字段 ALTER TABLE db_base.api_log ADD INDEX index_name ( tong_time ); -- 查看索引 show index from db_base.api_log;
8.添加枚舉型字段
ALTER TABLE db_base.api_log add SJLY_PART enum('線上','線下') default null COMMENT '數(shù)據(jù)來源';
總結(jié)
到此這篇關(guān)于mysql分區(qū)表學習之日期分區(qū)的文章就介紹到這了,更多相關(guān)mysql日期分區(qū)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mysql調(diào)優(yōu)Explain工具詳解及實戰(zhàn)演練(推薦)
這篇文章主要介紹了Mysql調(diào)優(yōu)Explain工具詳解及實戰(zhàn)演練,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03mysqldump命令導入導出數(shù)據(jù)庫方法與實例匯總
這篇文章主要介紹了mysqldump命令導入導出數(shù)據(jù)庫方法與實例匯總的相關(guān)資料,需要的朋友可以參考下2015-10-10MYSQL自定義函數(shù)判斷是否正整數(shù)的實例代碼
這篇文章主要介紹了MYSQL自定義函數(shù)判斷是否正整數(shù) 的實例代碼,主要是使用正則表達式來判斷,具體實例代碼大家跟隨小編一起通過本文學習吧2018-11-11MySQL Cluster如何創(chuàng)建磁盤表方法解讀
MySQL Cluster采用一系列的Disk Data objects來實現(xiàn)磁盤表;接下來為您詳細介紹2012-11-11union和子查詢中order?by一起使用導致排序失效問題及解決
這篇文章主要介紹了union和子查詢中order?by一起使用導致排序失效問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12