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