[窗口A]:
mysql> set GLOBAL tx_isolation='READ-UNCOMMITTED';
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
[root@vagrant-centos65 ~]# mysql -uroot -pxxxx(重新登录)
mysql> SELECT @@tx_isolation;
+------------------+
| @@tx_isolation |
+------------------+
| READ-UNCOMMITTED |
+------------------+
1 row in set (0.00 sec)
mysql> use test;
Database changed
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from user;
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
+----+------+
2 rows in set (0.00 sec)
[窗口B]:
mysql> select @@tx_isolation;
+------------------+
| @@tx_isolation |
+------------------+
| READ-UNCOMMITTED |
+------------------+
1 row in set (0.00 sec)
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test.user values (3, 'c');
Query OK, 1 row affected (0.00 sec)
mysql> select * from user;
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
+----+------+
3 rows in set (0.00 sec)
//目前为止,窗口B并未commit;
[窗口A]:
mysql> select * from user ;
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
| 3 | c |
+----+------+
3 rows in set (0.00 sec)Read Committed(读取提交内容)[窗口A]:
mysql> SET GLOBAL tx_isolation='READ-COMMITTED';
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
[root@vagrant-centos65 ~]# mysql -uroot -pxxxx(重新登录)
mysql> SELECT @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set (0.00 sec)
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
+----+------+
2 rows in set (0.00 sec)
[窗口B]:
mysql> SELECT @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| READ-COMMITTED |
+----------------+
1 row in set (0.00 sec)
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
+----+------+
2 rows in set (0.00 sec)
mysql> delete from test.user where id=1;
Query OK, 1 row affected (0.00 sec)
mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 2 | b |
+----+------+
1 row in set (0.00 sec)
[窗口A]:
mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 1 | a |
| 2 | b |
+----+------+
2 rows in set (0.00 sec)
[窗口B]:
mysql> commit;
Query OK, 0 rows affected (0.02 sec)
[窗口A]:
mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 2 | b |
+----+------+
1 row in set (0.00 sec)Repeatable Read(可重读)[窗口A]:
mysql> SET GLOBAL tx_isolation='REPEATABLE-READ';
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
[root@vagrant-centos65 ~]# mysql -uroot -pxxxx(重新登录)
mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
[窗口B]:
mysql> quit;
Bye
[root@vagrant-centos65 ~]# mysql -uroot -pxxxx(重新登录)
mysql> SELECT @@tx_isolation;
+-----------------+
| @@tx_isolation |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.00 sec)
mysql> insert into test.user values (4, 'd');
Query OK, 1 row affected (0.00 sec)
mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 2 | b |
| 4 | d |
+----+------+
2 rows in set (0.00 sec)
[窗口A]:
mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 2 | b |
+----+------+
1 rows in set (0.00 sec)
mysql> commit;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 2 | b |
| 4 | d |
+----+------+
2 rows in set (0.00 sec)Serializable(序列化执行)[窗口A]:
mysql> SET GLOBAL tx_isolation='SERIALIZABLE';
Query OK, 0 rows affected (0.00 sec)
mysql> quit;
Bye
[root@vagrant-centos65 ~]# mysql -uroot -pxxxx(重新登录)
mysql> SELECT @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| SERIALIZABLE |
+----------------+
1 row in set (0.00 sec)
mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 2 | b |
| 4 | d |
+----+------+
2 rows in set (0.00 sec)
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test.user values (5, 'e');
Query OK, 1 row affected (0.00 sec)
[窗口B]:
mysql> quit;
Bye
[root@vagrant-centos65 ~]# mysql -uroot -pxxxx(重新登录)
mysql> SELECT @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| SERIALIZABLE |
+----------------+
1 row in set (0.00 sec)
mysql> select * from test.user;
ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction
[窗口A]:
mysql> commit;
Query OK, 0 rows affected (0.01 sec)
[窗口B]:
mysql> mysql> select * from test.user;
+----+------+
| id | name |
+----+------+
| 2 | b |
| 4 | d |
| 5 | e |
+----+------+
3 rows in set (0.00 sec)Thank ~ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。