使用者工具

網站工具


database:mysql:transaction

MySQL交易 未完成

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))engine=innodb;
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>show variables like '%iso%'; mysql>show variables like '%iso%';
mysql>select * from QQ; mysql>select * from QQ;
mysql>start transaction; mysql>start transaction;
mysql>update QQ set data='GGGG' where id=7;
mysql>select * from QQ;
mysql>commit;
mysql>select * from QQ;
mysql>commit;
mysql>select * from QQ;

Read-Committed

Time session1 session2
mysql>set tx_isolation='read-committed';
mysql>show variables like '%iso%'; mysql>show variables like '%iso%';
mysql>select * from QQ; mysql>select * from QQ;
mysql>start transaction; mysql>start transaction;
mysql>update QQ set data='IIIII' where id=9;
mysql>select * from QQ; mysql>select * from QQ;
mysql>commit;
mysql>select * from QQ;

參考資料

database/mysql/transaction.txt · 上一次變更: 2014/09/09 16:53 由 ali88