程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> 淺談SQL Server 2016裡TempDb的提高

淺談SQL Server 2016裡TempDb的提高

編輯:MSSQL

淺談SQL Server 2016裡TempDb的提高。本站提示廣大學習愛好者:(淺談SQL Server 2016裡TempDb的提高)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談SQL Server 2016裡TempDb的提高正文


幾個禮拜前,SQL Server 2016的最新CTP版本曾經宣布了:CTP 2.4(今朝曾經是CTP 3.0)。這個預覽版比擬之前的CTP包括了許多分歧的晉升。在這篇文章裡我談判下關於SQL Server 2016,TempDb裡的明顯晉升。

TempDb定制

在SQL Server 2016裝置時代,第一個你會碰著的轉變是在裝置進程中,如今你能設置裝備擺設TempDb的物理設置裝備擺設。我們可以具體看上面的截屏。

微軟如今檢測幾個可用的CPU內核,基於這個數字裝置法式主動設置裝備擺設TempDb文件個數。這個對戰勝闩鎖競爭成績(Latch Contention problem)異常主要,平日當你運轉TempDb時,只要一個數據文件會產生。這裡裝置領導應用以下公式:

當你有小於等於8個CPU內核,你會取得和你CPU內核數一樣的TempDb數據文件數。假如你有跨越8個CPU內核,你會獲得開箱即用的8個TempDb數據文件。

我在分歧的設置裝備擺設上測試了裝置領導,下表總結了TempDb數據文件的分歧個數。

CPU內核    TempDb數據文件

2        2

4        4

8        8

32        8

這是一個偉大的提高!當我停止SQL Server安康檢討時,TempDb只要一個數據文件,會有一些闩鎖競爭成績(Latch Contention problem)是罕見的。

假如在領導裡你供給多個數據途徑,你可以在各個文件夾之間輪回(round-robin)分派。有一點我不愛好的是,新的設置裝備擺設8MB的初始年夜小和64MB的主動增加率。

分派和主動增加

在SQL Server 2016之前,許多人應用1117和1118跟蹤標志來界說SQL Server在數據庫裡若何分派頁,和若何在多個數據文件間處置主動增加操作。在之前的SQL Server版本裡,暫時表的數據頁總分派在所謂的混雜區(Mixed Extends),它年夜小是64kb在多個數據庫對象(像表和索引)間同享。

應用這個辦法微軟包管小表堅持小,由於數據庫的第1個8頁總在混雜辨別配。接上去的頁(第9頁開端)在所謂的同一區(也是64k年夜小)裡分派。每次你給數據庫對象分派一個同一區,對象自己立刻增加64kb。

當你啟用SQL Server的1118跟蹤標志,關於全部SQL Server實例,只在同一辨別配,混雜區會被疏忽。應用這個辦法是可以削減在SGAM(同享全局分派映照(Shared Global Allocation Map)頁,治理混雜區)頁上的闩鎖競爭成績(Latch Contention problem)。

在SQL Server 2016裡TempDb分派總在同一區裡產生,而不應用混雜區——不須要啟用任何跟蹤標志。除暫時表外的分派照樣應用混雜區。上面的例子展現了在暫時表7個分派的頁直接存儲在同一區,而完整不應用混雜區。

USE tempdb
GO

CREATE TABLE #HelperTable
(
  Col1 INT IDENTITY(1, 1) PRIMARY KEY NOT NULL,
  Col2 CHAR(8000) NOT NULL
)
GO

-- Insert 7 records, this allocates 7 pages in tempdb
INSERT INTO #HelperTable VALUES (REPLICATE('a', 8000))
GO 7

-- Enable DBCC trace flag 3604
DBCC TRACEON(3604)
GO

-- Retrieve the temp table name from sys.tables
SELECT name FROM sys.tables
WHERE name LIKE '#HelperTable%'
GO

-- Retrieve the first data page for the specified table (columns PageFID and PagePID)
DBCC IND(tempdb, [#HelperTable________________________________________________________________________________________________________00000000000B], -1)
GO

-- Dump the IAM page of the table TestTable retrieved by DBCC IND previously
-- No pages are allocated in Mixed Extents, a complete Uniform Extent is allocated.
DBCC PAGE (tempdb, 5, 33, 3)
GO

-- Clean up
DROP TABLE #HelperTable
GO

在曩昔1117跟蹤標志和TempDb聯合停止同時主動增加操作。確保文件在同個區裡同時增加異常主要。否則成比例的填充算法(proportional fill algorithm)不克不及施展應有的感化。應用SQL Server 2016,你就直接有1117跟蹤標志的這個功效,而不須要啟用。

小結

花了很長時光後,微軟終究開端在SQL Server裝置領導裡停止更好的默許設置裝備擺設。依據可用CPU焦點數設置裝備擺設TempDb是個偉大的提高。我們來看看下個版本會供給依據現實情形能設置裝備擺設MAXDOP,並行開支阈值和辦事器最年夜內存等等...

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved