32|隔离级别对应用程序有什么影响?
俊达
你好,我是俊达。
事务的 ACID 属性中,I(Isolation)表示隔离性,指的是多个事务并发执行时,各个事务之间相互独立,仿佛在独立的环境中执行一样。数据库用来实现隔离性的两个重要的方法分别是 MVCC(Multi-Version Concurrency Control,多版本并发控制)和锁。
这一讲我们会介绍 MVCC,锁的内容在下一讲中再展开。
事务的隔离级别是什么意思?
事务之间互相隔离的程度使用隔离级别来描述。ISO SQL 标准定义了 4 个隔离级别,分别为 READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE。事务的隔离级别决定了并发的事务在执行过程中,读取和写入数据受其他事务的影响程度。
根据隔离级别的不同设置,事务在执行过程中可能会存在下面这几种现象:
脏读(Dirty read):读取到其他事务还没有提交的修改。
不可重复读(Nonrepeatable read):事务在 T1 时刻读取到的记录,在 T2 时刻再次读取时,可能会发生变化,要么字段被更新了,要么记录被删除了。
幻读(Phantom read):事务中的一个 SQL,在 T1 时刻执行获取到的记录,在 T2 时刻执行同一个 SQL 时,依然能获取到,但是在 T2 时刻还能获取到额外的记录。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
1. 事务的隔离级别对并发事务的影响,包括脏读、不可重复读和幻读等现象。 2. MySQL支持的四种隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE。 3. 不同隔离级别下的数据可见性差异,如READ UNCOMMITTED允许读取未提交的修改。 4. READ COMMITTED下可能出现不可重复读和幻读。 5. REPEATABLE READ下保证可重复读,且没有幻读。 6. MySQL的隔离级别实现了可重复读,但仍可能出现幻读和不可重复读。 7. 隔离级别可通过设置全局、会话或下一个事务的隔离级别来确定。 8. 使用set @@transaction_isolation设置下一个事务的隔离级别,修改只对下一个事务生效。 9. MVCC是InnoDB的一个重要机制,通过MVCC,MySQL实现了读不阻塞写,写不阻塞读。 10. InnoDB Purge线程会定期清理Undo日志,但是有些情况下,清理可能会有比较大的延迟,导致Undo表空间持续增长。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《MySQL 运维实战课》,新⼈⾸单¥59
《MySQL 运维实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论