Sqlserver關於tempdb臨時資料庫最優檔案個數的最優實踐

lusklusklusk發表於2023-10-09

一般而言,如果邏輯處理器數目小於或等於 8,則使用的資料檔案數與邏輯處理器數相同。 如果邏輯處理器數大於 8,請指定 8 個資料檔案。 如果仍然存在爭用,則以 4 的倍數增加資料檔案的數量,直到爭用減少到可接受的級別或對工作負荷/程式碼進行更改。tempdb 資料檔案的最優數量取決於 tempdb 中的爭用程度。首先,您可以將 tempdb 配置為至少等於為 SQL Server 分配的邏輯處理器的數量。對於更高階的系統,起始數字可以是八 (8)。如果爭用沒有減少,您可能必須增加資料檔案的數量。


Tempdb 系統資料庫是包含以下內容的全域性資源:
    顯式建立的臨時使用者物件。 它們包括全域性或區域性臨時表及索引、臨時儲存過程、表變數、表值函式返回的表或遊標。
    資料庫引擎建立的內部物件。 它們包括:
        用於儲存假離線、遊標、排序和臨時大型物件 (LOB) 儲存的中間結果的工作表。
        用於雜湊聯接或雜湊聚合操作的工作檔案。
        用於建立或重新生成索引等操作(如果指定了 SORT_IN_TEMPDB)的中間排序結果,或者某些 GROUP BY、ORDER BY 或 UNION 查詢的中間排序結果。



    版本儲存區是資料頁的集合,它包含支援用於行版本控制的功能的資料行。 有兩種型別:公用版本儲存區和聯機索引生成版本儲存區。 版本儲存區包含:
        由透過行版本控制隔離或快照隔離事務使用 READ COMMITTED 的資料庫中的資料修改事務生成的行版本。
        由資料修改事務為實現聯機索引操作、多重活動結果集 (MARS) 以及 AFTER 觸發器等功能而生成的行版本。


tempdb 中的操作是最小日誌記錄操作,以便回滾事務。 每次啟動 SQL Server 時都會重新建立 tempdb,從而在系統啟動時總是具有一個乾淨的資料庫副本。 在斷開聯接時會自動刪除臨時表和儲存過程,並且在系統關閉後沒有活動連線。

tempdb 不會有什麼內容從 SQL Server 的一個會話儲存到另一個會話。 不允許對 tempdb 執行備份和還原操作。



輔助資料檔案數取決於計算機上的(邏輯)處理器數。 一般而言,如果邏輯處理器數目小於或等於 8,則使用的資料檔案數與邏輯處理器數相同。 如果邏輯處理器數大於 8,請指定 8 個資料檔案。 如果仍然存在爭用,則以 4 的倍數增加資料檔案的數量,直到爭用減少到可接受的級別或對工作負荷/程式碼進行更改。


The optimal number of tempdb data files depends on the degree of contention seen in tempdb. As a starting point, you can configure tempdb to be at least equal to the number of logical processors that are assigned for SQL Server. For higher-end systems, the starting number could be eight (8). If the contention is not reduced, you may have to increase the number of data files.
tempdb 資料檔案的最優數量取決於 tempdb 中的爭用程度。首先,您可以將 tempdb 配置為至少等於為 SQL Server 分配的邏輯處理器的數量。對於更高階的系統,起始數字可以是八 (8)。如果爭用沒有減少,您可能必須增加資料檔案的數量



How increasing the number of tempdb data files reduces contention
The following list explains how increasing the number of tempdb data files that have equal sizing reduces contention:
    If you have one data file for the tempdb, you only have one GAM page, and one SGAM page for each 4 GB of space.
    Increasing the number of data files that have the same sizes for tempdb effectively creates one or more GAM and SGAM pages for each data file.
    The allocation algorithm for GAM allocates one extent at a time (eight contiguous pages) from the number of files in a round robin fashion while honoring the proportional fill. Therefore, if you have 10 equally sized files, the first allocation is from File1, the second from File2, the third from File3, and so on.
    The resource contention of the PFS page is reduced because eight pages at a time are marked as FULL because GAM is allocating the pages.

增加 tempdb 資料檔案的數量如何減少爭用

以下列表說明了增加具有相同大小的 tempdb 資料檔案的數量如何減少爭用:
    如果 tempdb 有一個資料檔案,則每 4 GB 空間只有一個 GAM 頁和一個 SGAM 頁。
    增加 tempdb 具有相同大小的資料檔案的數量可以有效地為每個資料檔案建立一個或多個 GAM 和 SGAM 頁。
    GAM 的分配演算法以迴圈方式從檔案數量中一次分配一個範圍(八個連續頁),同時遵守比例填充。因此,如果有 10 個大小相同的檔案,則第一個分配來自 File1,第二個分配來自 File2,第三個分配來自 File3,依此類推。
    PFS 頁面的資源爭用減少了,因為 GAM 正在分配頁面,一次將八個頁面標記為 FULL。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30126024/viewspace-2987550/,如需轉載,請註明出處,否則將追究法律責任。

相關文章