并发-请教一个mysql批量更新时的deadlock问题?

问题描述

请教一个mysql批量更新时的deadlock问题?

数据是mysql 5.6 表引擎是innoDB,DAO是mybatis3

有个表,比如是订单-物品表,里面保存每个订单的所有物品清单
字段有:record_id(记录id,自增长),order_id(订单id),good_id(物品id)等其他字段..

有个数据同步的业务场景
需要在一个事务里
先根据order_id做删除操作,delete from xxx where order_id=xx
然后再批量增加订单-物品清单insert into xxx () values(),(),()
结果发现,经常在insert into 这发生deadlock。

同时,我这个事物所在的业务方法,是多线程并发进行的。就是有并发的线程,来更新不同的订单(的物品清单)

不知道如何解决。。。。

解决方案

MySql的死锁问题可以参照:http://blog.csdn.net/aesop_wubo/article/details/8286215

时间: 2025-01-02 17:45:55

并发-请教一个mysql批量更新时的deadlock问题?的相关文章

mysql批量更新多条记录的同一个字段为不同值的方法_Mysql

首先mysql更新数据的某个字段,一般这样写: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 也可以这样用in指定要更新的记录: UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values'); 这里注意 'other_values' 是一个逗号(,)分隔的字符串,如:1,2,3 如果更新多条数据而且每条记录要更新

mysql 批量更新与批量更新多条记录的不同值实现方法_Mysql

批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 复制代码 代码如下: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 如果更新同一字段为同一个值,mysql也很简单,修改下where即可: 复制代码 代码如下:  UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values');  这里注意

mysql 批量更新与批量更新多条记录的不同值

批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写:  代码如下 复制代码 UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 如果更新同一字段为同一个值,mysql也很简单,修改下where即可:  代码如下 复制代码  UPDATE mytable SET myfield = 'value' WHERE other_field in ('other_values'); 这里注意 '

mysql语法错误-请教一个mysql创建查询表问题

问题描述 请教一个mysql创建查询表问题 create table student(stuId int(10) not null auto_increment primary key comment '主键',stuNum varchar(50) default null comment '学号',stuName varchar(50) default null comment '名字',stuPwd varchar(25) default null comment '密码',stuSex v

mysql批量更新存储过程怎么写

问题描述 我要写个存储过程,传入记录数N.然后查找出按积分排序的前N条记录,然后循环设置记录的排名=i.请问能给个demo么. 解决方案 create procedure batchUpdate(in n int)begindeclare inParam int default n;declare i int default 1;declare id int;declare username varchar(255);declare integral varchar(255);declare r

请教一个关于xpage更新的问题

问题描述 我把xpage的内容作了修改,但前台显示出来的内容还是未更新之前的,感觉页面没有更新.服务器都重启了也没起作用.菜鸟的问题,请多关照 解决方案 解决方案二:有两种可能1.页面上错误.2.没有勾上自动构建.

Mysql批量插入和更新的性能

问题描述 利用Hibernate,连接池使用的是BoneCP,做了一个MySql批量插入和批量更新的Demo,出现了下面两个问题. 1.批量插入.我采用的是原生态的JDBC,每次批量插入60条数据左右(数据量不固定),循环3000次.每次在循环到100次左右的时候,会出现"com.jolbox.bonecp.ConnectionPartition - BoneCP detected an unclosed connection and will now attempt to close it f

mysql批量提交的优化

.背景 用户修改布局时,需要批量更新mysql的xxxx_layout_xxxx表.批量操作的数据量是2-30条/次.批量操作是这次项目在技术上比较关键的一个点,之前批量操作做过性能上的测试,mysql端问题不大,7000+tps,Java端的效率有些差,有优化空间. 对批量的性能进行了测试,优化.过程如下. 经测试,批量更新30条记录的时间是35ms.由于数据在mysql服务端中会有内存缓存,批量更新30条的时间用了35ms,感觉有些长,试图找出原因. 使用截包工具(这里用的ethereal)

使用 DataAdapter 执行批量更新

执行    摘自MSDN: 在以前版本的 ADO.NET 中,使用 DataSet 中的更改来更新数据库时,DataAdapter 的 Update 方法每次更新数据库的一行.因为该方法循环访问指定 DataTable 中的行,所以,会检查每个 DataRow,确定是否已修改.如果该行已修改,将根据该行的 RowState 属性值调用相应的 UpdateCommand.InsertCommand 或 DeleteCommand.每一次行更新都涉及网络与数据库之间的双向数据传输. 在 ADO.NE