======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; | |
======參考資料======
* [[http://xyz.cinc.biz/2013/05/mysql-transaction.html|MySQL 交易功能 Transaction 整理 ]]