欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql nowait

傅智翔2年前15瀏覽0評論

MySQL中的NOWAIT是一種操作選項(xiàng),當(dāng)多個事務(wù)同時對同一行或同一塊數(shù)據(jù)進(jìn)行操作時,NOWAIT選項(xiàng)可以讓當(dāng)前事務(wù)不必等待其他事務(wù)完成,直接進(jìn)行自己的操作。

例如:

START TRANSACTION;
SELECT * FROM table WHERE id = 1 FOR UPDATE NOWAIT;
-- 如果另一個事務(wù)正在操作id=1的數(shù)據(jù),此處會立即返回錯誤
-- 如果沒有其他事務(wù),當(dāng)前事務(wù)可以成功獲取id=1的行鎖
UPDATE table SET value = 2 WHERE id = 1;
COMMIT;

使用NOWAIT選項(xiàng)的事務(wù)需要在獲取鎖或訪問數(shù)據(jù)時立即失敗,而不是等待其他事務(wù)完成。

SET SESSION innodb_lock_wait_timeout = 1;
START TRANSACTION;
SELECT * FROM table1 WHERE id = 1 FOR UPDATE NOWAIT;
-- 如果另一個事務(wù)正在操作id=1的行,此處會立即返回錯誤
-- 如果沒有其他事務(wù),當(dāng)前事務(wù)可以成功獲取id=1的行鎖
UPDATE table1 SET value = 2 WHERE id = 1;
-- 假設(shè)另一個事務(wù)正在操作id=2的行,并占用行鎖,接下來我們嘗試更改它
SELECT * FROM table1 WHERE id = 2 FOR UPDATE NOWAIT;
-- 即使另一個事務(wù)仍在操作id=2,這里也會返回錯誤,因?yàn)槲覀兪褂昧薔OWAIT選項(xiàng)

NOWAIT選項(xiàng)僅在InnoDB存儲引擎中可用。