最近,当我试图查找有关latch_ex 等待类型的信息时,我遇到了一个博客,如下所述,其中介绍了latch 和lock。
阅读此博客后,我只是对一件事感到好奇。当应用程序提交请求时,SQL Server 将首先在缓冲区缓存中查找信息,如果页面不在缓冲区缓存中,则仅从磁盘读取并将其放入缓冲区缓存中,然后再将信息发送给应用程序。我的问题基于上面的屏幕截图,其中指出闩锁和锁定需要避免两个线程更新同一页面。基本上所有来到SQL server的请求都会先进入buffer cache,如果buffer cache中的页面忙于更新,另一个线程将不得不等待。它不会回到磁盘,因为页面已经在内存中。那么锁定的目的是什么,因为每个请求都将通过内存完成并且有闩锁来保护页面