隔离级别与锁定之间的关系

时间:2014-11-23 09:28:58

标签: sql-server transactions

我试图了解隔离级别(http://msdn.microsoft.com/en-GB/library/ms173763.aspx)和锁定(http://technet.microsoft.com/en-us/library/ms175519%28v=sql.105%29.aspx)之间的关系。我在这里读了一个类似的问题,回答者说

"锁定是实施细节。如果您的事务包含SELECT:

SELECT * FROM SomeTable

您只需担心从SomeTable"

中看到的数据

但是,如果我们不必担心它们,那么为什么我们有:表提示(http://msdn.microsoft.com/en-us/library/ms187373.aspx)。我们是否必须考虑锁?

1 个答案:

答案 0 :(得分:1)

嗯,锁部分是一个实现细节。它们(在SQL Server中)用于为您提供隔离级别根据标准提供的保证。例如,SERIALIZABLE为您提供了对数据库的单线程访问。这是通过S锁定您已读取的所有数据来完成的,以便冻结它。

锁定不仅仅是一个细节,因为锁定方案的细节漏掉了。它们是可检测的。此外,您可以使用提示来控制锁,以创建标准中未指定的行为。通常,人们会这样做以获得比以前更强的保证。

相关问题