了解 SQL Server 锁定和并发性的资源?

Eri*_*ikE 9 sql-server concurrency locking

正如最近一个关于矿井锁定和并发性的问题所证明的那样,很难。

您能否为中级到高级 SQL 专业人员推荐任何好的资源,以对这些资源进行彻底的研究,如果正确学习,可以更好地导航该领域的所有固有缺陷?

我正在考虑各种资源——教程、博客、手册页、PASS 会话或任何东西。

Gra*_*hey 8

关于该主题的最佳书籍和最完整的资源是 Kalen Delaney 的 SQL Server 2008 Internals。你真的不能做得更好。关于这个主题的另一本好书是 Chris Bolton 的 SQL Server 2008 Internals and Troubleshooting。我认为它不像 Kalen 的书那么完整,但它确实涵盖了很多东西,尤其是在锁定和并发方面。


Rem*_*anu 7

虽然特定产品的书籍在解释如何使用产品方面做得很好(Kalen Delaney 的系列很棒!),但它们并没有真正对抗数据库系统的“黑皮书”和“红皮书”。如果您想了解这些概念,特别是黑皮书(第一个链接)几乎是必读的。这本红皮书是研究论文的集合,很多都可以在网上找到。我保留了一个页面,其中包含指向其中一些链接页面。链接的第三本书基本上是对“黑皮书”的最新重写(也更便宜,可在 Kindle 上找到...)

还有几个不错的博客,我首先推荐SQL Server CSS 博客


Mar*_*ith 5

锁定和并发是我通过测试和观察学到的最多的一个话题。

首先阅读数据库引擎中的隔离级别并发效果,以便您了解两者之间的关系。现在你可以实验:

  • 为测试事务构建 SQL。一些简单且独立的内容,包含您理解的上下文/域,例如购物车结账或银行转账。确保您有一种方法来验证测试后数据是否处于预期状态。
  • 运行您的场景,观察数据库引擎应用的锁的类型、持续时间和顺序。
  • 更改隔离级别或应用提示并观察对所采取的锁的更改。
  • 当您认为您有一个可以并发生存的事务时,请对其进行负载测试。

我倾向于使用跟踪标志 1200Profiler trace来检查锁定序列。我相信也可以使用扩展事件,但我还没有尝试过。