zoukankan      html  css  js  c++  java
  • 🍖多版本并发控制 MVCC 的快照读与当前读简介

    什么是多版本并发控制

    MVCC, 全称Multi-Version Concurrency Control, 即多版本并发控制; MVCC是一种并发控制的方法, 一般在数据库管理系统中, 实现对数据库的并发访问, 在编程语言中实现事务内存

    ps : 与MVCC相对的, 是基于锁的并发控制, Lock-Based Concurrency Control

    MVCC 的好处

    读不加锁, 读写不冲突

    在读多写少的OLTP应用中,读写不冲突是非常重要的,极大的增加了系统的并发性能,这也是为什么现阶段,几乎所有的RDBMS,都支持了MVCC

    快照读与当前读

    在 MVCC 并发控制中, 读操作可以的分成两类 : 快照读(snapshot read) 与当前读(current read)

    • 快照读, 读取的是记录的可见版本 (有可能是历史版本),不用加锁
    • 当前读, 读取的是记录的最新版本, 并且返回的记录都会加上锁, 保证其他事务不会再并发修改这条记录

    语句示例

    在 Innodb 存储引擎中的快照读与当前读示例 :

    • 快照读 : 简单的 select 操作, 属于快照读(也有例外)
    select * from [表名] where [条件];
    
    • 当前读 : 特殊的读操作 : insertupdatedelete 都属于当前读, 需要加锁进行操作
    select * from [表名] where [条件] lock in share mode;
    select * from [表名] where [条件] for update;
    insert into [表名] values(....);
    update [表名] set [修改的字段=修改的值] where [条件];
    delete from [表名] where [条件];
    

    当前读, 读的都是最新版本记录, 并且加锁防止其他并发的事务对其进行修改, 第一条语句加的是共享锁(S锁), 其余的都是排它锁(X锁)

    MVCC的原理分析

    https://www.cnblogs.com/linhaifeng/articles/14424181.html

  • 相关阅读:
    set基本用法-----2
    set基本用法---1
    最大和
    最长公共上升子序列||LCIS
    CODEVS【3556】科技庄园
    CODEVS【3372】选学霸
    CODEVS【1025】选菜
    hlg1398邮局问题【找中位数】
    hlg1175小陈老师、桌子、盘子【计算几何】
    hlg1216数的划分【地推公式|dfs】
  • 原文地址:https://www.cnblogs.com/songhaixing/p/14469578.html
Copyright © 2011-2022 走看看