SQL Server 2016 TempDb里的显著提升

几个星期前,SQL Server 2016的最新CTP版本已经发布了:CTP 2.4(目前已经是CTP 3.0)。关于SQL Server 2016 CTP2.3 的关键特性总结,在此不多说了,具体内容请查相关资料。这个预览版相比以前的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
 (
  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跟踪标记和TempDb结合进行同时自动增长操作。确保文件在同个区里同时增长非常重要。不然成比例的填充算法(proportional fill algorithm)不能发挥应有的作用。使用SQL Server 2016,你就直接有1117跟踪标记的这个功能,而不需要启用。

小结

花了很长时间后,微软终于开始在SQL Server安装向导里进行更好的默认配置。根据可用CPU核心数配置TempDb是个巨大的进步。我们来看看下个版本会提供根据实际情况能配置MAXDOP,并行开销阈值和服务器最大内存等等...

本文到此介绍了,感谢您的关注!

(0)

相关推荐

  • 浅谈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文件个数.这个对克服

  • SQL Server 2016 查询存储性能优化小结

    作为一个DBA,排除SQL Server问题是我们的职责之一,每个月都有很多人给我们带来各种不能解释却要解决的性能问题. 我就多次听到,以前的SQL Server的性能问题都还好且在正常范围内,但现在一切已经改变,SQL Server开始糟糕, 疯狂的事情不能解释.在这个情况下我介入,分析下整个SQL Server的安装,最后用一些神奇的调查方法找出性能问题的根源. 但很多时候问题的根源是一样的:所谓的计划回归(Plan Regression),即特定查询的执行计划已经改变.昨天SQL Serv

  • SQL Server 2016的数据库范围内的配置详解

    SQL Server 2016真的让人眼前一亮.几天前微软就提供了RCO(候选发布版)版本的下载.我已经围观了一圈RCO版本,其中一个最拽的功能是数据库范围内的配置(Database Scoped Configuration),在今天的文章里我想谈谈它.补充几句:装好之后,居然发现没有SSMS,崩溃中,原来是在向导中就有独立的安装程序,好吧! 这配色,真是低调有内涵. 另外,如过你的电脑已经安装了就[Microsoft Visual Studio 2010 Shell(独立)Redistribu

  • SQL Server 2016 CTP2.3 的关键特性总结

    SQL Server 2016带来全新突破性的  in-memory性能和分析功能来实现关键任务处理.全面的安全特性 -Always Encrypted 技术可以帮助保护您的数据 数据库方面的增强 Row Level Security已经支持In-memory OLTP 表.用户现在可以对内存优化表实施row-level security策略. 另外SCHEMABINDING.predicate 函数和内联表值函数都要包含NATIVE_COMPILATION编译选项. 使用NATIVE_COMP

  • SQL Server 2016 TempDb里的显著提升

    几个星期前,SQL Server 2016的最新CTP版本已经发布了:CTP 2.4(目前已经是CTP 3.0).关于SQL Server 2016 CTP2.3 的关键特性总结,在此不多说了,具体内容请查相关资料.这个预览版相比以前的CTP包含了很多不同的提升.在这篇文章里我会谈下对于SQL Server 2016,TempDb里的显著提升. TempDb定制 在SQL Server 2016安装期间,第一个你会碰到的改变是在安装过程中,现在你能配置TempDb的物理配置.我们可以详细看下面的

  • SQL Server 2016里的sys.dm_exec_input_buffer的问题

    我们都知道DBCC命令有点尴尬,因为你不能在T-SQL查询里调用它们,你也不能关联它们的输出到其它DMV/DMF.例如你想为每个用户会话返回最后一个执行的SQL语句.... sys.dm_exec_input_buffer 在SQL Server 2016里,事情就变得简单多,因为微软为你提供了一个新DMFsys.dm_exec_input_buffer,它和DBCC INPUTBUFFER一样做同样的工作. 使用sys.dm_exec_input_buffer非常简单:这个DMF需要2个输入参

  • SQL Server 2016 CTP2.2安装配置方法图文教程

    SQL Server 2016 CTP2.2 安装配置教程 下载一个iso文件,解压出来(大约2.8G左右),在该路径下双击Setup.exe即可开始安装. 安装之前请先安装.NET 3.5 SP1,在服务器管理器->添加角色和功能里就能安装 打开安装界面 安装界面一如既往的熟悉,这个安装界面从SQL Server2008开始就没有太大变化 因为是评估版,那么就不需要产品密钥,直接安装 勾选接受许可条款 验证是否符合规则 不要勾选检查更新 选择SQL Server功能安装 高大上的功能来了,可以

  • SQL Server 2016 配置 SA 登录教程

    tips:在win10中查找SQL Server 2016配置管理器,用来开启SQL Server网络配置,启用实例TCP/IP协议和Name PiPe. Windows 10: 要打开 SQL Server 配置管理器,请在"起始页"中键入 SQLServerManager13.msc(适用于 SQL Server 2016). 对于早期版本的 SQL Server ,请将 13 替换为较小的数字. 单击"SQLServerManager13.msc"可打开配置管

  • SQL Server 2016正式版安装配置过程图文详解

    本文针对SQL 2016 正式版安装过程进行梳理总结,帮助大家顺利安装SQL 2016,具体内容如下 1.点击全新安装 2.接着就是下一步,下一步... 3.选择你要安装的功能 [可以利用PolyBase,使用标准TSQL查询hadoop数据,但这里我不需要装] 4.设置排序规则 5.设置登录用户 6.临时数据库配置[SQL Server 2016:可以根据逻辑CPU数量来调整tempdb的数据文件数量] 7.数据库安装完成后,点击安装管理工具 8.管理工具要从官网去下载[https://msd

  • 详解SQL Server 2016快照代理过程

    本文我们通过SQL Server 2016一个实例数据表,给大家详细分析了快照代理过程遇到的问题和解决办法,并对快照生成过程做了详细说明,以下是全部内容: 概述 快照代理准备已发布表的架构和初始数据文件以及其他对象.存储快照文件并记录分发数据库中的同步信息. 快照代理在分发服务器上运行:SQLServer2016版本对快照代理做了一些比较好的优化,接下来详细了解一下快照的执行过程. 一.快照代理文件 在执行快照作业是会在指定的快照目录生成4种类型的文件. BCP文件:发布对象的数据文件. IDX

随机推荐