无论是在我的会话中还是在我写的博客中,Tempdb 始终是我的话题。然而,当谈到 SQL Server 2022 中引入的重大性能变化时,我从未如此兴奋过。他们解决了我们最大的性能瓶颈之一,即系统页面闩锁并发。
在 SQL Server 2019 中,他们通过引入内存优化的 tempdb 解决了所谓的元数据争用问题,即在更新跟踪表元数据的表时,属于系统对象的页面会占用页面闩锁。此外,产品团队还对对象分配争用进行了改进。这是对用于管理数据文件中空间分配的元数据页面的争用,这些页面称为页面可用空间 (PFS) 页面。创建或销毁临时表并在表中释放它们,例如sys.objvalues 。最后,对临时表缓存进行了更多改进,使我们能够更好地重用未更改的临时表。所有这些更改都提高了 tempdb 的性能,但仍然给我们留下了最大的瓶颈。这就是创建闩锁的方式——系统页面上的闩锁。
2022 年 SQL Server 的改进解决了这个问题,并改变了全局分配图 (GAM) 和(共享全局分配图)SGAM 页面闩锁的执行方式。他们不再通过更新闩锁来更新这些闩锁,而是使用共享闩锁来消除几乎所有的争用,如Microsoft发布的展示此更改效果的图像所示。
使用 SQL 2019 升级之前
使用 SQL 2022 升级后
您可以清楚地看到其巨大的影响。更棒的是,这些新的增强功能将使我们所有人受益,尤其是那些默认情况下 tempdb 工作负载繁重的人。如果您只是升级到SQL Server 2022,您可以立即利用这些增强功能,而无需您做任何额外的工作或开销。结果至少可以说是惊人的。