2013-02-22 82 views
3

在我們的(預訂/預訂類型)應用程序中,我們通過一個DBAudit表處理日誌數據。越來越多的日誌數據

問題在於,由於該表中數據的增長,以此爲基礎生成的報告「大量」減慢。有什麼選擇(時間證明)?

難道這是有效的選擇:

  1. 手柄日誌通過多個表
  2. 自動刪除舊數據定期
  3. 舊數據遷移到其他檔案數據庫

如何做其他的應用程序與巨大的活動日誌保持這一點?

回答

3

您可以嘗試每隔一段時間預先計算數據中的重要指標,然後根據這些指標構建報告。

這將允許您將舊的日誌數據歸檔到數據倉庫中,而不會影響您的報告。

+0

令人印象深刻的概念!謝謝親:) – tariq 2013-02-22 07:22:18

+0

預先計算的指標應保持在其他一些表我猜? – tariq 2013-02-22 07:31:51

+0

是在單獨的表中沒有對原始生產數據的外鍵。在後臺運行的Windows服務可以每晚或每週計算一次,無論哪種方式對您的情況最好。我爲客戶做了這件事,而且工作得很好。權衡是報告不是實時的(大部分時間是可以接受的)。 – 2013-02-22 09:53:40

0

是的,所有的這些都是不錯的選擇,你應該嘗試實現所有這些:通過多個表

  1. 手柄日誌 - 也許考慮只保留在主表的最新數據,然後將其移動到稍後有些歷史表。這取決於運行報告真正需要多少數據。
  2. 定期自動刪除舊數據 - 我會考慮在刪除數據之前首先計算指標。嘗試創建儘可能多的度量標準,以減少佔用空間,然後在處理數據時只保留結果並刪除實際數據。
  3. 將舊數據遷移到某個其他存檔數據庫 - 我會這樣做,以防萬一您無法刪除任何數據。

除此之外,您可以隨時嘗試爲報告表添加最常用列的索引,並/或嘗試儘可能優化查詢。如果這些表中已經有索引,請確保定期重新構建這些索引。