文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL中 LBCC 和 MVCC 的理解及常见问题示例

2024-04-02 19:55

关注

1. 事务

介绍MVCC之前,先介绍下事务:事务是为了保证数据库中数据的完整性和一致性

事务的4个基本要素:

2. MVCC初探

目的:主要是为了 提高数据库并发性能。用更好的方式去处理 读/写 冲突,做到即使有 读/写 冲突时,也能做到不加锁,非阻塞并发读。

不同隔离级别下,可能引发的问题: 脏读:并发情况下,一方事务读到了另一方事务 “已 update 但未 commit” 的数据,破坏了事务隔离性不可重复读:并发情况下,一方事务读到了另一方事务 “已 updatedelete ,并 commit ” 的数据,破坏了事务隔离性幻读:并发情况下,一方事务读到了另一方事务" insertcommit "的数据,导致前后读取结果不一致。

MVCC中的四种事务隔离级别:

MySQL中 LBCC 和 MVCC 的理解及常见问题示例

提问:V1、V2、V3在不同事务隔离级别下读取到的值分别是:

MySQL中 LBCC 和 MVCC 的理解及常见问题示例

3. LBCC & MVCC

LBCC 锁相关:

MySQL中 LBCC 和 MVCC 的理解及常见问题示例

mysql 5.5 版本之前,默认的存储引擎是MyISAM,5.5之后默认引擎是Innodb。Innodb支持事务,包括:行锁/表锁,MyISAM不支持。 意向锁 意向共享锁/读锁(表锁类型,无法手动创建),mysql 中语法: lock in share mode意向排它锁/写锁(表锁类型,无法手动创建),mysql 中语法: for update

常见问题:为什么要加入意向锁?

意向锁并不是真正用来锁定数据的,而是用来告诉你当前表中是否已经有了被 共享锁/排它锁
锁定的数据行
。如果有就没必要再去加无用的表锁了,起到一个标识作用,提高加表锁的效率(相当于高铁洗手间门上方是否有人正在使用的 “指示灯”)。

记录锁(Record Lock)、间隙锁(Gap Lock)、临键锁(Next-Key Lock):

MySQL中 LBCC 和 MVCC 的理解及常见问题示例

问题:如图示:执行此sql语句(先开启事务):BEGIN; SELECT * FROM tbl WHERE id > 15 FOR UPDATE; ,以下两个sql语句可以执行成功吗?

MVCC底层实现详解:

快照读(实际上为相关的操作):读取的是记录的可见版本 (有可能是历史版本),不用加锁

简单的 SELECT 操作,属于快照读,不加锁。

SELECT * FROM user WHERE ? 

当前读(实际上为相关的操作):在事务中,update 数据前,还要去MySQL中重新读取一遍该数据对应最新版本的记录,并且 当前读 返回的记录都会加上锁,保证其他事务不会再并发修改这条记录。以下两种方式都属于当前读,需要加锁:

问题:在 RR-可重复读 的默认隔离级别下,假设起始的age为18,那么Q1和Q2对应的age分别是多少呢?

MySQL中 LBCC 和 MVCC 的理解及常见问题示例

MySQL中 LBCC 和 MVCC 的理解及常见问题示例

MySQL中 LBCC 和 MVCC 的理解及常见问题示例

总结

最后,补充一个问题点:

如果不声明的创建主键,会有哪些危害? 比如你的id(假设int类型)没有声明为主键,并且也没有声明唯一索引(当未声明主键时,唯一索引会被取代为主键)

到此这篇关于MySQL中 LBCC 和 MVCC 的理解及常见问题示例的文章就介绍到这了,更多相关MySQL中LBCC和 MVCC内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯