簡體   English   中英

在SQL中保存大型每月數據備份的最佳方法是什么?

[英]What's the best way to save large monthly data backups in SQL?

我正在研究一個程序,該程序存儲有關我大學之間網絡連接的信息,並且要求我創建一個報告,以顯示這些連接的狀態隨時間的變化。 我當時正在考慮添加另一個表,該表包含當前的連接信息和添加數據的日期,因此在運行報告時,它只是在該日期獲取數據,但是我擔心報告可能會在幾個時間后變慢數月,因為每個月將增加約50,000行。 有一個更好的方法嗎? 我們使用Microsoft SQL Server。

這取決於您擁有事實歷史數據原因。

如果原因是:

  • 對於報告需求,您可以通過添加兩個日期列FromDateToDate將其保存在同一表中,這將消除以后再連接活動數據表和歷史數據表的需要。
  • 僅供參考,將它放在不同的表中很有意義,因為這可能會降低活動表上索引的性能。

我將重點介紹“緩慢變化維度(SCD)2類”方法,該方法通過維護記錄的多個版本來跟蹤數據歷史記錄,並使用EndDate或標志來標識活動記錄。 每次插入新記錄時,此方法允許跟蹤任意數量的歷史記錄,而較舊的記錄將填充EndDate

步驟1:對於重新加載的事實, UPDATE IsActive = 0 ,以便保留記錄,並以EndDate作為當前日期。

merge ActiveTable as T
using DataToBeLoaded as D  
    on  T.ID = D.ID
         and 
        T.isactive = 1  -- Current active entry
  when matched then
    update set T.IsActive = 0,
               T.EndDate = GETDATE();

步驟2:將最新數據插入IsActive = 1並將FromDate作為當前日期的ActiveTable中。

免責聲明:以下使用SCD 2的方法可能會使您的數據倉庫變得龐大。 但是,我認為這不會嚴重影響您的方案的性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM