MysqlInnodb锁

Posted 不要做程序员的小松鼠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MysqlInnodb锁相关的知识,希望对你有一定的参考价值。

mysqlInnodb锁

乐观锁

  • 具体流程
    • 读取数据
    • 对数据操作
    • 事务提交,校验数据读取后是否被修改
      • 时间戳判断:数据更新同时更新时间戳
      • 版本判断:数据更新升版
    • 校验无误写入,否则回滚
  • 特点:
    • 实际上没有使用数据库的锁
    • 适用于乐观的场景,及对数据竞争冲突较少的情况(读频繁)

悲观锁

  • 共享锁(S)

    • 大家都可以加锁,无论是否已经加了共享锁
    • 加了锁之后,谁也不能修改,直到所有锁被释放
  • 排他锁(X)

    • 增删改默认加
    • 加锁后其他线程不得对被加锁数据任何操作
  • 行锁

    • 锁定一行数据
    • 根据主键索引锁定该行
      • begin;
      • select XXX from XXX where XXX=XXX for update;
      • commit;
    • 若无索引,则锁定整表
  • 表锁

    • 锁定一张表
  • 特点

    • 适用于写频繁的场景

以上是关于MysqlInnodb锁的主要内容,如果未能解决你的问题,请参考以下文章

MySQL InnoDB 意图锁用于啥?

分布式锁

mysql锁机制

悲观锁乐观锁实战

mysql间隙锁 转

mysql锁