事务并发问题 与 事务隔离级别

来源:微软sql文档
https://learn.microsoft.com/en-us/sql/odbc/reference/develop-app/transaction-isolation-levels?view=sql-server-ver16

事务隔离级别,是一种衡量事务隔离程度的指标。
事务隔离级别的定义,取决于能不能解决以下几个问题:

  • 脏读:一个事务能读到其他事务未提交的数据。举例:
    • 事务A更新了一行但没提交;
    • 事务B读取到了A更新的数据;
    • 然后A进行回滚,撤销了刚才的更新操作;
    • 此时B读到的是本来不应该存在的数据,即脏数据。

  • 不可重复读:一个事务两次读取同一行,得到的数据却不同。举例:
    • 事务A查询了一行;
    • 事务B更新或者删除了该行、并且提交了;
    • 事务A重新读取这一行,发现数据被修改或者结果集为空,即查询结果不同了。

  • 幻读:“幻”意为幻影行,执行相同的查询语句两次,第二次却多查出几条新记录,突然多出的新记录如同幻影一般。举例:
    • 事务A第一次执行select,获得了结果集;
    • 事务B update一行导致其满足了A的查询条件,或者插入了满足A的查询条件的行
    • 事务A再次执行相同的select语句,发现多出了新的结果,即出现幻影。

不同的隔离级别可以解决的问题:

事务隔离级别 说明 脏读 不可重复读 幻读
读未提交 可以读到其他事务未提交的数据 X X X
读已提交 只能读到其他事务提交后的数据 解决 X X
可重复读 再次查询该条记录结果不变 解决 解决 X
串行化 执行相同查询条件结果不变 解决 解决 解决

注意
事务隔离级别不会影响事务自身,事务可以直接看到自己执行的操作结果

相关推荐

  1. 事务并发问题 事务隔离级别

    2024-06-13 22:12:01       35 阅读
  2. PG事务事务隔离级别并发控制

    2024-06-13 22:12:01       32 阅读
  3. 事务隔离级别

    2024-06-13 22:12:01       48 阅读
  4. 数据库事务隔离级别

    2024-06-13 22:12:01       48 阅读

最近更新

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

    2024-06-13 22:12:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-13 22:12:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-13 22:12:01       82 阅读
  4. Python语言-面向对象

    2024-06-13 22:12:01       91 阅读

热门阅读

  1. pytorch中,load_state_dict和torch.load的区别?

    2024-06-13 22:12:01       27 阅读
  2. springMVC简介

    2024-06-13 22:12:01       24 阅读
  3. Rust在前端领域有哪些应用?

    2024-06-13 22:12:01       22 阅读
  4. 用python+vue实现一个计算页面

    2024-06-13 22:12:01       28 阅读
  5. 网络:用2个IP地址描述一个连接

    2024-06-13 22:12:01       29 阅读
  6. 【无标题】

    2024-06-13 22:12:01       28 阅读
  7. vue3生命周期

    2024-06-13 22:12:01       25 阅读
  8. Qt | QTextStream 类(文本流)

    2024-06-13 22:12:01       24 阅读
  9. oppo手机精简包名列表

    2024-06-13 22:12:01       26 阅读
  10. SQL Server中的CTE和临时表优化

    2024-06-13 22:12:01       27 阅读
  11. Pipeline流水线组件

    2024-06-13 22:12:01       26 阅读
  12. 配置调整BGP网络的收敛速度方法

    2024-06-13 22:12:01       20 阅读
  13. Scikit Learn中支持单变量特征选择的SVM示例

    2024-06-13 22:12:01       23 阅读
  14. 一文入门机器学习

    2024-06-13 22:12:01       29 阅读
  15. Go AfterFunc 不触发

    2024-06-13 22:12:01       29 阅读
  16. 源码编译构建LAMP

    2024-06-13 22:12:01       26 阅读