首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Synapse如何检测死锁

Synapse如何检测死锁
EN

Database Administration用户
提问于 2021-10-10 12:49:13
回答 1查看 987关注 0票数 3

我想在Azure Synapse中制造一个僵局。如果文献资料说它“适用于”Synapse,我希望它能像prem那样工作。我已经等了很长时间(超过4个小时),但是死锁检测并没有杀死我的任何一个会话。

使用连接到Synapse专用池的SSMS (规模为DW100c ),我创建和填充两个表。

代码语言:javascript
复制
create table t1(c int);
create table t2(c int);

insert t1(c) select 99;
insert t2(c) select 99;

在两个独立的SSMS会话中,我执行以下语句

代码语言:javascript
复制
Session 1                   Session 2
------------------------    ------------------------
begin transaction           begin transaction

    update t1 set c = 0;

                                update t2 set c = 0;

    update t2 set c = 0;

                                update t1 set c = 7;

在我的膝上型计算机上针对Server 2019实例运行此操作会在几秒钟后生成预期的1205错误消息。但是,对Synapse运行它,并且两个会话都被锁定了几个小时。我可以像预期的那样看到sys.dm_pdw_锁定_等待中的会话。网络搜索不会产生任何特定的Synapse。医生们也没有说出我所能看到的任何特点。

这四个更新是测试期间在此实例上的唯一活动。没有其他并发负载。无论表的分布被定义为散列(C)还是循环ROBIN,我都看到了同样的行为。

Synapse如何检测和处理死锁?

EN

回答 1

Database Administration用户

发布于 2021-10-10 13:20:12

基于文档,Server不允许等待锁被较新的锁请求阻塞的语句。Server (synampse毕竟)还没有完全实现这个过程。在Server中,对新共享锁的连续请求有时会阻止先前(但仍在等待)对独占锁的请求。例如,UPDATE语句(需要独占锁)可以被为一系列SELECT语句授予的共享锁阻止。若要解决阻塞的进程(通过检查sys.dm_pdw_waits DVM来标识),请停止提交新请求,直到独占锁得到满足为止。

https://learn.microsoft.com/en-us/sql/analytics-platform-system/locking-behavior?view=aps-pdw-2016-au7#Remarks

因此,您似乎不需要做两个更新。

票数 -1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/300929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档