mysql 是怎样使用的:从零蛋开始学习 mysql_MySQL 锁

本系列学习笔记旨在作者准备数据库方面面试用,有点临阵磨枪的感觉,我学习MySQL是参考的掘金小册的《MySQL 是怎样运行的:从根儿上理解 MySQL》和《MySQL 是怎样使用的:从零蛋开始学习 MySQL》,学习笔记里将核心概念和高频考点总结一下,图都是从小册里摘取的,如果涉及侵权可随时撤销,如果大家是零基础学习MySQL,强烈推荐上面的两本小册。

这一部分先针对面试题总结,后续视情况再完善。

1、MySQL解决并发问题的两种策略

事务那一篇文章介绍了数据库并发场景会出现的一系列问题,即脏写、脏读、不可重复读和幻读,以及不同事物隔离级别对应的并发问题,那怎么解决这些并发场景的问题呢?有以下两种方案:

(1)读操作采用MVCC(多版本并发控制),写操作采用加锁的方式

MVCC机制在查询之前生成一个ReadView,查询语句只能读取到生成ReadView之间已经提交的事务所做的修改,在生成ReadView之前未提交的事务或者生成ReadView之后才提交的事务所做的更改是读取不到的。MVCC机制可以不通过加锁的机制实现读-写不冲突,性能上肯定优于加锁,因此在场景运行的前提下优先使用MVCC机制。

(2)读、写操作均采用加锁的方式

MVCC机制是可以允许读取记录的旧版本的,但某些场景,比如银行转账时必须读取当前账户的最新记录,因此对读操作也加锁,保证每次读取的都是记录的最新版本。

2、基于锁粒度对MySQL中的锁的分类

不同数据库对锁粒度的支持情况是不一样的,MySQL支持三种粒度的锁,分别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值