Sql-Server
SQL Server 按本地和遠端數據庫分區
我們有一個與文件相關的表(一個表上大約有 1700 萬條記錄),另一個用於該文件的屬性。團隊決定歸檔舊條目。我考慮過使用文件組進行分區,它可以放在其他儲存驅動器中但它仍然是相同的伺服器/主機所以,SQL Server 是否能夠按日期對數據進行分區並將舊數據的查詢發送到另一個 SQL Server 實例,而在本地伺服器中進行相同的過濾?
如果可能的話,除了網路 IO 之外,我們是否會對性能產生影響?
你所描述的聽起來很像 SQL Server Stretch Database。不過,Stretch DB 僅在遠端伺服器為 Azure 時才有效。此外,它的定價相當高——以至於我個人認為它不是一個可行的選擇,特別是因為舊數據的存檔級儲存也應該有助於節省成本,而不是增加成本。
假設 Stretch DB 對您不起作用,則沒有內置功能可以為您執行此操作。你必須建立自己的。
您可以建構 ETL 管道將數據從主伺服器移動到存檔伺服器。您還可以通過備份和恢復將數據移動到存檔伺服器。
我親自建構了解決方案,將繁忙的日誌數據放入主伺服器上的月/年數據庫,然後通過備份恢復將舊日誌移動到存檔/報告伺服器以進行長期保留。使用該解決方案,我使用主數據庫中的同義詞或視圖將活動數據的讀取/寫入重定向到另一個數據庫,並在“活動”數據庫更改時更新它。這允許應用程式碼保持一致,即使實際表在幕後發生變化。
當需要將數據移動到更冷的存檔伺服器時,分區/分片到單獨的數據庫非常有吸引力,因為數據庫可以很容易地從一台伺服器移動到另一台伺服器。與從表中讀取數據並通過管道移動數據相比,數據庫級備份/恢復效率更高(並且事務一致,如果這很重要)。