我的網站有很多傳入的搜索存儲在數據庫中,以顯示最近的查詢到我的網站。由於高搜索查詢,我的數據庫變得越來越大。所以我想要的是我只需要在數據庫中保留最近的查詢,比如說10條記錄。這使我的數據庫很小,查詢速度會更快。我是否通過保存某些數據來刪除表中的記錄?
我能夠將傳入的查詢存儲到數據庫,但不知道如何限制或刪除表中的過量/舊數據。
任何幫助?
以及我使用PHP和MySQL
我的網站有很多傳入的搜索存儲在數據庫中,以顯示最近的查詢到我的網站。由於高搜索查詢,我的數據庫變得越來越大。所以我想要的是我只需要在數據庫中保留最近的查詢,比如說10條記錄。這使我的數據庫很小,查詢速度會更快。我是否通過保存某些數據來刪除表中的記錄?
我能夠將傳入的查詢存儲到數據庫,但不知道如何限制或刪除表中的過量/舊數據。
任何幫助?
以及我使用PHP和MySQL
你應該寫一個PHP腳本,它會由cron(即每天一次)被啓動,並從主表TableName
還可以將一些數據存檔表TableNameArchive
與完全相同的結構。 腳本中的SQL應該是這樣的:
INSERT INTO TableNameArchive
SELECT * FROM TableName WHERE data < '2010-06-01' //of course you should provide here your conditions
下一個,你應該從TableName
刪除舊記錄。
希望你在表格中有一個時間戳列(或者可以自由添加一列)。 AFAIK,你必須在向表中添加數據時明確添加時間戳。然後,你可以做線沿線的:
DELETE FROM tablename WHERE timestamp < '<a date two days in the past, or whatever'>;
你可能只想做週期性的,而不是每次添加到表的時間。
我想你也可以通過在每次添加一行時檢查表的大小並刪除最舊的記錄(再次使用添加的時間戳列)來限制最近10條記錄的大小)如果添加新記錄會使其太大。
Falkon的答案很好 - 雖然您可能不希望將您的存檔放在表中,具體取決於您對該取證數據的需求。您還可以設置一個只使用mysqldump對數據庫進行備份(使用文件名中的日期)的cron作業,然後刪除多餘的記錄。通過這種方式,您可以輕鬆地備份舊數據,或使用任何工具搜索它,並且數據庫保持較小。