Home >> FAQs/Tutorials >> MySQL Tutorials

MySQL Tutorial - Experiment with Dead Locks

By: FYIcenter.com

(Continued from previous topic...)

How To Experiment Dead Locks?

If you want to have some experience with dead locks, you can create two windows running two mysql transactions in two sessions at the REPEATABLE READ transaction isolation level. Then run some UPDATE statements as shown in the tutorial exercise below:

(session 1)

mysql> SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Query OK, 0 rows affected (0.00 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE fyi_links SET notes='Lock1' where id=101;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

(Exclusive lock (X) placed on row id=101)

Switch to session 2:

(session 2)

mysql> SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Query OK, 0 rows affected (0.00 sec)

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE fyi_links SET notes='Lock2' where id=110;
Query OK, 1 row affected (0.10 sec)
Rows matched: 1  Changed: 1  Warnings: 0

(Exclusive lock (X) placed on row id=110)

mysql> UPDATE fyi_links SET notes='Good1' where id=101;

(Blocked to wait for exclusive lock (X) on row id=101)

Switch to session 1:

(session 1)

mysql> UPDATE fyi_links SET notes='Good2' where id=110;

(Tried to wait for exclusive lock (X) row id=110)

ERROR 1213 (40001): Deadlock found when trying to get lock; 
   try restarting transaction

(Transaction terminated with a rollback)

Switch to session 2:

(session 2)

(Exclusive lock (X) on row id=101 released)
(Block is removed on this transaction is removed)

Query OK, 1 row affected (10.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

(Continued on next topic...)

  1. What Is a Transaction?
  2. How To Start a New Transaction?
  3. How To End the Current Transaction?
  4. How To Create a Table for Transaction Testing?
  5. How To Switch between Autocommit-On and Autocommit-Off Modes?
  6. How To Find Out the Current Transaction Mode?
  7. How To Start a New Transaction Explicitly?
  8. How To Commit the Current Transaction?
  9. How To Rollback the Current Transaction?
  10. What Happens to the Current Transaction If a START TRANSACTION Is Executed?
  11. What Happens to the Current Transaction If a DDL Statement Is Executed?
  12. What Happens to the Current Transaction If the Session Is Ended?
  13. What Happens to the Current Transaction If the Session Is Killed?
  14. How Does MySQL Handle Read Consistency?
  15. What Are Transaction Isolation Levels?
  16. How To View and Change the Current Transaction Isolation Level?
  17. What Is a Data Lock?
  18. How To Experiment Data Locks?
  19. How Long a Transaction Will Wait for a Data Lock?
  20. What Happens to Your Transactions When ERROR 1205 Occurred?
  21. What Is a Dead Lock?
  22. How To Experiment Dead Locks?
  23. What Happens to Your Transactions When ERROR 1213 Occurred?
  24. What Are Impacts on Applications from Locks, Timeouts, and DeadLocks?

MySQL Tutorials:

More...


Other Tutorials/FAQs:

More...


Related Resources:

More...


Selected Jobs:

More...