濮阳杆衣贸易有限公司

主頁 > 知識庫 > SQL Server 2016 TempDb里的顯著提升

SQL Server 2016 TempDb里的顯著提升

熱門標(biāo)簽:真3地圖標(biāo)注 地圖標(biāo)注可以編輯地名嗎 地圖標(biāo)注跑線下市場 濮陽清豐400開頭的電話申請 疫情時期電話機器人 南通智能外呼系統(tǒng)怎么樣 樂昌電話機器人 臺灣外呼系統(tǒng)軟件 南京怎么申請400這種電話

幾個星期前,SQL Server 2016的最新CTP版本已經(jīng)發(fā)布了:CTP 2.4(目前已經(jīng)是CTP 3.0)。關(guān)于SQL Server 2016 CTP2.3 的關(guān)鍵特性總結(jié),在此不多說了,具體內(nèi)容請查相關(guān)資料。這個預(yù)覽版相比以前的CTP包含了很多不同的提升。在這篇文章里我會談下對于SQL Server 2016,TempDb里的顯著提升。

TempDb定制

在SQL Server 2016安裝期間,第一個你會碰到的改變是在安裝過程中,現(xiàn)在你能配置TempDb的物理配置。我們可以詳細看下面的截屏。

微軟現(xiàn)在檢測幾個可用的CPU內(nèi)核,基于這個數(shù)字安裝程序自動配置TempDb文件個數(shù)。這個對克服閂鎖競爭問題(Latch Contention problem)非常重要,通常當(dāng)你運行TempDb時,只有一個數(shù)據(jù)文件會發(fā)生。這里安裝向?qū)褂孟铝泄剑?/p>

當(dāng)你有小于等于8個CPU內(nèi)核,你會獲得和你CPU內(nèi)核數(shù)一樣的TempDb數(shù)據(jù)文件數(shù)。
如果你有超過8個CPU內(nèi)核,你會得到開箱即用的8個TempDb數(shù)據(jù)文件。
我在不同的配置上測試了安裝向?qū)?,下表總結(jié)了TempDb數(shù)據(jù)文件的不同個數(shù)。

CPU內(nèi)核    TempDb數(shù)據(jù)文件

2        2

4        4

8        8

32        8

這是一個巨大的進步!當(dāng)我進行SQL Server健康檢查時,TempDb只有一個數(shù)據(jù)文件,會有一些閂鎖競爭問題(Latch Contention problem)是常見的。

如果在向?qū)Ю锬闾峁┒鄠€數(shù)據(jù)路徑,你可以在各個文件夾之間循環(huán)(round-robin)分配。有一點我不喜歡的是,新的配置8MB的初始大小和64MB的自動增長率。

分配和自動增長

在SQL Server 2016之前,很多人使用1117和1118跟蹤標(biāo)記來定義SQL Server在數(shù)據(jù)庫里如何分配頁,和如何在多個數(shù)據(jù)文件間處理自動增長操作。在以前的SQL Server版本里,臨時表的數(shù)據(jù)頁總分配在所謂的混合區(qū)(Mixed Extends),它大小是64kb在多個數(shù)據(jù)庫對象(像表和索引)間共享。

使用這個方法微軟保證小表保持小,因為數(shù)據(jù)庫的第1個8頁總在混合區(qū)分配。接下來的頁(第9頁開始)在所謂的統(tǒng)一區(qū)(也是64k大?。├锓峙?。每次你給數(shù)據(jù)庫對象分配一個統(tǒng)一區(qū),對象本身立即增長64kb。

當(dāng)你啟用SQL Server的1118跟蹤標(biāo)記,對于整個SQL Server實例,只在統(tǒng)一區(qū)分配,混合區(qū)會被忽略。使用這個方法是可以減少在SGAM(共享全局分配映射(Shared Global Allocation Map)頁,管理混合區(qū))頁上的閂鎖競爭問題(Latch Contention problem)。

在SQL Server 2016里TempDb分配總在統(tǒng)一區(qū)里發(fā)生,而不使用混合區(qū)——不需要啟用任何跟蹤標(biāo)記。除臨時表外的分配還是使用混合區(qū)。下面的例子展示了在臨時表7個分配的頁直接存儲在統(tǒng)一區(qū),而完全不使用混合區(qū)。

USE tempdb
 GO
 CREATE TABLE #HelperTable
 (
  Col INT IDENTITY(, ) PRIMARY KEY NOT NULL,
  Col CHAR() NOT NULL
 )
 GO
 -- Insert records, this allocates pages in tempdb
 INSERT INTO #HelperTable VALUES (REPLICATE('a', ))
 GO 
 -- Enable DBCC trace flag 
 DBCC TRACEON()
 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________________________________________________________________________________________________________B], -)
 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, , , )
 GO
 -- Clean up
 DROP TABLE #HelperTable
 GO

在過去1117跟蹤標(biāo)記和TempDb結(jié)合進行同時自動增長操作。確保文件在同個區(qū)里同時增長非常重要。不然成比例的填充算法(proportional fill algorithm)不能發(fā)揮應(yīng)有的作用。使用SQL Server 2016,你就直接有1117跟蹤標(biāo)記的這個功能,而不需要啟用。

小結(jié)

花了很長時間后,微軟終于開始在SQL Server安裝向?qū)Ю镞M行更好的默認配置。根據(jù)可用CPU核心數(shù)配置TempDb是個巨大的進步。我們來看看下個版本會提供根據(jù)實際情況能配置MAXDOP,并行開銷閾值和服務(wù)器最大內(nèi)存等等...

本文到此介紹了,感謝您的關(guān)注!

您可能感興趣的文章:
  • SQL Server 2016 CTP2.3 的關(guān)鍵特性總結(jié)
  • SQL Server 2016 查詢存儲性能優(yōu)化小結(jié)
  • 淺談SQL Server 2016里TempDb的進步
  • SQL Server 2016的數(shù)據(jù)庫范圍內(nèi)的配置詳解

標(biāo)簽:河北 通遼 福建 陜西 廣安 阿里 馬鞍山 南京

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《SQL Server 2016 TempDb里的顯著提升》,本文關(guān)鍵詞  SQL,Server,2016,TempDb,里,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《SQL Server 2016 TempDb里的顯著提升》相關(guān)的同類信息!
  • 本頁收集關(guān)于SQL Server 2016 TempDb里的顯著提升的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    丹江口市| 将乐县| 社旗县| 安仁县| 临邑县| 那坡县| 娱乐| 增城市| 哈尔滨市| 龙胜| 句容市| 平利县| 宁阳县| 灵石县| 连平县| 滨海县| 鲁山县| 象州县| 镇远县| 曲麻莱县| 深泽县| 翁牛特旗| 电白县| 富锦市| 永泰县| 龙南县| 九江县| 建德市| 民丰县| 遵义县| 来宾市| 林口县| 海林市| 镇宁| 金溪县| 庄河市| 宝兴县| 和平区| 明溪县| 双牌县| 文山县|