
MySQL事务和事务的ACID原则简介及简单生活案例!
#【MySQL事务&事务的ACID】
什么是事务?
书面解释:事务是一组原子性的SQL查询,或者说是一个独立的工作单元。事务中的所有操作要么全部执行成功,要么全部执行失败。
生活实例:LOL买皮肤。假设你有7000点券,一款皮肤6000点券,然后你点击了购买,皮肤到了你的账号,同时你的点券被减少了6000。
这个过程中全部过程需要统一执行结果,要么执行成功,要么执行失败!试想你在买皮肤的过程中,点券减少了6000,皮肤却没有到达你的账号,那你肯定是1万个不乐意。那假如你的点券没有减少,皮肤却到了你的账号,你当然是10万个乐意了,但是腾讯肯定不乐意了!所以说为了保证双方都开心,这个过程的执行结果必须要一致才行哈!
首先你的点券要被扣除,同时皮肤到你的账号中。假如这个过程中出了任何故障,你的点券都应该还是7000,而且皮肤不应该到达你的账号中。这就是一个原子性的操作了。
那OK,皮肤购买完了,点券也扣除了!~假如过两天你登陆你的账号,突然发现皮肤没了,你前两天购买的皮肤没有了~Oh,My God~心里1W个草泥马飞奔而过,接着你就气愤的去找客服去了!这种情况就是说你的这个事务没有做到一个数据保障。有可能是腾讯的数据库宕机了,数据丢失了,这种情况是不应该出现的!~~
通过以上实例,我们似乎能感觉到一个事务好像有那么一点特点,或者说它是有一定原则的。首先,从事务的介绍中,我们可以得到一个原子性(atomicity),理解就是要么全部执行成功,要么全部执行失败,否则就可能造成实例中的那种双方不开心。接着呢?我么能明显感觉到一种特性,就是一致性(consistency),这个怎么理解呢?你看啊,你账号中有7000点券,最后变成了1款价值6000点券的皮肤加上你账号中剩余的1000点券,即7000 = 一款皮肤(6000) + 1000,也就是价值上等价了,点券没有凭空消失,皮肤也没有凭空出现。在实例的最后展现的就是一个持久性(durability)原则,也就是说你的交易完成了,这个数据就应该永远存在,按理说不应该出现实例最后那种情况。还有一种原则就隔离性(isolation),这个体会应该不是很深刻,这个特性就是说,当你在购买的过程中,这时你的点券已经被扣除,但是皮肤还没有到你的账号,假设你在另一个地点还能登陆你的账号,并查看你的点券,通常情况你应该看到的还是7000点券。就是说,这个原子性的操作没有被全部执行完成并提交,这个原子性操作的结果对你来说通常是不可见的。为什么说是通常呢?这个就需要去看一下事务的隔离级别了!~~
好,最后我们再来回顾一下事务的原则:
- 原子性(atomicity)
- 一致性(consistency)
- 隔离性(isolation)
- 持久性(durability)
这就是ACID原则了,你记住了吗?没记住的话就赶快再看一遍吧!~~
Copyright © 2017 - 2025 boboidea.com All Rights Reserved 波波创意软件工作室 版权所有 【转载请注明出处】