关于数据库事务的学习笔记

事务指的是数据库事务,事务指的是一个作为单个工作单元执行的一系列操作,它遵循ACID属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。事务确保了即使在系统故障的情况下,数据库操作要么完全完成,要么完全不发生,从而保证数据的完整性和一致性。

2023/11/27

1.数据操作的几大问题

        脏读:脏读发生在一个事务读取了另一个事务未提交的数据。

        不可重复读:不可重复读是指在同一个事务内,多次读取同一数据集合时,由于其他事务的修改,后续的读取结果与前面的不一致。

        幻读:幻读类似于不可重复读,但它涉及到新增或删除操作,而不是更新操作。幻读发生在一个事务读取了一系列记录后,另一个并发事务插入或删除了一些记录,导致第一个事务在再次读取这个系列时,发现了之前不存在的“幻影”数据。

当我们在JAVA类或方法中开启@Transactional注解,我们的数据操作要么全部完成,要么全部回滚,保证事务的原子性和一致性

2.数据库事务管理的隔离级别

  • 数据库的四种标准隔离级别包括:

  • 读未提交(Read Uncommitted)

    • 最低的隔离级别。
    • 允许事务读取尚未提交的更改,可能导致脏读。
    • 因为事务可能回滚,所以可能读到假数据
    • 锁:没有
  • 读已提交(Read Committed)

    • 允许一事务读取另一事务已提交的更改。
    • 防止脏读,但不可重复读和幻读仍可能发生。
    • 锁:设置共享锁(读锁)来防止别人读未提交的数据,读完之后放锁
  • 可重复读(Repeatable Read)

    • 确保在事务内多次读取同一数据的结果是一致的。
    • 防止脏读和不可重复读,但幻读可能发生。
    • 总结:在单个事务中读取的数据是一致的,不受并发操作的影响
    • 锁:长期共享锁(读锁),事务结束放锁
  • 串行化(Serializable)

    • 最高的隔离级别。
    • 完全隔离事务,防止脏读、不可重复读和幻读,但可能导致性能显著下降。
    • 事务之间顺序执行
    • 锁:读锁+写锁

在不开启事务的情况下MySQL 默认为 Repeatable Read。

当我们使用默认的@Transactional注解时,mysql的事务管理默认也是Repeatable Read。

如果要更改事务的隔离级别,可以通过注解指定的方式修改

@Transactional(isolation = Isolation.Serializable)

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 数据库系统工程师笔记csdn是一篇关于数据库系统工程师学习笔记的文章。在这篇文章中,作者通过分享自己的学习笔记,为想要从事数据库系统工程师工作的人提供了有用的参考和指导。 文章中首先介绍了数据库系统工程师的职责,包括设计、开发、测试、维护和优化数据库系统,同时需要具备扎实的数据库原理和编程能力。作者建议想要成为一名数据库系统工程师的人,应该首先学习数据库的基本概念和 SQL 命令,同时还要了解各种数据库管理系统的操作和配置。 接着,作者介绍了数据库设计的基本步骤和原则,包括需求分析、概念设计、逻辑设计和物理设计等方面。这些步骤都非常重要,应该在设计数据库系统之前认真考虑。 最后,作者分享了自己在学习数据库系统工程师方面的心得和体会,强调了学习的重要性和不断提高自己的必要性。他建议大家在学习过程中要注重实践和思考,通过参与实际项目来提高自己的技能和经验。 总之,数据库系统工程师笔记csdn是一篇有价值的学习笔记,为想要成为一名数据库系统工程师的人提供了很好的指导和建议。希望更多的人可以从中获得启发,不断提高自己的技能和水平。 ### 回答2: 数据库系统工程师是一个高端技术岗位,主要负责设计和维护复杂的数据库系统。作为一名数据库系统工程师,需要具备深厚的计算机理论知识和丰富的实践经验,掌握多种数据库系统的管理和操作技术,以及熟练应对各种异常情况和技术挑战的能力。 在这个领域里,csdn的笔记内容十分丰富,包括了基础知识、应用实践、数据库系统架构设计、性能优化、数据安全等多个方面。这些笔记内容不仅包含了数据库的基础知识,还介绍了很多数据库系统性能调优和安全问题的解决方案,能够帮助数据库系统工程师更好地解决实际问题,提高工作效率。同时,笔记中有许多实用的案例,可以让数据库系统工程师更好地理解和掌握数据库系统的各种技术。 除了csdn的笔记外,数据库系统工程师还需要不断学习和探索新的数据库技术,通过阅读相关书籍和参加各种技术交流会议,拓展自己的视野和技能。只有不断学习和提高,才能在这个竞争激烈的领域里保持竞争力。 ### 回答3: 数据库系统工程师是负责设计、开发和维护数据库系统的专业技术人员。在现代信息化时代,全球各行各业都离不开数据库系统,这就需要数据库系统工程师掌握一定的技术,从而保证各种业务得以正常运行和发展。 CSND是一个专注于IT技术交流的平台,是大部分IT技术爱好者和从业人员的必备之地。在这个平台上,数据库系统工程师可以找到大量的学习资源和同行的交流,提高自己的技能水平。比如,他们可以了解数据库系统的基本概念、数据结构、SQL语言、数据库事务、索引优化和数据备份等技术,从而应对各种复杂的业务需求。 此外,数据库系统工程师还应该关注行业的大趋势,不断更新自己的知识储备。比如,随着大数据和云计算技术的快速发展,数据库系统工程师需要掌握分布式数据库、NoSQL等新技术,以适应业务的巨大变革。 总之,作为数据库系统工程师,不仅需要掌握实用技术,更要时刻关注技术的发展趋势和行业的变化,保持敏锐的洞察力和学习能力。而在CSND这个优秀的技术交流平台上,数据库系统工程师可以获得更多的机会,拓展自己的思路和视野,向自己的目标不断前进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值