• 事务的四大特性


    事务的特性

    数据库的事务是指一组sql语句组成的数据库逻辑处理单元,在这组的sql操作中,要么全部执行成功,要么全部执行失败。

    事务的四大特性:原子性、一致性、隔离性、持久性;

    1. 原子性
      事务的原子性是指事务必须是一个原子的操作序列单元。事务中包含的各项操作在一次执行过程中,只允许出现两种状态之一,要么都成功,要么都失败。
      任何一项操作都会导致整个事务的失败,同时其它已经被执行的操作都将被撤销并回滚,只有所有的操作全部成功,整个事务才算是成功完成。

    2. 一致性
      事务的一致性是指事务在执行不能破坏数据库数据的完整性和一致性,一个事务在执行之前和执行之后,数据库都必须处以一致性状态。
      比如:张三给李四转钱,不可能张三被扣了钱,李四没有加钱。

    3. 隔离性
      事务的隔离性是指在并发环境中,并发的事务是互相隔离的,一个事务的执行不能被其它事务干扰。也就是说,不同事物并非操作相同数据时,每个事务都有完整的数据空间。
      一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务是不能互相干扰的。

    4. 持久性
      事务的持久性是指事务一旦提交后,数据库中的数据必须被永久的保存下来。即使服务器系统崩溃或服务器宕机等故障。只要数据库重新启动,那么一定能够将其恢复到事务成功结束后的状态。

    事务的隔离级别

    读未提交: 一个事务还没有提交时,它做的变更就能被别的事务看到。可能出现脏读。

    读提交: 一个事物提交之后,它做的变更才会被其他事务看到。可能出现不可重复读。

    可重复读: 一个事物执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。未提交变更对其他事务也是不可见的。可能出现幻读。

    串行化: 对于同一行记录,写会加“写锁”,读会加“读锁”,当出现锁冲突时,后访问的事务需要等前一个事务执行完成,才能继续执行。

    可能导致的问题有
    1.脏读: 一个事务读到另一个事务未提交的更新数据。
    2.不可重复读: 一个事务两次读同一行数据,可是这两次读到的数据不一样。
    3.幻读: 一个事务执行两次查询,但第二次查询比第一次查询多出了一些数据行。

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    【云原生 三】 kubelet调用CRI的演进过程
    调研主板,树莓派 VS RK3288板子,还是 RK的主板香,但是只支持 anrdoid 7系统,估计也有刷机成 armbian或者
    java毕业设计水利施工安全检测系统设mybatis+源码+调试部署+系统+数据库+lw
    嵌入式分享合集61
    为什么选择 TypeScript
    bert ranking pairwise demo
    玩转Mysql系列 - 第14篇:详解事务
    MySQL实用安装教程
    高校实验室设备管理系统设计与实现-计算机毕业设计源码+LW文档
    base64图片的优缺点(雪碧图)
  • 原文地址:https://blog.csdn.net/m0_67402731/article/details/126080880