mysql - 通过服务的多个实例更新多个查询导致mysql中的死锁
问题描述
我有一个运行更新多查询的服务update hits set hits = hits + 1 where id = x
。我发现运行此服务的多个实例会引发错误Error 1213: Deadlock found when trying to get lock; try restarting transaction
。
我不知道为什么会发生这种情况或如何调试它。一次只更新一行,不会导致死锁。多查询是否一次获得所有列的锁定?下面的查询会为所有 x、y、z 行获取锁吗?
update hits set hits = hits + 1 where id = x; update hits set hits = hits + 1 where id = y; update hits set hits = hits + 1 where id = z;
解决方案
推荐阅读
- java - Spock -Unit Test:如何为采用 Mono 的 @around 注释编写 spock 单元测试
- javascript - Firebase Cloud Functions 不会在子集合中创建文档
- wpf - How to have alternative background color of the selected rows on WPF DataGrid via MultiDataTrigger
- url - 管理站点的“在站点上查看”URL 不正确
- c# - 为什么当涉及到比率问题1方法c#时什么都没有发生
- three.js - 为什么 pixi.js webgl 与 three.js 不同?
- javascript - Highmaps:如何强调地图线
- javascript - 在组件中多次模拟 useSelector 的正确方法是什么?
- c++ - 在 C++ 中将自定义字符串分配给字符串属性
- firebase - 在flutter中按firebase条件过滤列表