隔离性: 隔离性要求一个事务对数据库中的数据的修改,在未提交完成前对于其他事务是不可见的
隔离级别解决的问题:
脏读
不可重复读(修改了记录,读了修改的记录,但是行数未改变)
幻读(删除或者新增了数据,读取的行数改变了)、
设置数据库的隔离级别
set session transaction isolation level read uncommited;
未提交读(read uncommited)脏读:
事务A读取了事务B更新的数据,然后B回滚了,那么A读取到的数据就是脏数据
已提交读(read commited)不可重复读:
事务A 多次读取同一数据,事务B在事务A多次读取的过程中,对数据做了更新并提交,导致事务A多次读取同一数据是,结果不一致
可重复度(reperatable read)_mysql 默认的事务隔离级别:
解决了不可重复读的问题,也就是说在同一个事务中查询多次的结果一定是一致的
可串行化(serializable):
最高的隔离级别
解决了幻读:解决方式是锁表
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
未提交读 | 是 | 是 | 是 |
不可重复读 | 否 | 是 | 是 |
可重复读 | 否 | 否 | 是(在mysql中为否) |
串行化 | 否 | 否 | 否 |