面试——数据库中的锁升级(Lock Escalation)机制

假设执行下面的sql语句

update tb_user set age = age + 1;

以MySQL为例,按照两阶段锁协议,会先给tb_user加上表意向锁,然后对tb_user的所有行加上行锁,但是当tb_user数据量非常多的时候,频繁的获取行锁会影响性能,所以会将表意向锁升级为表锁,后续访问的时候不需要再加锁,这样导致的结果是并发性能降低,因为其他线程访问该表会被阻塞。

因此得出建议:操作表的时候尽量带仨很wherelimit条件,分批去操作数据,尽量防止全表扫描

相关推荐

  1. 面试——数据库升级(Lock Escalation)机制

    2024-04-25 07:46:01       38 阅读
  2. MySQL数据库机制(通俗易懂)

    2024-04-25 07:46:01       36 阅读
  3. MySQL 数据库 Insert 语句机制

    2024-04-25 07:46:01       36 阅读
  4. 升级过程两次自旋 面试重点

    2024-04-25 07:46:01       25 阅读
  5. MySQL 机制详解

    2024-04-25 07:46:01       37 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-25 07:46:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-25 07:46:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-25 07:46:01       87 阅读
  4. Python语言-面向对象

    2024-04-25 07:46:01       96 阅读

热门阅读

  1. Android - OkHttp 访问 https 的怪问题

    2024-04-25 07:46:01       40 阅读
  2. MyBatis与Hibernate的区别

    2024-04-25 07:46:01       40 阅读
  3. C脚本实现Wincc单按钮启动/停止

    2024-04-25 07:46:01       74 阅读
  4. 表单插件——jquery.form.js

    2024-04-25 07:46:01       30 阅读
  5. 哈希封装unordered系列关联式容器

    2024-04-25 07:46:01       35 阅读
  6. Git 流程和命令

    2024-04-25 07:46:01       143 阅读
  7. 【算法模版】数据结构模版

    2024-04-25 07:46:01       116 阅读
  8. radware负载均衡简介及应用场景

    2024-04-25 07:46:01       37 阅读