mysql 8.0 新特性:NOWAIT以及SKIP LOCKED

如新语法的字面含义,NOWAIT表示当无法获取到锁时直接返回错误,而不是等待;SKIP LOCKED表示忽略那些已经被其他session占有行锁的记录。下面看测试:

测试 一

session 1 :

mysql> select * from t;
+----+
| a  |
+----+
| 42 |
| 43 |
| 44 |
| 46 |
+----+
4 rows in set (0.00 sec)

mysql> delete from t where a=42;
Query OK, 1 row affected (0.01 sec)

session 2 :会话2 由于获取不到锁而直接报错

mysql> select * from t for update nowait;
ERROR 3572 (HY000): Statement aborted because lock(s) could not be acquired immediately and NOWAIT is set.

测试 二

session 1 :

mysql> select * from t;
+----+
| a  |
+----+
| 42 |
| 43 |
| 44 |
| 46 |
+----+
4 rows in set (0.00 sec)

mysql> delete from t where a=42;
Query OK, 1 row affected (0.01 sec)

session 2 :

mysql> select * from t for update skip locked;
+----+
| a  |
+----+
| 43 |
| 44 |
| 46 |
+----+
3 rows in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/huangliang0703/article/details/81170997
今日推荐