RDS Deadlock

有Transaction就有可能会发生Deadlock. 在RDS上发生的时候就可从LOG里看出发生的来源与时间.

  1. 假设有两个Transaction都对同一个做更新. 但是更新的顺序有交叉.
    https://ithelp.ithome.com.tw/upload/images/20211004/200919425VvgdYwU73.png

  2. 一个Transaction先更新ID=2的内容, 再更新ID=1的内容.
    https://ithelp.ithome.com.tw/upload/images/20211004/20091942xyKUYuC1PP.png

  3. 另一个Transaction则是先更新ID=1的内容, 再更新ID=2的内容. 同时执行这两个Transactions就会发生死结.
    https://ithelp.ithome.com.tw/upload/images/20211004/20091942LVcFOpSQMa.png

  4. 一旦发生在地端的SQL, 可从[Management] -> [SQL Server Logs]来查看原因. 但是在AWS上由於没有权限, 因此无法从这里的LOG查看.
    https://ithelp.ithome.com.tw/upload/images/20211004/20091942LwwmfXhXpa.png

  5. 这要回到AWS的面板上, [Databases] -> [Logs & events] -> [Download] 选取并下载Logs.
    https://ithelp.ithome.com.tw/upload/images/20211004/20091942jsQlhy1EY8.png

  6. 再使用SSMS打开LOG, 就可以看到Deadlock发生的细节.
    https://ithelp.ithome.com.tw/upload/images/20211004/20091942b0CPogtr40.png

  7. 在Transaction内, 将更新内容的顺序改为一致, 就可避免发生Deadlock.
    https://ithelp.ithome.com.tw/upload/images/20211004/20091942LOCEx54Y0Q.png


<<:  中阶魔法 - 范围链 Scope Chain

>>:  [Day 29] 建立对外沟通的 API Server,谈谈 Ktor 框架

[Day 21] 阿嬷都看得懂的满版横幅怎麽写与 normalize.css

阿嬷都看得懂的满版横幅怎麽写与 normalize.css 昨天我们拿出了古早时代的贴纸簿,并且介绍...

从 IT 技术面细说 Search Console 的 27 组数字 KPI (3) 点击 (2) 网页搜寻

上一篇提到可以从 Search Console 看到 6 种不同的流量来源,而 SC 提供的概要是用...

二、教你怎麽看source code,找到核心程序码 ep.23:Deeplab的model 部署

文章说明 文章分段 文章说明 deeplab的简单介绍、於我的意义 ep.1 tensorflow的...

Day 04-Terraform 也有 Backend?啥是 Terraform Backend 能吃吗?

Terraform 也有 Backend 之啥是 Terraform Backend 能吃吗? 课程...

day 14 - drone 的go-test & golangci-lint

自己的产出自己负责!每次交付专案之前我都会想到这句话, 是不是该再检查一下 程序码已经成功的buil...