阿八博客
  • 100000+

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

MySQL学习笔记(二):InnoDB的事务管理(1)

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/grfx/253068.html

在MySQL中,Innodb是支持事务的存储引擎,我们先了解一下事务的概念。

事务的概念

事务是逻辑上的中一组操作,这些操作要么同时成功,要么同时失败。

事务的特性(ACID)

●原子性(Atomicity):事务是原子的,不可分割,事务中操作要么同时成功,要么同时失败。

● 一致性(Consistency):事务总是从一个一致性状态到另一个一致性状态。

● 隔离性(Isolation):一个事务不应受其他事务影响。

● 持久性(Durability):事务一旦提交,就应该持久化到数据库,即使数据库发生故障也不应对其产生影响。

用实例来理解事务

我们用最经典的银行转账实例来理解事务。

假如A从账户中转200元到B账户,我们先分解一下步骤,要网站这个转账,我们需要:

1. 检查A中是否有足够的钱(大于等于200元);

2. 扣除A账户200元;

3. B账户增加200元;

4. 转账完成;

我们先设想如果没有事务,一旦出错会怎样。如果在第三步中由于某些原因导致增加钱的操作失败,那么久意味着A账户200元不翼而飞了,对于用户来说这显然是不可接受的。

如果加上事务控制,就不会有这样的问题,在事务中,一组操作要么同时成功,要么同时失败,也就是说,如果在步骤三出现错误,那么步骤二也应该无效(事务会进行回滚),最终A账户不会被扣钱,B账户也不会加钱,转账失败。

我们再来看一下这个实例里体现的事务特性,步骤三失败,步骤二也会失败,体现事务的原子性;转账无论成功还是失败,前后总金额不变,体现了事务的一致性;至于隔离性,这个会受数据库隔离级别的影响(后续会介绍);持久性体现在开启事务的情况下,如果所有步骤都成功完成,一旦该事务提交(未提交不会实际更改数据库),就会持久化到数据库,不受任何影响。

原创作者: 何鑫

尊重原创,人人有责

来源:发布于阿八个人博客,内容来源于网络,如有错误评论区内纠正,学习使人快乐(*^▽^*)

相关文章