SQL Server中的TempDB管理——TempDB基本知識(為什麼需要版本儲存區)
參考資料來自:
http://blogs.msdn.com/b/sqlserverstorageengine/archive/tags/tempdb/
從SQLServer2005開始引入了版本儲存區,用於儲存不同版本的資料和索引行。行版本通常是舊的資料或索引行的副本,用來實現現有的觸發器以及基於快照的隔離級別、MARS和線上索引建立等SQL Server2005新功能。下面讓我們看一下這些功能是如何使用行版本的:
l 觸發器:觸發器對被刪除和被插入的行進行操作,這是原表的 DML 操作的一部分。SQL Server2005之前,觸發器通過遍歷撤消/重做日誌邏輯構造這些行。因為 SQL Server 需要遍歷的舊的記錄,這會導致磁碟頭來回移動,從而損害的日誌所在磁碟的 IO 吞吐量。通常事務回滾並不常見,日誌所在磁碟一般都是有順序地寫入。如果應用程式大量使用觸發器就有可能導致日誌磁碟上的 IO 瓶頸。自SQL Server 2005開始,觸發器改為使用行版本。於是被刪除的和被插入的行將使用行版本,這些行的控制程式碼將附加到該事務中。使用行版本避免了SQL Server遍歷日誌,從而減小了日誌磁碟壓力,但同時行版本增加了TempDB的使用量。
l 線上索引:索引可以線上建立,但建立的同時行的資料可能會發生改變。SQL Server使用行版本保證建立索引參考的資料不被改變。
l MARS:MARS全稱為Multiple Active Result Sets(多個活動結果集)。SQL Server通過行版本實現它。這是一個較為複雜的功能。概括的說就是因為MARS允許同一事務內的多個語句在同一時間處於活動狀態,SQL Server 就必須使用行版本控制來提供語句級別的一致性。
l 快照隔離級別和使用行版本控制的已提交讀隔離級別:行版本是實現這些新隔離級別的基礎。SQL Server 建立已修改的行版本,使這些隔離級別下執行的事務不會讀到髒資料。
以上這些功能除了觸發器之外都是SQL Server2005的新功能,而升級到SQL Server2005版本後觸發器也開始使用行版本了,效果比之前要好。SQL Server能夠較好地監視和解決版本儲存區問題。
接下來的博文中將討論版本儲存區中儲存,資料遍歷和垃圾資料處理等詳細內容。
相關文章
- 如何在SQL Server中最佳化TempdbSQLServer
- SQLServer行版本資訊吃資料庫tempdb空間SQLServer資料庫
- 替代 VMware ,為什麼需要重新考慮您的儲存?
- 知識庫終極指南:為什麼您的企業需要知識庫?
- tempdb日誌檔案暴增分析
- tempdb資料檔案暴增分析
- tempdb大量閂鎖等待問題分析
- 儲存器的知識
- Sqlserver定位哪些物件和哪些會話哪些sql語句消耗了tempdbSQLServer物件會話
- 【知識分享】什麼是網路儲存伺服器伺服器
- Ms Sql Server查詢儲存過程中的內容SQLServer儲存過程
- 【知識分享】香港伺服器的IPMI是什麼?為什麼需要它?伺服器
- SQL server儲存過程函式SQLServer儲存過程函式
- MySQL的儲存方式有哪些?linux運維需要哪些知識MySqlLinux運維
- SQL Server儲存過程的優缺點SQLServer儲存過程
- 智算時代需要什麼樣的儲存?
- web前端需要掌握什麼知識?Web前端
- SQLServer如何釋放tempdb臨時表空間SQLServer
- SQL Server新老版本CE區別SQLServer
- SQL Server中的版本號如何理解SQLServer
- 【知識分享】伺服器為什麼要測壓需要注意什麼伺服器
- SQL SERVER儲存過程AS和GO的含義SQLServer儲存過程Go
- 理解SQL Server 2008索引的儲存結構YDSQLServer索引
- SQLServer的tempdb暴增導致磁碟消耗的處理方案SQLServer
- 什麼是YottaChain儲存,為什麼說是未來資料儲存的趨勢?AI
- SQL Server為什麼這麼耗記憶體SQLServer記憶體
- 為什麼說保險業需要KGB知識圖譜加持
- 為什麼Kubernetes的儲存如此艱難?
- 【知識分享】網路儲存伺服器是什麼有哪些功能伺服器
- 【SQL Server】常見系統儲存過程SQLServer儲存過程
- Q&A:在SQL Server 2005中編寫儲存過程RVSQLServer儲存過程
- SQL Server資料儲存與NTFS簇的大小PXSQLServer
- SQL Server 2005的複製儲存過程選項BYSQLServer儲存過程
- SQL Server 中的 NOLOCK 到底是什麼意思?SQLServer
- 關於SQL Server中儲存過程在C#中呼叫的簡單示例SQLServer儲存過程C#
- 為什麼學人工智慧首推Python 需要學習哪些知識人工智慧Python
- 物件儲存的優勢有哪些?為什麼要選擇物件儲存?物件
- HDFS分散式儲存中NameNode 和DataNode 有什麼區別?分散式
- SQL Server實戰六:T-SQL、遊標、儲存過程的操作SQLServer儲存過程