什么是mysql事务?事物的特性是什么?

383 阅读2分钟

什么是事务:

  • 是数据库操作的最小单元,那什么是最小单元。就是事务中的操作不能再分割,作为一个整体而存在的。要么同时成功,要么就同时失败。

事物的特性:

事物的特性可是高频面试点。ACID相比大家都知道意思。

  • 原子性(A):这个好理解。事务成功同时成功或者同时失败。
  • 一致性(C):事务的执行结果必须使数据库从一个一致性状态变到另一个一致性状态。
  • 隔离性(I):一个事务的执行不能受到其他事务的干扰。
  • 持久性(D):一个事务一旦提交,它对数据库中的数据的改变就是永久性的。已经写入磁盘中。当出现异常,不会影响其结果。

很多同学对于原子性,隔离性,持久性。我相信都能很好的理解。对于一致性可能就不怎么会理解。 其实大家往往把原子性和一致性俩做对比。其实二者压根不是同一level上的。没有去比的必要。 至于为什么,是因为无论是原子性,还是隔离性,还是持久性都是服务于一致性的。 简单来说就是 他们都是为了保证一致性而存在的。

我们着重来说说什么是一致性。一致性就是说 数据库要么保持执行事务前的状态,要么就是事务执行后的状态,不会存在什么中间状态。可能会有同学问了,这不是原子性吗。这也就是为什么大家喜欢把二者进行比较的原因了。 我举个例子,经典转账问题。 张三有1000元,现在转给李四100。李四也有1000,现在将收到转账的100。这个是一个事物的操作。 一致性呢就是指数据库要么两个都是1000这种状态,要么就是张三有900,李四有1100这种状态。那么如何实现呢。那么原子性的作用就体现出来了。他就会在事务执行过程中把第一种状态执行到第二种状态。如果中途发生异常,那么就会回滚会第一状态,也就是都是1000元的状态。这也是为什么 原子性保证了一致性。 正式因为原子性的同时成功同时失败,才有的一致性。

相信大家看到这儿对什么是事务和事物的特性有了更深的理解了吧