mysql事物的隔离级别

1.mysql共有四种隔离级别

  1. read uncommitted (读未提交数据) 允许事物读取为提交的变更不能解决 脏度,不可重复读,幻读的现象1. read commited(读提交数据) 只允许读取已提交的事物变更 能解决脏读, 不能解决 不可重复读和幻读1. repeatable read(可重复读) mysql默认的隔离级别确保事物在某一时刻可以多次从一个字段中读取相同的值,在事物持续期间,禁止其他事物对这个字段的更新, 可以避免脏读,和重复读,但不能避免幻读.1. serializable(串行化) 确保事物可以从一个表中读取相同的行,在这个事物持续期间,禁止其他事物对该表的插入,更新,删除操作,能解决所有并发问题,但是效率低下.

2.演示对四种隔离级别的效果

2.1 首先查看事物的隔离级别

  1. 使用 select @@tx_isolation;<br /> 新版本使用select @@transaction_isolation;

mysql事物的隔离级别 - 图1

查看read uncommitted(读未提交数据)

2.2 使用 设置事物隔离级别为read uncommitted;

  1. `set session transaction isolation level read uncommitted;`

mysql事物的隔离级别 - 图2

mysql事物的隔离级别 - 图3

执行 update goods set name='xiaozhu' where id=1;且未提交事物;

mysql事物的隔离级别 - 图4

另一个连接数据库的查询事物操作;读取到了未提交的事物

比喻:就像是同学考试,老师把同学未交卷时的答案读,但是同学还可以对答案进行修改;

查看read committed(读提交数据)

执行update goods set name=’zhangsan’ where id= 1;且不提交数据

mysql事物的隔离级别 - 图5 mysql事物的隔离级别 - 图6

当数据提交时出现了不可重复读取数据的情况;幻读就不做演示;