事务四大特性如何保证

事务

1. 事务的基本概念

数据库事务是构成单一逻辑工作单元的操作集合

事务是一组操作的结合,是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销请求,即这些操作要么同时成功,要么同时失败

begin ; start transaction;		-- 开启事务
update account set money = money + 100 where name = '张三'commit;		-- 提交
rollback;   -- 回滚

  1. 数据库事务可以包含一个或多个数据库操作,但是这些操作构成一个逻辑上的整体。
  2. 构成逻辑整体的这些数据库操作,要么全部执行,要么全部不执行。
  3. 构成事务的所有操作,要么全都对数据库产生影响,要么全都不产生影响。
  4. 在数据库出现故障时依然成立。

2. 事务的四大特性

  • A : 原子性

事务是不可分割的最小操作单元,要么全部执行成功,要么全部失败。

  • C :一致性

事务完成时,必须使所有的数据都保持一致状态,即数据库从一个一致状态到另一个一致状态。

  • 一致性状态满足数据的完整性约束,系统的状态反应数据库本应描述的现实世界的真实状态,比如转账前后两个账户的总金额不变。
  • I :隔离性

数据库系统需要提供隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。假如同时有多个事务并发执行,执行的结果应当同顺序执行一样。

  • D : 持久性

事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

3. MySQL四大特性如何保证

  1. 原子性:如果事务中所有的操作均成功,那么会将表信息更改;如果事务中至少有一条操作不成功,在没有提交事务之前,mysql会先将数据更新到undo log中,假设最终因为某条操作不成功而发生了事务的回滚,会从undo log中取出数据对数据库中的数据进行回退。
  • undo log日志:撤销回退日志,主要用来存储数据库更新之前的数据,用作备份
  1. 一致性: 事务的一致性可能遭到的破坏主要有两方面

    • 事务的并发执行
    • 事务故障或系统故障

    解决方法是使用并发控制技术和日志恢复技术。

  1. 隔离性:并发控制技术(乐观锁,悲观锁)
    每一行记录数据都有多个版本的快照数据,这些数据都存放在undo log中

    当一个事务读取正在更新或删除的数据时,会读取到该数据的快照版本。

  1. 持久性:由于日志恢复技术可以在数据库发生崩溃时数据不会丢失,保证了事务的完整性
    innodb中的redo log可以保证持久性,MySQL先将磁盘上的数据加载到内存中,在内存中对数据进行修改,再写回磁盘上,如果此时宕机,内存中的数据就会丢失

使用redo log来解决此问题,在对数据库中的数据进行修改时,不仅会在内存中操作,还会记录在redo log中,当数据库内存中的数据丢失时,会将redo log中的内容恢复到数据库中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值