当前位置: 首页 > news >正文

[SQL] 事务的四大特性(ACID)

 🎄事务的四大特性

  • 以下就是事务的四大特性,简称ACID。
  • 原子性📢事务时不可分割的最小操作单元,要么全部成功,要么全部失败。
  • 一致性📢事务完成后,必须使所有的数据都保持一致
  • 隔离性📢数据库系统自身提供的隔离机制,保证事务在不受外部并发操作影响的独立
    环境下运行。
  • 持久性📢事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。(将在磁盘中永久写入)。

🎄并发事务引发的问题

⭐脏读

  • 一个事务读到另外一个事务还没有提交的数据。

A事务更新了某个字段的值,比如将100更新为200,但此时A事务还没有提交

此时B事务读取这个字段发现还是100,也就是B事务读取到了A事务还没有来得及处理的数据

⭐不可重复读

  • 一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。

  • A事务的第一条查询语句查询后,此时B事务进行的对同一字段记录的更新
  • 紧接着A事务的再次对同一数据进行查询时发现数据不一致。
  • 这就是不可重复读,也就是重复读的数据不一致。

⭐幻读

  • 一个事务按照条件查询数据时,没有匹配到对应的数据,但是在插入数据时,发现这行数据又存在了。就好像出现了“幻影”。

A事务查询主键1不存在,此时B事务插入了一条主键为1的数据,紧接着A事务又去插入主键为1的记录,此时发现数据已经存在,插入失败。就好像出现了幻觉。

🎄事务的隔离级别

📢目的就是为了解决并发事务所引发的问题。

事务隔离级别
隔离级别
脏读不可重复读幻读
Read uncommitted
未解决未解决未解决
Read committed
解决未解决未解决
Repeatable Read( 默认 ):可重复读
解决解决未解决
Serializable(串行化)
解决解决解决

⭐查看事务隔离级别

select @@transaction_isolation

⭐设置事务隔离级别

set [session|global] transaction isolation level [read uncommitted | read committed | repeatable read | serializable]

⭐注意

📢:对于隔离级别越高数据越安全,但是并发性能越差。

相关文章:

  • 设计心得——解耦的实现技术
  • C++/JavaScript ⭐算法OJ⭐用两个队列实现栈
  • Java-13
  • Kafka系列之:记录一次源头数据库刷数据,造成数据丢失的原因
  • Chrome 推出全新的 DOM API,彻底革新 DOM 操作!
  • 【MySQL】索引和视图
  • Starlink卫星动力学系统仿真建模第七讲-卫星姿轨控系统(Attitude and Orbit Control System, AOCS)设计规范
  • 智信BI:解决Power BI全面兼容问题的新选择
  • List模拟实现
  • CellChat前沿:spaCI:通过自适应图模型破译空间蜂窝通信
  • vs构建网络安全系统 网络安全和网络搭建
  • 在群晖上使用Docker安装思源笔记
  • 【Node.js】包的结构及发布
  • 深度学习学习笔记(34周)
  • 如何评估光伏项目是否可行?需要投资多少?
  • 分类解析决策模型
  • 【从0做项目】Java音缘心动(5)———上传、播放音乐
  • springboot初始化代码
  • Power Query M函数
  • <02.22>Leetcode100
  • 五一假期前两日,多地党政主官暗访景点、商圈安全工作
  • 五一假期首日,多地党政主官暗访督查节日安全和值班值守工作
  • 超越梅罗,这样一个亚马尔折射巴萨的容错率
  • 上海:以税务支持鼓励探索更多的创新,助力企业出海
  • 万达电影去年净利润亏损约9.4亿元,计划未来三年内新增25块IMAX银幕
  • 4月译著联合书单|心爱之物:热爱如何联结并塑造我们