MySQL按時間拆分千萬級大表的實現(xiàn)代碼
更新時間:2023年09月26日 14:40:12 作者:攻城獅悠揚
這篇文章主要介紹了MySQL按時間拆分千萬級大表,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
1.創(chuàng)建存儲過程
#-----創(chuàng)建存儲過程 CREATE PROCEDURE ctrlcctrlv_table(var VARCHAR(20)) BEGIN SET @param1 = concat('ALTER TABLE ', var, ' RENAME ', var, DATE_FORMAT(NOW(), '%Y_%m_%d')); PREPARE stmt FROM @param1; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @param2 = concat('CREATE table ', var, ' like ', var, DATE_FORMAT(NOW(), '%Y_%m_%d')); PREPARE stmt1 FROM @param2; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END;
2.創(chuàng)建EVEN事件
#-----創(chuàng)建存儲過程 CREATE PROCEDURE ctrlcctrlv_table(var VARCHAR(20)) BEGIN SET @param1 = concat('ALTER TABLE ', var, ' RENAME ', var, DATE_FORMAT(NOW(), '%Y_%m_%d')); PREPARE stmt FROM @param1; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @param2 = concat('CREATE table ', var, ' like ', var, DATE_FORMAT(NOW(), '%Y_%m_%d')); PREPARE stmt1 FROM @param2; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END;
3.啟用EVEN
#-----創(chuàng)建存儲過程 CREATE PROCEDURE ctrlcctrlv_table(var VARCHAR(20)) BEGIN SET @param1 = concat('ALTER TABLE ', var, ' RENAME ', var, DATE_FORMAT(NOW(), '%Y_%m_%d')); PREPARE stmt FROM @param1; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET @param2 = concat('CREATE table ', var, ' like ', var, DATE_FORMAT(NOW(), '%Y_%m_%d')); PREPARE stmt1 FROM @param2; EXECUTE stmt1; DEALLOCATE PREPARE stmt1; END;
4.測試存儲過程
#--測試存儲過程執(zhí)行情況 call ctrlcctrlv_table("zong_biao");
來點干貨在mysql里面測試一下
創(chuàng)建一張測試表
CREATE TABLE `test_cut_demo` ( `id` int NOT NULL AUTO_INCREMENT, `username` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `password` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `create_time` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `day` datetime DEFAULT NULL COMMENT '日期', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2997 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
添加一個循環(huán)插入的EVENT
#--創(chuàng)建循環(huán)測試插入數(shù)據(jù) delimiter $$ create event event_insert_SECOND on schedule every 2 SECOND STARTS CURRENT_TIMESTAMP + INTERVAL 1 MINUTE COMMENT 'xiaowu create' do BEGIN insert into new_cut.test_cut_demo(username,password,create_time,day) values("李四","tomcat",now(),curdate()); END $$ delimiter ; #----紅色庫名,藍(lán)色表明
添加事件啟動
alter event event_insert_SECOND on completion preserve enable;
查看數(shù)據(jù)庫表中是否開始循環(huán)插入數(shù)據(jù)
調(diào)用存儲過程測試是否可以進(jìn)行表切割
#--測試存儲過程執(zhí)行情況 call ctrlcctrlv_table("test_cut_demo");
到此這篇關(guān)于MySQL按時間拆分千萬級大表的文章就介紹到這了,更多相關(guān)MySQL千萬級大表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 中 blob 和 text 數(shù)據(jù)類型詳解
本文主要介紹了MySQL中blob和text數(shù)據(jù)類型詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02MySQL入門完全指南及Linux系統(tǒng)下基本的安裝教程
這篇文章主要介紹了MySQL入門完全指南及Linux系統(tǒng)下基本的安裝教程,對MySQL的基本特性有一個較為詳細(xì)的整理,需要的朋友可以參考下2015-11-11Mysql 5.7.17 winx64免安裝版,win10環(huán)境下安裝配置圖文教程
這篇文章主要介紹了Mysql 5.7.17 winx64免安裝版,win10環(huán)境下安裝配置圖文教程,需要的朋友可以參考下2017-01-01