zoukankan      html  css  js  c++  java
  • 行锁和表锁的区别

    行锁

    1、支持的存储引擎:Innodb;

    2、InnoDB行锁是通过给索引上的索引项加锁来实现的,意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁!

    3、适用场景:有大量按索引条件并发更新少量不同数据,同时又有并发查询的应用

    4、特点:开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高

    5、分析:show status like 'innodb_row_lock%';分析系统上行锁的争夺情况如果发现锁争用比较严重,如InnoDB_row_lock_waits和InnoDB_row_lock_time_avg的值比较高,还可以通过设置InnoDB Monitors来进一步观察发生锁冲突的表、数据行等,并分析锁争用的原因。

    表锁

    1、支持的存储引擎:Innodb、MYIsam

    2、适用场景:以查询为主,只有少量按索引条件更新数据的应用

    3、特点:开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低

    4、两种模式:

    ​ • 表共享读锁

    ​ • 表独占写锁

    5、对两张表显示加锁、解锁

    ​ Lock tables orders read local, order_detail read local;

    ​ Select sum(total) from orders;

    ​ Select sum(subtotal) from order_detail;

    ​ Unlock tables;

    6、MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在执行更新操作(UPDATE、DELETE、INSERT等)前,会自动给涉及的表加写锁

  • 相关阅读:
    Springboot2.0之HikariCP 连接池
    Spring Kafka中关于Kafka的配置参数
    Spring @Async异步线程池 导致OOM报错的原因
    JDK 8 函数式编程入门
    Spring自定义argumentResolver参数解析器
    Kafka消费异常处理
    Java项目生成可执行jar包、exe文件以及在Windows下的安装文件
    Mysql索引研究总结
    windows安装zookeeper
    JVM中的堆和栈
  • 原文地址:https://www.cnblogs.com/ngrzr/p/11906710.html
Copyright © 2011-2022 走看看