Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server livelock到底是什么?在SQL中,何时/如何发生?T-SQL开发人员可以做些什么来避免它?_Sql Server_Tsql_Livelock - Fatal编程技术网

Sql server livelock到底是什么?在SQL中,何时/如何发生?T-SQL开发人员可以做些什么来避免它?

Sql server livelock到底是什么?在SQL中,何时/如何发生?T-SQL开发人员可以做些什么来避免它?,sql-server,tsql,livelock,Sql Server,Tsql,Livelock,我遇到过SQL Server的这种行话,我只是无法理解SQL Server中到底发生了什么。我正在看一个SQL Server示例,它发生在哪里 我一直在谷歌上搜索,但一直得到的都是走廊里的两个人。当两个进程争夺相同的资源时,就会出现死锁,但顺序会导致僵局。例如,A锁定X,然后尝试锁定Y,而B锁定Y并尝试锁定X。关键是这两个(或更多)进程正在阻止对方做任何事情 当有重叠的共享锁阻止另一个进程获取它所需的独占锁时,就会发生活锁。不同之处在于,所有这些重叠的过程都在继续完成工作,因此它们仍然是“活的”

我遇到过SQL Server的这种行话,我只是无法理解SQL Server中到底发生了什么。我正在看一个SQL Server示例,它发生在哪里


我一直在谷歌上搜索,但一直得到的都是走廊里的两个人。

当两个进程争夺相同的资源时,就会出现死锁,但顺序会导致僵局。例如,A锁定X,然后尝试锁定Y,而B锁定Y并尝试锁定X。关键是这两个(或更多)进程正在阻止对方做任何事情

当有重叠的共享锁阻止另一个进程获取它所需的独占锁时,就会发生活锁。不同之处在于,所有这些重叠的过程都在继续完成工作,因此它们仍然是“活的”——只有受害者在完成工作之前才会被阻止。它可能永远不会在一个足够繁忙、设计糟糕的系统上运行。:-)您可以通过提升编写器的死锁优先级来克服这种情况,但老实说,这不是我经常看到的情况,我从6.5开始就使用SQL Server