• 数据库事务并发访问产生的问题及四种事务隔离级别


    一、事务的基本要素(ACID)

       1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。

       2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。

       3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

       4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

    二、事务隔离级别和各个级别的并发访问问题。

    
    1、更新丢失(MySQL所有事务隔离级别在数据库层面上均可避免)
    事务A对数据进行操作时,事务B也在对同一数据更新操作并完成了提交,然后事务A遇到异常进行回滚导致事务B的更新丢失。
    
    2、脏读
    一个事务读到另一个事务未提交的数据。
    
    3、不可重复读
    事务A在多次读取同一数据的过程中,事务B对数据进行更新并提交,导致事务A多次读取同一数据时结果不一致。
    
    4、幻读
    事务A读取若干行数据,事务B以插入或删除行的方式来修改事务A的结果集。
    
    其中不可重复读与幻读比较相似,不可重复读侧重对同一数据的修改,幻读侧插入增或删除数据。
    事务隔离级别越高,对性能的影响也越大。



    mysql默认是可重复读、oracle默认是已提交读。
     
  • 相关阅读:
    Response.AddHeader使用实例收集
    JS回车键判断
    详解MongoDB中的多表关联查询($lookup)
    数据库设计三大范式
    一、表的设计步骤
    手把手教你,使用JWT实现单点登录
    【C#】ElasticSearch环境搭建与使用
    C#简单操作MongoDB
    net core WebAPI 初探及连接MySQL
    NoSQL 简介
  • 原文地址:https://www.cnblogs.com/zzuuoo666/p/10473483.html
Copyright © 2020-2023  润新知