长者说事务很重要

本文解释了事务的概念,强调了其在数据一致性与完整性的关键作用。详细介绍了MySQL通过redolog、undolog和锁系统实现事务的方式,以及Spring框架中事务的简化处理。还阐述了事务的四个特性:原子性、一致性、隔离性和持久性。
摘要由CSDN通过智能技术生成

什么是事务?

  • 事务(Transaction)是指作为单个逻辑工作单元执行的一系列操作。这些操作要么全部成功执行,要么全部失败。

为什么需要事务?

  • 保证数据的一致性和完整性。例如,就像银行转账,张三给李四转账,只有当张三的钱转走了,并且李四账户的钱收到了之后才会事务提交,否则事务会回滚到转账前的状态,保证数据的一致性,保证数据不会出错。

如何实现事务?

  • MySQL的事务是怎么实现的?
    • MySQL的事务实现是通过存储引擎层的redo log(重做日志)、undo log(回滚日志)和锁系统来保证的。

redo log(重做日志): 用于确保事务的持久性。redo log是物理日志,记录的是数据页的物理修改。当事务对数据进行修改时,InnoDB会先写入redo log,并更新内存,这样即使数据库崩溃,MySQL也可以通过redo log恢复数据。

undo log(回滚日志): 用于保证事务的原子性和一致性。undo log记录了数据的旧版本,可以用来回滚事务。

锁系统: 用于保证事务的隔离性。InnoDB锁是行级锁,对影响的数据加锁,保证事务在并发环境下的隔离性。事务开始时,会先写入redo log,然后在事务提交时,写入binlog(MySQL的二进制日志),确保事务的持久性和数据的复制一致性。

  • Spring 的事务是怎么实现的?
    1. @Transactional项目只要整合了JDBC等数据源后,不需要导入额外的包。在接口、接口方法、类以及类方法上添加 @Transactional 即可。

事务的特性?

  1. 原子性(Atomicity)[ˌætəˈmɪsəti]:事务是一个不可分割的工作单位,必须作为一个整体执行。如果事务中的任何操作失败,整个事务会被回滚到开始前的状态,仿佛事务从未执行过一样。
  2. 一致性(Consistency)[kənˈsɪstənsi]:事务的执行应保持数据库的一致性状态。这意味着在事务开始之前和结束之后,数据库的完整性不应被破坏。所有写入的数据必须符合预设的规则,确保数据的准确性和一致性。
  3. 隔离性(Isolation):允许多个事务并发执行,同时保持数据的一致性。隔离性可以防止事务在并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同的级别,如读未提交、读提交、可重复读和串行化。
  4. 持久性(Durability)[ˌdjʊərəˈbɪlɪti]:一旦事务提交,对数据库的修改就是永久性的,即使系统发生故障也不会丢失。这保证了事务一旦完成,其效果是持久的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值