我正在使用SQL Server 2005.存在包含超過1,000,000,000行的審計跟蹤表。我打算將這張表格歸檔。當我用nolock
做一個簡單的選擇時,我仍然可以發現阻塞(可能是IO阻塞與其他進程?)。那麼對於這種情況有沒有最佳做法?存檔超過1,000,000,000行的巨大表格的最佳做法
回答
對於一個表大,你會想找到一些有效的分片/分區策略。在這種意義上歸檔往往是一種分區形式,但不是一種好的分區形式,因爲無論如何您通常都要查詢當前和歸檔。在最糟糕的情況下,您最終會在歸檔和當前表的UNION上產生SELECT,這比根本沒有分割它們更糟糕。
通過尋找其他方式來分割數據,比如記錄類型或其他東西,你通常會做得更好。但是,如果您打算按日期進行分割,請確保您不會查詢歸檔+當前數據集。
此外,SQL Server 2005+不默認啓用MVCC。但是,如果啓用MS稱爲快照隔離的功能,則可以執行此操作。見Serializable vs. Snapshot Isolation Level。
而不是啓用此功能的原因是未提交的INSERT或UPDATE將在另一個事務中阻塞SELECT,直到第一個事務提交或回滾爲止。這可能會導致不必要的鎖定並限制您的可伸縮性。
創建數據庫的備份並將其恢復到存檔位置。
這是迄今爲止最簡單+最安全的解決方案,尤其是如果您不經常這樣做......或者實際上,尤其是如果您經常這樣做的話。除非你需要像分區那樣更流暢的東西(這需要一點點教育才能正確執行),這是一個很好的選擇。 – 2010-03-02 04:08:21
不管你怎麼做,一次選擇10億行都會給服務器帶來壓力。
而不是一次批1000行。 bcp工具自動執行此操作。或者使用SSIS將數據複製到另一個數據庫 - 它幾乎完成了同樣的事情。
- 1. 用巨大的表格存檔問題
- 2. JAVA - 解析巨大(超大)JSON文件的最佳方法
- 3. 在巨大的表格中存儲速度的「標籤」的最佳方式
- 4. 處理已刪除表格行的最佳做法?
- 5. 超過最大文檔大小
- 6. 大JavaScript對象的最佳做法
- 7. Django中的巨大表格?
- 8. SharePoint列表最佳做法
- 9. 存儲密鑰的最佳做法
- 10. 存儲程序集的最佳做法?
- 11. 存儲陣列的最佳做法
- 12. 以最佳性能存儲超大整數的正確方法?
- 13. 什麼是存儲大數據的最佳做法
- 14. 通過WCF處理大型進口產品的最佳做法?
- 15. 單元格內容刪除後保存DataGridView的最佳做法
- 16. 進行Magento更新的最佳做法?
- 17. 命令行構建的最佳做法
- 18. 響應Google圖表的最佳做法
- 19. 顯示報表的最佳做法
- 20. 表單提交的最佳做法
- 21. 將巨大形狀切割成瓷磚的最佳方法?
- 22. 超過300行的下拉列表的最佳解決方案?
- 23. 從列表框中查找大量項目的最佳做法
- 24. 關注/閱讀大型郵件列表的最佳做法?
- 25. Symfony2:大型表格的最佳實踐
- 26. 紅移大「in」子句最佳做法
- 27. Android佈局大小最佳做法
- 28. Math.Pow的最佳做法
- 29. infinity.js的最佳做法
- 30. Sqlite的最佳做法Android
快照存儲層並將快照中的數據庫作爲獨立實例安裝? – 2010-03-02 04:04:20