MySQL 事务隔离级别

MySQL 事务隔离级别

隔离级别脏读不可重复读幻读
Read uncommitted
Read committed
Repeatable Read(默认)
Serializable
  • 脏读:一个事务读到另一个事务修改但未提交的数据。
  • 不可重复读:一个事务中执行相同的查询语句,结果不一样。(另一个事务修改并提交了)
  • 幻读:查询的时候数据不存在,但插入的时候提升数据已存在,好像出现了幻觉。(另一个事务插入了数据并提交了)

–建表SQL

1
2
3
4
5
6
CREATE TABLE `user` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(45) NOT NULL,
`age` int NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

 –查看事务隔离级别

1
select @@transaction _isolation;

–设置事务隔离级别

1
set [session | global] transaction isolation level {read uncommitted | read committed | repeatable read | serializable};

–开启事务

1
start transaction;

–更新数据

1
update user set age = age + 10 where name = '张三';

–插入数据

1
insert into user(id, username, age) value(3, '王五', 100);