与mysql获取行级锁的区别

最近更新时间: 2025-02-18 16:02:00

  • 复制
    复制成功
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.36    |
+-----------+
1 row in set (0.00 sec)
#sessin1
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t_row_lock where mc='pgxz' for update;
+----+------+
| id | mc   |
+----+------+
|  2 | pgxz |
+----+------+
1 row in set (0.00 sec)
#session2
mysql> select * from t_row_lock where mc='TDSQL PG' for update;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
mysql> 
#这是因为mysql要使用行级锁需要有索引来配合使用,如下所示,使用id主键来获取行锁
#session1
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t_row_lock where id=1 for update;         
+----+-------+
| id | mc    |
+----+-------+
|  1 | TDSQL PG |
+----+-------+
1 row in set (0.00 sec)
#session2
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from t_row_lock where id=2 for update;
+----+------+
| id | mc   |
+----+------+
|  2 | pgxz |
+----+------+
1 row in set (0.00 sec)