2014-03-19 50 views
0

我有一個應用程序在每個任務中爲一個名爲ExampleLog的表生成大約15000行。該任務有一個taskID,保存在名爲TaskTable的表中,因此可以從ExampleLog表中檢索數據以運行某些查詢。SQL Server 2008,壓縮/ Zip和快速查詢

問題是ExampleLog表越來越大,因爲我每天至少運行1個任務。目前我的ExampleLog表超過60 GB。

我想壓縮屬於一個TaskID的15000行,並壓縮它們或只是壓縮它們,然後將壓縮數據保存在數據庫內的某個位置作爲Blob或Filestream。但對於我來說,能夠輕鬆查詢壓縮或壓縮文件並在壓縮或壓縮數據內以有效方式處理某些查詢,這一點非常重要。 (我不知道,如果有可能,或者我可能在性能方面損失)

PS:壓縮數據不應被視爲備份數據。

有人可以推薦一種很好的方法或技術來解決這個問題。我的重點是在ExampleLog上運行的查詢的速度和查詢以及磁盤上的位置。

我使用SQL Server 2008在Windows 7

回答

0

丹尼斯的答案完全無法解決我的問題,但是我會用它在數據庫中進行一些優化。 關於存儲在包/數據組的問題,有我的問題的解決方案2:

例如,如果數據的當月主要用於INSERT,UPDATE,DELETE,雖然前幾個月主要用於SELECT查詢合併操作,管理該表可能會更容易,如果它被劃分按月份。如果桌面上的定期維護操作只需要定位數據的一個子集,則這種優勢尤其明顯。如果表未分區,這些操作可能會佔用整個數據集上的大量資源。通過分區,維護操作(例如索引重建和碎片整理)可以在一個月的只寫數據上執行,例如,只讀數據仍可用於在線訪問。

  • 第二溶液它從行的代碼(C#在我的情況)一個列表或字典插入來自Task,則FILESTREAM (SQL Server)內部保存在DB服務器上。數據將在稍後被Id所檢索;該zip將被解壓縮並且數據將準備好使用。

我們決定使用第二種解決方案。

2

考慮Read-Only Filegroups and Compression

使用NTFS壓縮具有隻讀用戶定義文件組和只讀數據庫

SQL Server支持只讀 用戶自定義文件組和只讀數據庫的NTFS壓縮。在下列情況下,您應該考慮使用 壓縮只讀數據:您有大量的靜態或歷史數據,必須可用於 有限的只讀訪問。您的磁盤空間有限。

另外,還可以嘗試和應用使用Data Compression Wizard日誌表page壓縮估算收益。

+0

謝謝你@ denis-valeev爲你快速和有益的答案。但是我想將一個'Task'的數據分組並保存在同一個組或者包中,所以我可以用'TaskId'來查詢包。然後在這個包內運行查詢。你認爲爲每個「任務」創建一個文件組是一個好主意嗎? –

+0

@SamuelL我更新了我的答案 –