我在下面这两个表上执行DELETE操作,然后执行INSERT操作,但偶尔会遇到死锁.
Schedule.Assignments (Parent table)个
[Schedule.Assignments(父表)]
Schedule.Schedules (Child table)个
[Schedule.Schedules(子表)]
在计划上间歇性地发生两种类型的死锁.计划表(子),尽管操作是在计划上执行的.分配表(父).两者具有相同的死锁图,如下所示.
-
Schedule.Assignments表上INSERT和DELETE语句之间的死锁.
-
Schedule.Assignments表上相同的Delete语句之间出现死锁.
[死锁图]
Deadlock Graph1 : https://pastebin.com/raw/ZpQUrjBV
Deadlock Graph2 : https://pastebin.com/raw/DhnuyZ7a
包含INSERT和DELETE语句的StoredProc:https://pastebin.com/raw/6DNh2RxH
查询执行计划:PasteThePlan
[Edit]个
Assignments Schema: Assignments Schema
作业(job)指数:Assignments Indexes
时间表方案:Schedules Schema
排行榜指数:Schedules Indexes
我不能理解的是,为什么死锁对象显示为子表,而死锁中涉及的进程显示父表上的插入/删除.
请分享你的 idea ,如何解决这些僵局?