在SQLServer2016中被显著增强

几周前,SQL Server 2016的最新CTP版已经发布:CTP 2.4(现在已经CTP 3)。在对SQL Server 2016 ctp2.3关键特征的总结,在这里就不多说了。请核对相关信息的具体内容。此预览,包含了很多不同的改进,相比以前的CTP。在这篇文章中我谈到在SQL Server 2016中的显著增加,TempDb。

tempdb定制



SQL Server 2016的安装过程中,你会遇到的第一个变化是在安装过程中,你可以配置tempdb的物理配置。我们可以看看下面的截图。


微软现在检测几个可用的CPU内核,并自动配置tempdb文件数量基于该数字的安装程序。这是克服闩锁争用问题非常重要,通常当你运行tempdb数据文件,只有一个会发生。这里的安装向导,使用下面的公式:

当你有小于或等于8的CPU内核,你会得到你的CPU tempdb数据文件和内核数。

如果你有超过8个CPU内核,你会得到8 tempdb数据文件,打开和使用。

我测试了安装向导的不同的配置,和下表总结了tempdb数据文件的数量不同。

CPU内核tempdb数据文件

二十二

四十四

八十八

三百二十八

这是一个很大的进步!我在SQL服务器健康检查,tempdb中只有一个数据文件,还有一些锁竞争问题(闩锁争用问题)是常见的。

如果你提供了多个数据路径的向导,您可以运行(Round Robin)各个文件夹中。我不喜欢的一件事是8MB新配置的初始大小和64MB的自动增长率。

分布与自动生长

在SQL Server 2016中,许多人用1117和1118的跟踪标记来定义SQL Server如何分配页的数据库,以及如何处理自动增长操作多个数据文件中。在SQL Server的早期版本,该临时表中的数据页被分配在所谓的混合区(混合扩展),其大小是64KB,这是多个数据库对象之间共享,如表和索引。

使用这种方法,微软可以确保小桌子仍然很小,因为数据库的前8页都是分配在混合区。下一页(第九页开始)被分配在所谓的统一的地区(也是64K的大小)。每一次你的数据库对象分配一个统一的区域对象本身的64kb立即增加。

当您启用SQL Server 1118跟踪标签,为整个SQL Server实例,只有在统一区、混合区将被忽略。使用这种方法,我们可以减少闩锁在锁竞争问题(竞争问题)关于兴业(共享全局分配图)页。

在SQL Server 2016中,在统一的地区经常发生tempdb分配,而不是使用混合区没有跟踪标记是必需的。除了对临时表的分布,面积混合使用。下面的例子表明,7页分配在临时表直接存储在统一的区域没有混合区的使用。


使用tempdb

创建表# helpertable

主键(,)主键不为空,
Col CHAR()不是null


插入的记录,这在tempdb分配页
插入# helpertable值(复制(A,))

使DBCC跟踪标志
DBCC TRACEON()

从sys.tables检索临时表的名称
选择的名字从sys.tables
那里的名字像# helpertable %

检索指定表的第一个数据页(列PageFID)
DBCC IND(tempdb,{ # helpertable ________________________________________________________________________________________________________ b },--)

转储的数据通过DBCC IND检索表IAM页
没有在混合范围内分配页面,完全一致的范围是
DBCC PAGE(tempdb,)

-清理
表# helpertable



在过去的1117个跟踪标签和TempDb结合进行同步自动增长操作。它是确保文件是生长在同一地区同一时间的重要。否则,按比例填充算法(按比例填充alrithm)不能发挥其作用。在SQL Server 2016中,你有1117种微量元素标签的功能,而不需要使他们。

总结



很长一段时间后,微软终于开始在SQL Server安装向导做一个更好的默认配置。配置基于可用的CPU内核的数量tempdb是一个很大的进步。让我们看看下一个版本提供MAXDOP,并行开销阈值,服务器的最大内存等等,根据的实际情况。

本文是在这里介绍的,谢谢您的关注!