MYSQL死锁案例_MySQL

WBOY
풀어 주다: 2016-06-01 13:30:58
원래의
851명이 탐색했습니다.

bitsCN.com

MYSQL死锁案例

 

01下列的例子演示当锁定请求可能会导致死锁之时一个错误会如何发生。例子中包括两个客户端A和B。0203首先客户端A创建一个包含一个行的表,然后开始一个事务。在这个事务内,A通过在共享模式选择行获得对行的S 锁定:0405mysql> CREATE TABLE t (i INT) ENGINE = InnoDB;0607Query OK, 0 rows affected (1.07 sec)0809  1011mysql> INSERT INTO t (i) VALUES(1);1213Query OK, 1 row affected (0.09 sec)1415  1617mysql> START TRANSACTION;1819Query OK, 0 rows affected (0.00 sec)2021  2223mysql> SELECT * FROM t WHERE i = 1 LOCK IN SHARE MODE;2425+------+2627| i    |2829+------+3031|    1 |3233+------+34351 row in set (0.10 sec)3637接着,客户端B开始一个事务并尝试从该表删除行:3839mysql> START TRANSACTION;4041Query OK, 0 rows affected (0.00 sec)4243  4445mysql> DELETE FROM t WHERE i = 1;4647删除操作要求一个X 锁定。因为这个锁定不兼容客户端A持有的S锁定,所以X 锁定不被允许,所以请求进入对行及客户端阻挡的锁定请求队列。4849最后,客户端A也试图从表中删除该行:5051mysql> DELETE FROM t WHERE i = 1;5253ERROR 1213 (40001): Deadlock found when trying to get lock;5455try restarting transaction
로그인 후 복사

 


bitsCN.com
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿