mysql nowait
导读:MySQL中的NOWAIT是一种操作选项,当多个事务同时对同一行或同一块数据进行操作时,NOWAIT选项可以让当前事务不必等待其他事务完成,直接进行自己的操作。例如:START TRANSACTION;SELECT * FROM table...
MySQL中的NOWAIT是一种操作选项,当多个事务同时对同一行或同一块数据进行操作时,NOWAIT选项可以让当前事务不必等待其他事务完成,直接进行自己的操作。
例如:
START TRANSACTION;
SELECT * FROM table WHERE id = 1 FOR UPDATE NOWAIT;
-- 如果另一个事务正在操作id=1的数据,此处会立即返回错误-- 如果没有其他事务,当前事务可以成功获取id=1的行锁UPDATE table SET value = 2 WHERE id = 1;
COMMIT;
使用NOWAIT选项的事务需要在获取锁或访问数据时立即失败,而不是等待其他事务完成。
SET SESSION innodb_lock_wait_timeout = 1;
START TRANSACTION;
SELECT * FROM table1 WHERE id = 1 FOR UPDATE NOWAIT;
-- 如果另一个事务正在操作id=1的行,此处会立即返回错误-- 如果没有其他事务,当前事务可以成功获取id=1的行锁UPDATE table1 SET value = 2 WHERE id = 1;
-- 假设另一个事务正在操作id=2的行,并占用行锁,接下来我们尝试更改它SELECT * FROM table1 WHERE id = 2 FOR UPDATE NOWAIT;
-- 即使另一个事务仍在操作id=2,这里也会返回错误,因为我们使用了NOWAIT选项NOWAIT选项仅在InnoDB存储引擎中可用。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: mysql nowait
本文地址: https://pptw.com/jishu/53377.html
