首页 > 其他分享 >对隔离级别、事务并发问题、当前读和快照读、相关锁机制的思考

对隔离级别、事务并发问题、当前读和快照读、相关锁机制的思考

时间:2023-06-01 21:11:12浏览次数:50  
标签:事务 快照 隔离 RR 互斥 并发 级别

InnoDB存储引擎涉及事务的四大隔离级别(RU)读未提交、(RC)读已提交、(RR)可重复读、(Serializable)串行化

相对事务并发产生的问题:脏读、不可重复读、幻读

隔离级别对应事务:RU什么都解决不了,RC解决脏读、RR解决脏读和不可重复读、Serializable都解决

其中涉及的锁机制:共享锁、互斥锁、间歇锁、Next-Key Lock

RU采取的措施:读不上锁、写阻塞其他写,写不阻塞读

Serializable采取的措施:读上共享锁,写上排他锁,(这也能体现读写互斥、读读不互斥、写写互斥)

概念:

  当前读:读取当前数据的最新版本(加锁:共享锁+排他锁+Next-Key Lock),在select后有for update或者lock in share mode等

  快照读:读取历史版本(不加锁),普通的select

  Read View:当快照读的时候产生的读视图、表示当前视图可读取哪个版本(RC因为每次读取都会产生Read View所以会产生不可重复读,RR只有第一次读时生成,后续都用第一次的Read View)

  间歇锁:在两行数据之间加的锁

  Next-Key Lock:行锁+间歇锁

RR隔离级别时insert插入之前有个类似于select ... for update的查询(当前读),所以当前读能够查出幻读,而快照读查不出来

参考:一文彻底读懂MySQL事务的四大隔离级别 - 掘金 (juejin.cn)

标签:事务,快照,隔离,RR,互斥,并发,级别
From: https://www.cnblogs.com/weakxy-home/p/17450199.html

相关文章

  • 服务器并发量的简单计算以及简单的分布式解决方案
      上课画的图,感觉不错......
  • 窄带高清技术之百万级并发下的演唱会直播细节修复
     史无前例,高清又不卡。 5月,百视TV联合上海人民广播电台、时代峰峻共同出品的《东方风云榜》,绚烂呈现一场三十周年音乐分享会·时代少年团《理想之途》。有人说,这是一场似梦非梦的记忆。   演唱会由“乐园”、“少年”、“乌托邦”三大篇章组成,精心之作引来社交话......
  • 获得淘宝天猫搜索词推荐商品全网搜索接口演示示例(支持高并发)
    ​ 淘宝天猫是中国最大的电商平台之一,淘宝天猫通过不同的形式来满足用户的需求,为商家提供多样化的销售渠道,持续扩大服务范围和用户基础。我们如果需要获得搜索词推荐商品,又因为受其他的种种限制无法达到这一目的,那我们完全可以通过代码的形式使用该接口对接实现;【接口使用教程......
  • 并发中致命的死锁
    本文首发自「慕课网」,想了解更多IT干货内容,程序员圈内热闻,欢迎关注"慕课网"或慕课网公众号!作者:王军伟Tech||慕课网讲师1.前言本文内容主要是对死锁进行深入的讲解,具体内容点如下:理解线程的上下文切换,这是本节的辅助基础内容,从概念层面进行理解即可;了解什么是线程死锁,在并发编程......
  • .net耗时:多线程分段并发执行与单线程异步执行
    多线程执行存在线程切换的耗时,可采用单线程异步执行。性能根据实际情况调优。结合上面两种情况:可实现多线程异步执行。目前先看看下面两个例子1 多线程分段执行设备查找耗时操作///<summary>///异步查询设备///</summary>///<paramna......
  • go中的并发学习
    代码源自于https://github.com/lotusirous/go-concurrency-patterns自此对各个示例代码进行调试。1-boringpackagemainimport( "fmt" "math/rand" "time")funcboring(msgstring){ fori:=0;;i++{ fmt.Println(msg,i) time.Sleep(time.D......
  • 各个语言运行100万个并发任务需要多少内存?
    译者注:原文链接:https://pkolaczk.github.io/memory-consumption-of-async/Github项目地址:https://github.com/pkolaczk/async-runtimes-benchmarks正文在这篇博客文章中,我深入探讨了异步和多线程编程在内存消耗方面的比较,跨足了如Rust、Go、Java、C#、Python、Node.js和Elix......
  • 5.5. Java并发工具类(如CountDownLatch、CyclicBarrier等)
    5.5.1CountDownLatchCountDownLatch是一个同步辅助类,它允许一个或多个线程等待,直到其他线程完成一组操作。CountDownLatch有一个计数器,当计数器减为0时,等待的线程将被唤醒。计数器只能减少,不能增加。示例:使用CountDownLatch等待所有线程完成任务假设我们有一个任务需要三个子......
  • Java并发之原子性、可见性和有序性
    1.原子性1.1原子性的定义原子性:原子性即是一个或者多个操作,要么全程执行,并且执行的过程中不被任何因素打断,要么全部不执行。举个例子会更好理解:就像是我们去银行转账的时候,A给B转1000元,如果A的账户减少了1000之后,那么B的账户一定要增加1000。A的账户减钱,B的账户加钱,这两个操作......
  • ThreadLocal 详解【并发容器】
    ThreadLocal是什么?有哪些使用场景?ThreadLocal是一个本地线程副本变量工具类,在每个线程中都创建了一个ThreadLocalMap对象,简单说ThreadLocal就是一种以空间换时间的做法,每个线程可以访问自己内部ThreadLocalMap对象内的value。通过这种方式,避免资源在多线程间共享。原理:......