创建表结构
CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(45) DEFAULT NULL,`age` int(11) DEFAULT NULL,`text` varchar(45) DEFAULT NULL,PRIMARY KEY (`id`),KEY `idx_name` (`name`),KEY `idx_age` (`age`),KEY `idx_name_age` (`name`,`age`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1;
初始化数据
INSERT INTO `test_isolation`.`user` (`name`, `age`, `text`) VALUES ('a', '10', 'a');INSERT INTO `test_isolation`.`user` (`name`, `age`, `text`) VALUES ('b', '20', 'b');INSERT INTO `test_isolation`.`user` (`name`, `age`, `text`) VALUES ('c', '30', 'c');INSERT INTO `test_isolation`.`user` (`name`, `age`, `text`) VALUES ('d', '40', 'd');INSERT INTO `test_isolation`.`user` (`name`, `age`, `text`) VALUES ('e', '50', 'e');
T1 - 设置隔离级别
READ COMMITTED
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;select @@global.transaction_isolation,@@transaction_isolation;

T2 - 设置隔离级别
READ COMMITTED
SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;select @@global.transaction_isolation,@@transaction_isolation;
T1 - 事务1开启
T1第一次查询
start transaction;SELECT * FROM test_isolation.user;

T2 - 事务2开启
插入一条没有提交的数据f
start transaction;INSERT INTO test_isolation.user (`name`, `age`, `text`) VALUES ('f', 60, 'f');SELECT * FROM test_isolation.user;

或删除一条没有提交的数据a
start transaction;DELETE FROM test_isolation.user where id = 1;SELECT * FROM test_isolation.user;

或更新一条没有提交的数据b
start transaction;UPDATE test_isolation.user SET name = "B" WHERE id = 2;SELECT * FROM test_isolation.user;
T1 - 第2次查询
事务1无法读到了事务2尚未提交的数据f,READ COMMITED避免了脏读
SELECT * FROM test_isolation.user;
T2 - 事务2提交

T1 - 第3次查询
事务1读到了事务2提交插入的数据f,READ COMMITED避免了脏读,但是不能阻止不可重复读(在同一个事物中的多次查询结果不一致)
SELECT * FROM test_isolation.user;

事务1发现事务2删除了数据a,READ COMMITED避免了脏读,但是不能阻止不可重复读(在同一个事物中的多次查询结果不一致)
**
- 事务1发现事务2更新了数据b,READ COMMITED避免了脏读,但是不能阻止不可重复读(在同一个事物中的多次查询结果不一致)
**
