当前位置: 首页 > biancheng >正文

MySQL事务的理解

什么是事务 

事务是是数据库操作的最小的单元,它包含了一个或者多个操作命令,这些命令作为一个整体来执

行,要么一起成功要么一起失败,事务是不可在分的一个整体的操作集合。

事务具备的四大特性

  • 原子性:事务是一个不可分割的整体,要么一起成功,要么一起失败。
  • 一致性:事务的结果要使数据库从一个一致状态变为另一个一致状态。
  • 隔离性:一个事务的操作不能干扰其他事务的执行,即一个事务的操作及其使用得到数据对其它并发操作是隔离的。
  • 持久性:即一个事务一旦提交它对数据库的影响是持久的,后续的操作不应该对其结果造成影响。

数据库并发事务可能造成的影响:

  • 脏读:当一个事务对数据进行修改但是还未提交,这时有另一个事务进行操作,读取到了这个数据并且还是用了这个数据。
  • 不可重复读:一个事务对数据进行了两次连续的读取,但是在两次读取操作之间,有一个事务对数据进行了修改,造成了两次数据的不一致。
  • 幻读:一个事务要读取某一范围内的数据,这时一个事务又插入了几条新的数据进来,当第一事务再次读取时会发现这些新加入的数据,就好像发生了幻觉一样。
  • 丢失修改:一个事务对某一个数据进行了修改,这时另一个数据也对同一个数据进行了修改,第一个事务的修改的结果就丢失了。

 不可重复读和幻读类似,但是不可重复读是其他事务对数据进行修改造成的,幻读是其他事务对

数据进行了删除或者插入造成的。

为了解决事务并发造成的问题,又有了事务隔离级别

事务的隔离级别:

  • 读未提交:是最低的隔离级别,允许读取到未提交的数据,可导致脏读、幻读、不可重复读
  • 读已提交:允许读取到已提交的数据,是大多数数据库的默认隔离级别,可导致幻读、不可重复读
  • 可重复读:对同一数据读取的结果一致,是MySQL默认隔离级别。可以通过行级锁来实现该隔离级别。
  • 串行化:是最高的隔离级别,让事务挨个逐个的执行,就不会导致任何问题的发生。

 

 

相关文章:

  • 牛客练习赛#84 F 莫比乌斯反演+杜教筛+技巧+斐波那契数列和gcd的结论+矩阵快速幂
  • ZZNUOJ_用C语言编写程序实现1342:支配值数目(附完整源码)
  • java毕业设计后勤管理系统餐饮评价监督系统(附源码、数据库)
  • 前端基础学习笔记
  • 【TS】联合类型--类型断言--类型推断
  • 谈笑风声的秘密
  • QT影城网上售票系统
  • NetCDF数据在ArcMap中的使用
  • 打怪升级(考验思路)
  • 持续精进,改变自己