美文网首页
MySQL中的锁和并发控制

MySQL中的锁和并发控制

作者: 阿臻同学 | 来源:发表于2019-10-01 21:43 被阅读0次

综述

对MySQL中并发控制所用到的机制和锁进行整理。

  • 行锁
  • 表锁
  • 间隙锁
  • 临键锁
  • MVCC
  • 悲观锁
  • 乐观锁

行锁 Record Locks

顾名思义,是针对数据中已经存在的数据行上的锁。

  • 也叫 记录锁
  • InnoDB中,对索引列的操作会使用行锁,非索引列的操作会使用表锁(因为不在索引中,所以需要全表扫描)
  • 使用<>!=等符号进行范围内的查询时,会加上行锁间隙锁

表锁 Table Locks

对整张数据表上的锁。

  • 对效率影响较大

  • 代码:

    LOCK TABLES myTable WRITE;
    UNLOCK TABLES;
    

间隙锁 Gap Locks

主要用于封锁索引记录间的间隔。

  • 产生条件:
  1. 对不存在的记录加锁
  2. 范围查询

临键锁 Next-key Locks

就是行锁间隙锁的组合。

  • 封锁范围:索引记录索引区间
  • 主要目的:避免幻读

多版本并发控制 MVCC

每个事务的读取操作所读取到的都是数据在某个时刻的快照。

  • 用于解决读-写冲突

悲观锁

每次操作都假设为最坏的情况:其他事务会对本事务用到的数据进行操作。所以在事务开始时就直接对数据上锁。

  • 在查询时就会锁上数据,直到数据被提交或者回滚
  • 主要语法FOR UPDATE
    select * from myTable for update;
    其他操作……
    commit;
    

乐观锁

每次操作都假设其他事务不会使用本事务的数据,所以只有在进行写操作的时候,才上锁。

  • 通过类似“版本号”的机制来实现,读的时候确定版本,写的时候检查版本号:
    update myTable 
    set (……,version) 
    values (……, version + 1) 
    where version = 1;
    

相关文章

  • 你应该了解的MySQL锁分类

    MySQL中的锁 锁是为了解决并发环境下资源竞争的手段,其中乐观并发控制,悲观并发控制和多版本并发控制是数据库并发...

  • MySQL中的锁和并发控制

    综述 对MySQL中并发控制所用到的机制和锁进行整理。 行锁 表锁 间隙锁 临键锁 MVCC 悲观锁 乐观锁 行锁...

  • 收藏-MySQL

    # MySQL的并发控制与加锁分析# MySQL的四种事务隔离级别# mysql共享锁与排他锁

  • 1.MySQL的架构与历史

    MySQL逻辑架构 并发控制 读写锁sharelock共享锁,exclusivelock排他锁 锁粒度table ...

  • Mysql相关

    Mysql相关 Mysql并发控制-锁 共享锁 共享锁也称为读锁,读锁允许多个连接可以同一时刻并发的读取同一资源,...

  • 数据库事务,锁

    事务 事务特点ACID 理解ACID 以银行转账为例 MySQL锁 锁是MySQL在服务器层和存储引擎层的并发控制...

  • MySQL锁管理(并发锁,行锁,表锁,预加锁,全局锁等等)

    MySQL中并发和隔离控制机制Meta-data元数据锁:在table cache缓存里实现的,为DDL(Data...

  • MySQL的锁机制

    关于一些数据库的锁,之前有写过:锁和并发控制这篇着重讲讲MySQL的锁机制,由之前的理论转实际 1.MySQL的锁...

  • 乐观锁与悲观锁

    乐观并发控制(乐观锁)和悲观并发控制(悲观锁)是并发控制主要采用的技术手段 悲观并发控制(悲观锁) 它可以阻止一个...

  • Mysql并发控制-锁

    Mysql并发控制-锁 共享锁 共享锁也称为读锁,读锁允许多个连接可以同一时刻并发的读取同一资源,互不干扰。 排他...

网友评论

      本文标题:MySQL中的锁和并发控制

      本文链接:https://www.haomeiwen.com/subject/axclpctx.html