日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

八、IO优化(6)优化tempdb性能

發(fā)布時間:2025/3/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 八、IO优化(6)优化tempdb性能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、tempdb簡介

1. 概念

  tempdb是一個系統(tǒng)數(shù)據(jù)庫,可供連接到SQL Server實例的所有用戶使用。

  每次啟動 SQL Server 時都會重新創(chuàng)建 tempdb,從而在系統(tǒng)啟動時總是保持一個干凈的數(shù)據(jù)庫副本。在斷開聯(lián)接時會自動刪除臨時表和存儲過程,并且在系統(tǒng)關閉后沒有活動連接。因此 tempdb 中不會有什么內(nèi)容從一個 SQL Server 會話保存到另一個會話。

  不允許對 tempdb 進行備份和還原操作。


2. tempdb保存的對象

(1)顯式創(chuàng)建的用戶對象

  這些對象由用戶顯式創(chuàng)建。存在于用戶會話的作用域中,也可位于創(chuàng)建對象所用的例程(存儲過程、觸發(fā)器或用戶定義函數(shù))的作用域中。

  包括:表和索引(系統(tǒng)的,或用戶定義的)、臨時表和索引(全局的,或局部的)、表變量、表值函數(shù)中返回的表。


(2)數(shù)據(jù)庫引擎創(chuàng)建的內(nèi)部對象

  這些內(nèi)部對象由數(shù)據(jù)庫引擎根據(jù)需要而創(chuàng)建,用于處理SQL Server語句。可以在語句的作用域中創(chuàng)建和刪除。每個內(nèi)部對象至少使用9個頁面:1個IAM頁,1個連續(xù)8頁的區(qū)。

  包括:用于游標或假脫機操作以及臨時大型對象(LOB)存儲的工作表;用于HASH連接或HASH聚合操作的工作表;用于創(chuàng)建或重新生成索引等操作(如果指定了SORT_IN_TEMPDB)的中間排序結果,或者某些GROUP BY、ORDER BY或UNION查詢的中間排序結果。


(3)版本存儲區(qū)

  版本存儲區(qū)是數(shù)據(jù)頁的集合,它包含支持使用行版本控制的功能所需的數(shù)據(jù)行,主要用來支持快照事務隔離級別,以及一些其它提高數(shù)據(jù)庫并發(fā)性能的新功能。主要分為2類:公用版本存儲區(qū)、聯(lián)機索引生成版本存儲區(qū)。

  包括:由使用快照隔離級別或已提交隔離級別(基于行版本控制)的數(shù)據(jù)庫中的數(shù)據(jù)修改事務生成的行版本;由數(shù)據(jù)修改事務為實現(xiàn)聯(lián)機索引操作、多個活動的結果集(MARS)以及AFTER觸發(fā)器等功能而生成的行版本。


3. tempdb 的性能提高

  在 SQL Server 中,tempdb 性能以下列方式進行提高:

(1)可能緩存臨時表和表變量。緩存允許刪除和創(chuàng)建臨時對象的操作非常快速地執(zhí)行,并減少頁分配的爭用問題。

(2)分配頁閂鎖協(xié)議得到改善。從而減少使用的 UP(更新)閂鎖數(shù)。

(3)減少了 tempdb 的日志開銷。從而降低了 tempdb 日志文件上的磁盤 I/O 帶寬占用。

(4)在 tempdb 中分配混合頁的算法得到改善。



二、監(jiān)視tempdb大小

  tempdb 數(shù)據(jù)庫的大小和物理位置可能會影響系統(tǒng)的性能。tempdb 的大小可以影響系統(tǒng)性能。例如,如果 tempdb 的大小太小,則每次啟動 SQL Server 時,系統(tǒng)處理可能忙于數(shù)據(jù)庫的自動增長,而不能支持工作負荷要求。可以通過增加 tempdb 的大小來避免此開銷。

  如果 tempdb 中磁盤空間不足,則可能會嚴重破壞 SQL Server 生產(chǎn)環(huán)境,并會使正在運行的應用程序無法完成操作。

  可以使用 sys.dm_db_file_space_usage 動態(tài)管理視圖來監(jiān)視 tempdb 文件中的這些功能使用的磁盤空間。

  此外,若要在會話級或任務級監(jiān)視 tempdb 中的頁分配或頁釋放活動,可以使用動態(tài)管理視圖 sys.dm_db_session_space_usage 和 sys.dm_db_task_space_usage。這些視圖可用于標識使用 tempdb 中大量磁盤空間的大型查詢、臨時表或表變量。

  還可以使用若干個計數(shù)器來監(jiān)視 tempdb 中的可用空間以及使用 tempdb 的資源。

http://technet.microsoft.com/zh-cn/library/ms176029(v=sql.105).aspx


  每次創(chuàng)建 tempdb 時都要使用文件大小和文件增長參數(shù)的值。例如,如果您將 tempdb 數(shù)據(jù)文件的大小增加到 20 MB 并將文件增量增加到 15%,則新的值將立即生效。如果后續(xù)事務活動使 tempdb 的大小增大,則每次重新啟動 SQL Server 實例時,數(shù)據(jù)文件的大小都將返回到 20 MB。


三、tempdb的通用原則

1. 文件數(shù)量

  根據(jù)需要創(chuàng)建足夠多的文件以使磁盤寬度最大化。使用多個文件可以減少 tempdb 存儲爭用并獲得更大的可伸縮性。但是,請勿創(chuàng)建過多的文件,因為此操作可能降低性能并增加管理開銷。

  作為通用原則,為服務器中的每一個 CPU 創(chuàng)建一個數(shù)據(jù)文件(用于解釋任何關聯(lián)掩碼設置),然后根據(jù)需要上下調(diào)整文件的數(shù)量。


2. 恢復模式

  將 tempdb 的恢復模式設置為 SIMPLE。此模式自動回收日志空間以保持較小的空間要求。


3. 自動增長

  通過將文件大小設置為足夠容納環(huán)境中典型工作負荷的值來預分配所有 tempdb 文件的空間。這可以避免 tempdb 因擴展得過于頻繁而影響性能。



本文結語:

  規(guī)劃tempdb數(shù)據(jù)庫的大小,根據(jù)CPU數(shù)量使用多個文件。


總結

以上是生活随笔為你收集整理的八、IO优化(6)优化tempdb性能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。