2013-01-09 63 views
0

我有一個數據庫,其中表格每隔一小時定期填充一次。現在數據量已經增長很多。 我只想要存儲10天的數據。所有剩餘部分每天都會自動刪除。在mysql中刪除以前的數據

我怎麼能在mysql中做到這一點?

+0

你試過這麼久了? –

+0

你有什麼嘗試?你有沒有搜索互聯網?在網上給予3分鐘 http://forums.mysql.com/read.php?10,288225,288230#msg-288230 http://dev.mysql.com/doc/refman/5.1/en/ events.html –

+0

@AndrewAnderson - 其實我沒有嘗試任何東西發佈.sorry的..但是你的鏈接是非常有用的。謝謝 – user1896796

回答

0

多個選項..

cron job做到這一點。 (使用PHP/ASP/JSP - 你正在使用什麼都)

計劃在MySQL

CREATE EVENT `event_name` 
ON SCHEDULE schedule 
[ON COMPLETION [NOT] PRESERVE] 
[ENABLE | DISABLE | DISABLE ON SLAVE] 
DO BEGIN 
    DELETE * FROM tablename WHERE date < CURRENT_DATE - INTERVAL 10 DAY 
END; 

更多信息的Eventhttp://www.sitepoint.com/how-to-create-mysql-events/

否則有trigger的插入和刪除記錄因此(這裏的問題是所有插入觸發器都會被調用)。

0
CREATE EVENT 'eventname' ON 
SCHEDULE EVERY 24 HOUR STARTS '2013-01-09 10:00:00' 
ON COMPLETION NOT PRESERVE ENABLE 
COMMENT 'Clears out old data table each day.' 
DO 
     delete * from tablename WHERE fieldwithdateofinput < CURRENT_DATE - INTERVAL 10 DAY 

這將使事件觸發每組24小時開始日期2013年1月9日10:00:00,假設你有註冊日期字段記錄的輸入訂立時(fieldwithdateofinput )。

+0

他問你將如何設置此。 – Sahal

0

你有2個選項。

1.Event調度

首先創建表,並創建活動爲刪除3個星期前的記錄進行刪除查詢。

CREATE EVENT `ex1` ON SCHEDULE 
EVERY 1 DAY 
ON COMPLETION NOT PRESERVE 
ENABLE 
COMMENT '' 
DO BEGIN 
DELETE FROM table WHERE DATEDIFF(NOW(),TimeStampColumn) > 10 

END 
//for 3 weeks 

注:MySQL的老版本沒有事件調度

2.創建cron作業

file1.sql

DELETE FROM table WHERE DATEDIFF(NOW(),TimeStampColumn) > 10 

時間表如下命令:

mysql -uusername -ppassword < /path/to/file1.sql