mysql月別アーカイブログテーブル

956 ワード

ログ・テーブルはますます大きくなり、データは1億近くに達し、データの検索が非常に遅いため、イベントを使用して毎月28日にストレージ・プロシージャを呼び出して自動的にアーカイブ・テーブルを作成し、先月のデータをcreate_timeフィールドとidフィールドはアーカイブテーブルを挿入し、元のテーブルの対応するデータを削除します.
DELIMITER ;;
    CREATE DEFINER=`root`@`localhost` PROCEDURE `clear_log`()
    BEGIN
    		#        
    		SET @currentym =left(DATE_SUB(CURRENT_DATE,INTERVAL 1 MONTH),7);
    		SET @logTable=CONCAT('log_',left(@currentym,4),right(@currentym,2));
    		#        ,     
    		SET @STMT :=CONCAT("CREATE TABLE IF NOT EXISTS ",@logTable," LIKE log;");
    		PREPARE STMT FROM @STMT;   
    		EXECUTE STMT;
    		#    
    		SET @dateOne=concat(left(DATE_SUB(CURRENT_DATE,INTERVAL 1 MONTH),7),"-01");
        SET @datemonthone=concat(left(CURDATE(),8),"01");
    		SET @STMT :=CONCAT("insert into ",@logTable," select * from log WHERE create_time>'",@dateOne,"' and create_time@dateOne and create_time