[英]What's the best way to save large monthly data backups in SQL?
我正在研究一個程序,該程序存儲有關我大學之間網絡連接的信息,並且要求我創建一個報告,以顯示這些連接的狀態隨時間的變化。 我當時正在考慮添加另一個表,該表包含當前的連接信息和添加數據的日期,因此在運行報告時,它只是在該日期獲取數據,但是我擔心報告可能會在幾個時間后變慢數月,因為每個月將增加約50,000行。 有一個更好的方法嗎? 我們使用Microsoft SQL Server。
這取決於您擁有事實歷史數據的原因。
如果原因是:
FromDate
和ToDate
將其保存在同一表中,這將消除以后再連接活動數據表和歷史數據表的需要。 我將重點介紹“緩慢變化維度(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.