zoukankan      html  css  js  c++  java
  • mysql事务与锁

    一、事务的四大特性ACID

      原子性、一致性、隔离性、持久性

    二、事务的隔离级别

      事务隔离级别是用来解决事务并发的三大问题,即脏读、幻读、不可重复读,其中幻读与不可重复读的区别在于,幻读的重点是新增或删除数据,不可重复读的重点是修改

    事务的四种隔离级别

    未提交读

    未解决任何并发问题
    已提交读 解决脏读问题
    可重复读 解决不可重复读问题(InnoDB引擎下也可解决幻读问题)
    串性化 解决所有问题

    三、事务隔离级别解决方案

      一种是加锁(LBCC),也就是在读取数据前,对记录加锁,另外一种则是生成快照(MVCC)

    四、mysql中锁的类型

      1、按锁的粒度分为:表锁和行锁

        

      2、按锁的基本模式分为:【共享锁(读锁)、排他锁(写锁)】行锁 和【意向共享锁、意向排他锁】表锁 

        意向锁的作用,实现多中锁粒度的并存以及提升加锁的效率

      3、按锁的算法分为:记录锁、间隙锁及临建锁(InnoDB中默认的行锁算法)

        

        

        锁住下一区间的原因是:避免出现幻读的情况

        

    五、锁的原理

      mysql的行锁是通过锁住【索引】项来实现,当没有索引(默认的聚集索引)或者没有命中索引的时候,会进行锁表操作;如锁住唯一索引,那么主键索引也会被锁住,这与索引的存储结果有关。ps:后续补充

    六、查看锁的状态

      表级锁的争用状态:show status like 'table%'

      行级锁的争用状态:show status like 'innodb_row_lock%'

  • 相关阅读:
    《Java技术》第四次作业
    Java第三次作业——面向对象基础(封装)
    《Java技术》第二次作业
    #《Java技术》第一次作业
    Java第十次作业
    Java第九次作业
    Java第八次作业
    Java第七次作业
    Java第6次作业
    Java第五次作业
  • 原文地址:https://www.cnblogs.com/xufan/p/10783513.html
Copyright © 2011-2022 走看看