Mysql數據庫大表歸檔操作


由於公司的某個系統數據表過億,考慮到數據表的壓力。所以根據某個時間點對數據表做了一個歸檔。以下的操作是在當前的數據庫新建表用於存儲歷史數據,然后再對生產表做一個清理操作。如果有條件的話可以把歸檔的數據放在一台新的數據庫服務器上。(具體的表名和時間結點根據自己需要修改)

 

歸檔sql:

 方法一:  復制表並且按照條件插入數據(此種方法除了主鍵索引不包括其他索引)

CREATE TABLE lime_survey_549656_20151001 as select * from lime_survey_549656  where submitdate < "2015-10-01 00:00:00";  
ALTER TABLE lime_survey_549656_20151001 change id id int primary key auto_increment;  
CREATE TABLE lime_survey_186194_20151001 as select * from lime_survey_186194 where submitdate < "2015-10-01 00:00:00";  
ALTER TABLE lime_survey_186194_20151001 change id id int primary key auto_increment;  
CREATE TABLE lime_survey_279575_20151001 as select * from lime_survey_279575 where submitdate < "2015-10-01 00:00:00";  
ALTER TABLE lime_survey_279575_20151001 change id id int primary key auto_increment;  

 

方法二: 創建一張空表,結構和索引和原表一樣

create table lime_survey_549656_20151001 like lime_survey_549656;   
INSERT INTO lime_survey_549656_20151001 select * from lime_survey_549656  where submitdate < "2015-10-01 00:00:00";  
create table lime_survey_186194_20151001 like lime_survey_186194;   
INSERT INTO lime_survey_186194_20151001 select * from lime_survey_186194  where submitdate < "2015-10-01 00:00:00";  
create table lime_survey_279575_20151001 like lime_survey_279575;   
INSERT INTO lime_survey_279575_20151001 select * from lime_survey_279575  where submitdate < "2015-10-01 00:00:00";  

 

數據歸檔成功后清理數據sql:

deletefrom lime_survey_549656  where submitdate < "2015-10-0100:00:00";  
deletefrom lime_survey_186194  where submitdate < "2015-10-0100:00:00";  
deletefrom lime_survey_279575  where submitdate < "2015-10-0100:00:00";  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM