数据库的事务管理及特征

可能很多小伙伴都会好奇事务管理是什么?上篇讲了数据库的三大范式可以先了解一下

事务管理

事务是由N步数据库操作序列组成的逻辑执行单元,组成这组操作的各个单元要么全部成功,要么全部失败。即一组sql语句中哪怕有一条失败也会失败

举个例子:转账操作,一个账户减少钱,一个账户增加钱

默认情况下,MySQL的事务是自动提交的,也就是执行了增删改查操作之后,数据直接持久化到磁盘上,不能撤销

但是如果改为手动事务之后,更新过的数据,在没有使用commit提交时,可以通过rollback进行撤回

数据库事务的原理

start transaction / begin:开始事务

rollback:回滚事务

commit:提交事务

什么是数据库事务?

从开启到提交为一个事务

一个事务对应一组业务,一个事务中间可以有一条sql语句或者多条sql语句

当一个业务开始之前开启事务,当一个业务结束之后提交事务

例如刚刚转账案例:我们的需求是让一个账户减少钱的同时让另一个账户增加钱——可以写成一个事务

事务的特征:

原子性:

事务开始后,所有的操作要么全部做完,要么全部不做,不可能滞留在中间环节。

事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。

一致性:

事务开始前和结束后,数据库的数据完整性约束没有被破坏,事务前后操作数据是一致的,可以理解为能量守恒

例如:A向B转账,不可能A扣了钱,B却没有收到

隔离性:

一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰

例如:A正在从一张银行卡取钱,在A取钱的过程结束前,B不能向这张卡转账

注意:

两个事务之间是有隔离级别的,隔离级别的不同会导致出现不同的问题。

脏读    幻读     不可重复读

持久性:

指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的,并不会被回滚。接下来的其他操作或故障就不应该对其有影响。即使服务器系统崩溃或服务器宕机等故障。只要数据库重新启动,那么一定能够将其恢复到事务成功结束后的状态。

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

认真的小尹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值