数据库面试题

本文详细探讨了数据库并发场景中的事务处理,包括读写和写写问题,以及事务未提交和提交的机制。介绍了MVCC在提高并发性能和解决冲突中的作用,同时解读了事务的四大特征和MySQL的四种隔离级别。还解释了并发事务可能带来的问题,如脏读、不可重复读和幻读,并纠正了幻读的常见误解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


参考文章: 【MySQL笔记】正确的理解MySQL的MVCC及实现原理 - @作者:SnailMann

数据库并发的场景

读-读:不存在任何问题,也不需要并发控制。
读-写:有线程安全问题,可能会造成事务隔离性问题,可能遇到脏读,幻读,不可重复读
写-写:有线程安全问题,可能会存在更新丢失问题,比如第一类更新丢失,第二类更新丢失

事务未提交和提交

事务未提交时数据存在于数据库系统的缓存中,而在事务提交后,数据才会被写入到磁盘上的数据库文件中。

怎么解决读-写和写-写问题?

简而言之,MVCC 就是因为大佬们,不满意只让数据库采用悲观锁这样性能不佳的形式去解决读-写冲突问题,而提出的解决方案,所以在数据库中,因为有了 MVCC,所以我们可以形成两个组合:
MVCC + 悲观锁
MVCC解决读写冲突,悲观锁解决写写冲突

MVCC + 乐观锁
MVCC 解决读写冲突,乐观锁解决写写冲突

这种组合的方式就可以最大程度的提高数据库并发性能,并解决读写冲突,和写写冲突导致的问题

事务的4大特征

事务的四大特征
原子性:事务不可分割,要么全部成功,要么全部失败
一致性:事务的一致性要求数据库在任何时候都保持一致的状态,不会出现数据的矛盾或不完整。(数据总额不能变)
隔离性:并发执行的事务之间互不干扰。
持久性:事务一旦提交, 其对数据库的修改是永久性的

事务的隔离级别

MySQL支持四种隔

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值