使用者工具

網站工具


database:mysql:transaction

這是本文件的舊版!


MySQL交易的隔離層級

MySQL提供四種隔離層級

  1. Read Uncommitted
  2. Read Committed
  3. Repeatable Read
  4. Serializable

MySQL隔離層級Demo

在做以下解說之前,先在MySQL的test資料庫建立一個名為QQ的資料表並插入一些資料。(目前在 MySQL 5.1.71 下作業)

mysql> create table QQ(id int ,data char(10));
mysql> insert into QQ(id,data)values(1,'AA'),(2,'BB'),(3,'CC'),(4,'DD'),(5,'EE'),(6,'FF'),(7,'GG'),(8,'HH'),(9,'II'),(10,'JJ');

Repeatable-Read

Time session1 session2
mysql>lock tables QQ read;
mysql>select * from QQ where id=1; (OK) mysql>select * from QQ where id=2; (OK)
mysql>delete from QQ where id=1; (ERROR 1099)
mysql>delete from QQ where id=2; (在read Queue中 等待)
mysql>unlock tables ;mysql>Query OK, 1 row affected (剛在等待的delete from QQ where id=2被執行);

參考資料

database/mysql/transaction.1410275598.txt.gz · 上一次變更: 2014/09/09 15:13 由 ali88