博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
tempdb页面分配争用问题
阅读量:5093 次
发布时间:2019-06-13

本文共 748 字,大约阅读时间需要 2 分钟。

tempdb页面分配争用

当用户向tempdb中申请空间时,此时一个数据文件会有特定的3个页,PFS页面(2:1:1),GAM页面(2:1:2),SGAM(2:1:3)

PFS(页面空闲空间表)
PFS页面为每个页面存储1字节的信息表示这个页面的空闲空间大小及其作用
8k=8192字节,相当于可以存储8192个页面,也就是一个PFS页面可以存储64M的页面信息。所以没接近一个64MB的位置就可以看到一个PFS页面
GAM(全局分配映射表)
GAM页面为每个盘区存储1比特的信息,表示哪些盘区正在使用以及哪些为空。在数据库文件中大约隔4GB就能发现一个GAM页面
SGAM(共享全局分配映射表)
SGAM页面为每个盘区存储1比特的信息,表示是否带有空闲空间的混合区还是混合区。在数据库文件中大约隔4GB就能发现一个GAM页面

页面分配争用

假设创建一个临时表,为了确定在tempdb中的什么位置创建这个表,sqlserver会读取SGAM页面找到合适的区分配给这个表,在更新SGAM页面的时候,sqlserver会对SGAM页面加排他闩锁
然后继续读取PFS页面,找到盘区的空闲页分配给临时表,然后更新PFS页面,也会对PFS页面使用排他闩锁,保证其他人不会分配同一个数据页,更新完释放闩锁
当很多申请的时候,会造成页面分配争用。

解决的办法就是添加多个tempdb数据文件,最多不超过8个数据文件。
注意:多个数据文件的大小一定要一样,并不要求在多个磁盘,不是为了提高I/O,只是为了增加分配页的数量

posted on
2018-12-29 17:39 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/andone/p/10197266.html

你可能感兴趣的文章
EOS生产区块:解析插件producer_plugin
查看>>
排球积分程序(三)——模型类的设计
查看>>
HDU 4635 Strongly connected
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>
strlen函数
查看>>
关于TFS2010使用常见问题
查看>>
URL编码与解码
查看>>
Eclipse 安装SVN插件
查看>>
阿里云服务器CentOS6.9安装Mysql
查看>>
剑指offer系列6:数值的整数次方
查看>>
js 过滤敏感词
查看>>
poj2752 Seek the Name, Seek the Fame
查看>>
软件开发和软件测试,我该如何选择?(蜗牛学院)
查看>>
基本封装方法
查看>>
生活大爆炸之何为光速
查看>>
[Typescript] Specify Exact Values with TypeScript’s Literal Types
查看>>