SQL Server 2016新特性: tempdb增强(Multiple TempDB Files)

SQL Server 2016引入了一项新特性,即默认根据逻辑处理器数量创建多个tempdb数据文件,最多8个,减少PFS、GAM和SGAM页的争夺,提升性能。追踪标记1117和1118在2016版中默认激活,进一步优化tempdb的分配策略,对于依赖tempdb的复杂应用程序,性能将有所提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



在数据处理的过程中,我们习惯使用SELECT INTO #Table这样的语句,用临时表来存放中间数据。大量使用临时表,会造成资源争夺,降低性能,因为在SQL Server 2012及之前的版本,tempdb只有一个数据文件(tempdb.mdf)。对于SQL Server应用程序来说,恰当配置的tempdb对整个吞吐量其中很关键的作用。

SQL Server 2016的推出,为我们带来很多新的功能及增强,其中之一就是在安装过程中默认的tempdb配置。SQL Server 2016安装的过程中,向导不会默认创建一个数据文件,而是根据其探测到的逻辑处理器的个数来创建默认数量的tempdb数据文件,最多可达8个,这有利于减少PFSGAMSGAM页的争夺。如下图,测试电脑是4核处理器,因此,默认配置了4个数据文件:



SQLServer 2016之前,对于大量使用tempdb的应用程序,推荐打开追踪标记11171118。其中,追踪标记1118把表开头的8个页面在统一区里分配,可以降低SGAMShared Global Allocation Map)争夺;1117会确保同一个文件组内的多个文件在插入数据的时候会同时增长,而不是只增长第一个数据文件。对于SQL Server 2016tempdb11171118是默认激活的,从而避免了手动激活的需求。


下图显示了,对于tempdbis_mixed_page_allocation_on的值为0,其含义就是,数据库中表和索引总是在统一区里分配初始页,1则表示冲混合区里分配。


下图显示了,对于tempdbis_autogrow_all_files的值为1,这表示tempdb是唯一支持Autogrow_All_Files ON选项的系统数据库。


SQL Server 2016自带的tempdb增强,通过默认的多个tempdb数据文件,降低了tempdb争夺,它有利于减少PFSGAMSGAM页的争夺。追踪标记111711182016之前的版本里可用,但需要手动激活。我们过去开发了大量存储过程,其中又有很多用到了临时表,相信未来升级到SQL Server 2016之后,整体的性能会得到进一步的提升。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值