脏读怎么理解?虚读 和幻读呢?

脏读怎么理解?虚读 和幻读呢?

一些概念性的理解:
脏读:指一个线程中的事务读取到了另外一个线程中未提交的数据。
虚读 :指一个线程中的事务读取到了另外一个线程中提交的insert的数据。
幻读:指一个线程的事务在执行插入数据之前已经查询不存在的数据,在插入时却又检索出来了
不可重复读:指一个线程中的事务读取到了另外一个线程中提交的update的数据。
接下来 看看这些,你是否又了解 ?
读未提交:read uncommitted(最低的隔离级别 )事务A 和事务 B 事务A读取到了事务B还未提交的数据.即“脏读”。
读已提交:read committed 事务A 读取到 事务B提交的数据;该隔离级别可以避免脏数据。能够导致“不可重复读取”。Oracle数据库管理系统默认隔离级别为“读已提交”
可重复读:repeatable read 事务A和事务B,事务A提交之后的数据,事务B读取不到事务B是可重复读到数据的;可以避免“脏读和不可重复读”。MySQL 默认隔离级别:‘可重复读’
串行化:serializable 事务A和事务B,事务A在操作数据库表中数据的时候,事务B只能排除等待;可以避免“幻象读”。
隔离级别
read uncommitted < read committed < repeatable read< serializable

发布了16 篇原创文章 · 获赞 0 · 访问量 268

猜你喜欢

转载自blog.csdn.net/weixin_44094017/article/details/105391272