Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách gây ra bế tắc trên MySQL

Có rất nhiều bài đăng cho điều này bằng cách sử dụng hai phiên.

https://dba.stackexchange.com/questions/309/code -to-simulate-deadlock

http://www.xaprb.com/blog/2006/08/08/how-to-deliberily-cause-a-deadlock-in-mysql/

Phương pháp được sao chép từ bài viết thứ hai ở trên

Đầu tiên, hãy chọn một tên bảng không sử dụng. Tôi sẽ sử dụng test.innodb_deadlock_maker. Dưới đây là các câu lệnh bạn cần thực hiện:

create table test.innodb_deadlock_maker(a int primary key) engine=innodb;
insert into test.innodb_deadlock_maker(a) values(0), (1);

Bây giờ bảng và dữ liệu của nó đã được thiết lập. Tiếp theo, thực hiện các thao tác sau trên hai kết nối khác nhau:

- kết nối 0

set transaction isolation level serializable;
start transaction;
select * from test.innodb_deadlock_maker where a = 0;
update test.innodb_deadlock_maker set a = 0 where a <> 0;

- kết nối 1

set transaction isolation level serializable;
start transaction;
select * from test.innodb_deadlock_maker where a = 1;
update test.innodb_deadlock_maker set a = 1 where a <> 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP / MySQL:Kết hợp các truy vấn CẬP NHẬT?

  2. Một cách tốt hơn để thực thi nhiều lệnh MySQL bằng cách sử dụng tập lệnh shell

  3. Kết nối ứng dụng python với cơ sở dữ liệu bằng centos 7

  4. Visual Studio 2017 không hiển thị MySQL trong danh sách kết nối

  5. MYSQL - cách cập nhật một trường cho tất cả các mục do nhóm theo câu lệnh select