首页数据库mysql nowait

mysql nowait

时间2023-05-30 04:03:02发布访客分类数据库浏览827
导读: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
电脑专网ip怎样连接 IO有什么卵用

游客 回复需填写必要信息