防止mysql 死锁的方法

genius_tong 2013-03-04 04:18:22
各位大侠,遇到一个面试题,求助~

假设有一个perl程序会去update一个表的两列。
A进程执行了这个程序,过程如下:update x -> update y -> commit
B进程执行了这个程序,过程如下:update y -> update x -> commit
于是便有可能发生死锁

问题是要给出三种以上防止的方法。

我只知道,在得到行x和y的时候使用select for update,请问还有什么其他的方法?

谢啦!
...全文
166 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2013-03-04
  • 打赏
  • 举报
回复
数据库会自动牺牲掉其中一个,话句话说你上面的两句肯定有语句会报错
wwwwb 2013-03-04
  • 打赏
  • 举报
回复
LOCK TABLES trans READ, customer WRITE; .... UNLOCK TABLES; START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summary=@A WHERE type=1; COMMIT; declare exit handler for sqlexception rollback; declare exit handler for sqlwarning rollback; START TRANSACTION; insert into table1(a,b,c,d) values(var1,var2,var3,var4); insert into table2(e,f,g) values(var5,var6,string1); COMMIT;

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧