如果您要更改允许的锁类型:
我知道有两种情况下禁止某种锁类型可能是有益的。这并不意味着没有其他情况,希望其他人能举出例子。
经常访问但很少更改的查找表 - 通过禁用页面和行级锁,所有读取者将获取一个共享表锁。这比通常在表上获取意向共享锁,然后在页面上获取意向共享锁,最后在特定行或多行上获取共享锁更快/更便宜。
防止特定的死锁场景 - 如果遇到由并发进程引起的频繁位于同一页面上的锁导致的死锁,禁止行锁将导致获取页面锁。只有一个进程可以同时访问该页面,其他进程必须等待。
第一个例子是微观优化,对于一般系统来说,不太可能带来可衡量的好处。第二个例子将解决那个特定的死锁场景,但可能会引入意想不到的副作用,比如在代码的其他部分中破坏并发性能。很难完全评估其影响,请谨慎处理!默认情况下,两者都应启用,并且不应轻易更改,除非有充分的理由。