关闭

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

标签: SQL Server 2016Multiple TempDB File
756人阅读 评论(0) 收藏 举报
分类:


在数据处理的过程中,我们习惯使用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之后,整体的性能会得到进一步的提升。




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:634064次
    • 积分:8338
    • 等级:
    • 排名:第2347名
    • 原创:177篇
    • 转载:23篇
    • 译文:49篇
    • 评论:77条
    最新评论