目前我用的MySQL NDB Cluster,MySQL NDB Cluster只支持Read Commited隔离等级,我现在两台服务器都需要对同一个表的同一行执行check then update操作,示例如下:
Server1:
select * from user where id =1;
update user set age=10 where id=1;Server2:
select * from user where id=1;
update user set age=11 where id=1;目前出现了interleave,就是操作序列如下:
Server1: select * from user where id =1;
Server2: select * from user where id =1;
Server1: update user set age=10 where id=1;
Server2: update user set age=11 where id=1;请问有没有办法解决这个问题,从application还是从数据库解决?A
Server1:
select * from user where id =1;
update user set age=10 where id=1;Server2:
select * from user where id=1;
update user set age=11 where id=1;目前出现了interleave,就是操作序列如下:
Server1: select * from user where id =1;
Server2: select * from user where id =1;
Server1: update user set age=10 where id=1;
Server2: update user set age=11 where id=1;请问有没有办法解决这个问题,从application还是从数据库解决?A
start transaction;
select * from user where id =1;
update user set age=10 where id=1;
commit;Server2:
start transaction;
select * from user where id=1;
update user set age=11 where id=1;
commit;
server1:
start transaction
select * from user where id=1;
update user set age=10 where id=1;
commit;
server2
start transaction
select * from user where id=1;
update user set age=11 where id=1;
commit;