数据库事务的四大特性和隔离级别
2022/1/3 2:07:41
本文主要是介绍数据库事务的四大特性和隔离级别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.简介
1.1.事务是什么
事务(Transaction)是由一条或多条操作数据库的 SQL 语句组成的一个不可分割的工作单元,这些操作要么都完成,要么都回滚。一个事务往往对应一个完整的业务。
1.2.事务关键流程
2.事务四大特性(ACID)
2.1.原子性(atomicity)
事务是个完整体,不可再分(就像化学中的原子不可再分),要求所有DML语句操作必须同时成功或同时失败。
2.2.一致性(consistency)
事务前后的数据要保持一致。 如:A有10元钱,B有20元钱。B转10元给A,完成转账后A+B的钱还是30元。
2.3.隔离性( isolation )
不同的事务之间互相隔离。
2.4.持久性(durability)
事务结束后,内存数据持久化的磁盘中。
3.并发问题
3.1.两种数据丢失
第一种是指两个事务同时操作同一个数据时,当第一个事务回滚时,把已经提交的第二个事务的更新数据覆盖了,第二个事务就造成了数据丢失。
第二种是指当两个事务同时操作同一个数据时,第一个事务将修改结果成功提交后,对第二个事务已经提交的修改结果进行了覆盖,对第二个事务造成了数据丢失。
3.2.脏读
脏读是指一个事务读取了另一个未提交事务的数据。
如:事务A读取了事务B未提交的数据,假如事务B未正确执行,回滚,则事务A读取到的就是脏数据。
问题关键点:读了「未提交」事务的数据。
3.3.不可重复读
不可重复读是指一个事务对同一行数据重复读取两次,但得到的结果内容不同。
如:一个事务执行过程中,另一事务提交并修改了当前事务正在读取的数据
问题关键点:同一个事务多次「读条件相同」的数据,其他事务还可以「修改该条件下」的数据。
3.4.幻读
幻读是同一个事务的相同的两次查询的结果数不一致。
如:一个事务执行过程中,另一个事务新增或删除了数据,导致两次相同的查询结果条数不同。
问题关键点:同一个事务多次「读条件相同的数据」,其他事务还可以「新增或删除该条件下」的数据。
❝解决问题
这篇关于数据库事务的四大特性和隔离级别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现