首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server 2016仍在TempDB中使用TempDB

Server 2016仍在TempDB中使用TempDB
EN

Database Administration用户
提问于 2019-02-15 14:37:14
回答 1查看 431关注 0票数 4

今天,我使用扩展事件解决了Server 2016 TempDB上的一个问题,并将mixed_extent_allocation和transaction_log事件添加到跟踪中。

我希望mixed_extent_allocation不会出现在我的结果中,因为下面的查询返回0作为结果:

代码语言:javascript
复制
select is_mixed_page_allocation_on  
from sys.databases 
where database_id=2

但令我惊讶的是,这个事件出现了好几次。在此之前是一个transaction_log事件,其中SGAM作为上下文和操作LOP_SET_BITS。

这让我感到好奇,我查看了TempdB的第一个SGAM页面的内容:

代码语言:javascript
复制
DBCC TRACEON(3604)
dbcc page(tempdb,1,3,3)
DBCC TRACEOff(3604)

这是结果的一个片段:

代码语言:javascript
复制
╔═════════════════════════════════════════════╗
║ (1:0)        - (1:176)      = NOT ALLOCATED ║
║ (1:184)      -              =     ALLOCATED ║
║ (1:192)      -              = NOT ALLOCATED ║
║ (1:200)      - (1:208)      =     ALLOCATED ║
║ (1:216)      - (1:256)      = NOT ALLOCATED ║
║ (1:264)      -              =     ALLOCATED ║
║ (1:272)      -              = NOT ALLOCATED ║
║ (1:280)      -              =     ALLOCATED ║
║ (1:288)      - (1:296)      = NOT ALLOCATED ║
║ (1:304)      -              =     ALLOCATED ║
║ (1:312)      -              = NOT ALLOCATED ║
║ (1:320)      -              =     ALLOCATED ║
║ (1:328)      - (1:336)      = NOT ALLOCATED ║
║ (1:344)      -              =     ALLOCATED ║
║ (1:352)      - (1:65528)    = NOT ALLOCATED ║
╚═════════════════════════════════════════════╝

这使我得出结论,混合区域仍然被使用。我想到了服务器2016只使用统一的区段 (除了主、msdb和模型)。还是我的结论是错的?

为什么我还能看到mixed_extent_allocation事件的出现?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-02-15 16:09:04

这个职位称,IAM页面仍然是从混合区段分配的,即使在Server 2016中也是如此。这就是我在追踪中看到的mixed_extent_allocation。

Paul的博客帖子提供了更多的内部解释。感谢斯科特·霍金为我指出了这篇文章。

我对第一个SGAM页面中分配的de页面的内容做了更多的研究,发现Server也对系统表使用混合区段(object_id低于100)。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/229857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档