MySQL交易 未完成
MySQL交易的隔離層級
MySQL提供四種隔離層級
Read Uncommitted
Read Committed
Repeatable Read
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; | |
參考資料