死锁的一种

关于oracle的update in(,)的时候的死锁问题mysql

同一个prepare语句,生成最终的sql以下sql

update table1 set name = #name# where id in (id1,id2,id3)

当两个如上的sql
sql1数据库

update table1 set name = #name# where id in (id1,id2,id3)

sql2oracle

update table1 set name = #name# where id in (id3,id2,id1)

当sql1和sql2同时执行的时候会产生死锁的问题code

解决方法很简单,in里面的数据排个序就能够了索引

另外一种死锁(mysql场景,别的数据库没有尝试过)

表结构ci

create table table1 (
id number,
a_id number,
c_id number);

索引table

index: cid,a_id
primary key : id

数据date

insert into talbe1(1, 1, 1);
insert into talbe1(2, 1, 1);
insert into talbe1(3, 2, 1);
insert into talbe1(4, 2, 1);

死锁语句
sql1方法

delte from table1 where id = id1;

sql2

delte from table1 where a_id = a_id1;

同时执行sql1和sql2会发生死锁

相关文章
相关标签/搜索