第7章 锁

事务在并发中执行出现的现象

  • 读-读
    不管有有多少个事务同时读,都不会出现问题
  • 写-写
    并发事务相继对相同的记录进行改动
    解决这个,就是加锁,其他事务就不能操作了
  • 读-写或者写-读
    也就是一个事务进行读取操作,另一个事务进行改动操作
    解决这个问题有两种方案:
    1.读操作使用多版本并发控制,写操作进行加锁

2.读写操作都采用加锁

  • 共享锁
    在事务要读取已条记录时,需要先获取这些记录的S锁
  • 独占锁
    在事务要改动一条记录时,需要先获取该记录的X锁
  • 行级锁
    就是对表记录进行加的锁
    1.记录锁
    仅仅给一条记录加锁
    2.间隙锁
    是对记录范围区间加锁,就是为了解决幻读,还有一种方法解决幻读就是mvcc
    3.next-key lock
    间隙锁范围,加上本身

加锁

  • 间隙锁示例
-- 使用SELECT ... FOR UPDATE语句获取间隙锁
START TRANSACTION;
SELECT * FROM `student` WHERE id >= 10 AND id <= 20 FOR UPDATE;
-- 这里进行需要对students表中指定范围的记录进行修改或删除等操作
COMMIT;
  • 死锁示例
-- 事务1
begin;
-- SQL1更新id为1的
update user set age = 1 where id = 1;
-- SQL2更新id为2的
update user set age = 2 where id = 2;
commit;
-- 事务2
begin;
-- SQL1更新id为2的
update user set age = 3 where id = 2;
-- SQL2更新id为1的
update user set age = 4 where id = 1;
commit;

相关推荐

  1. 7

    2023-12-31 05:02:05       56 阅读
  2. 7 事务

    2023-12-31 05:02:05       36 阅读
  3. 7 DOM(下)

    2023-12-31 05:02:05       60 阅读
  4. 7 网络管理

    2023-12-31 05:02:05       42 阅读
  5. 7 1 异常处理

    2023-12-31 05:02:05       56 阅读

最近更新

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

    2023-12-31 05:02:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-31 05:02:05       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-31 05:02:05       82 阅读
  4. Python语言-面向对象

    2023-12-31 05:02:05       91 阅读

热门阅读

  1. NodeJs 第五章 模块化

    2023-12-31 05:02:05       55 阅读
  2. C++——STL标准模板库——容器详解——deque

    2023-12-31 05:02:05       44 阅读
  3. 数据挖掘 聚类度量

    2023-12-31 05:02:05       47 阅读
  4. pymysql工具类封装详解

    2023-12-31 05:02:05       61 阅读
  5. Global Mapper SDK 19 中文开发文档(十)

    2023-12-31 05:02:05       44 阅读
  6. python3 csv解析单引号包含特殊字符的字段

    2023-12-31 05:02:05       59 阅读
  7. linux 网络系统管理 技能大赛 NFS赛题配置

    2023-12-31 05:02:05       62 阅读
  8. spring核心技术控制反转IoC详细使用教程包含例子

    2023-12-31 05:02:05       60 阅读
  9. D. X-Sum 求矩形里面斜线的和的最大值

    2023-12-31 05:02:05       56 阅读
  10. 第二百三十六回

    2023-12-31 05:02:05       52 阅读
  11. 动态规划09-完全背包

    2023-12-31 05:02:05       56 阅读
  12. 云卷云舒:数据库还能发展多少年

    2023-12-31 05:02:05       59 阅读
  13. Python字典类型key找value或者value找key方法汇总

    2023-12-31 05:02:05       53 阅读