[MySQL]事务和ACID原则

来源:互联网 发布:java socket编程 代码 编辑:程序博客网 时间:2024/06/04 01:33

【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原则了,你记住了吗?没记住的话就赶快再看一遍吧!~~

本文转自:https://www.boboidea.com/blog/2

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子的执行力差怎么办 怀孕三个月不想要孩子怎么办 生完孩子老是掉头发怎么办 5岁半宝宝有狐臭怎么办? 4岁宝宝脾气倔怎么办 小孩子摔到后脑勺吐了怎么办 学生报告册丢了怎么办 错过宝宝语言敏感期怎么办 父亲骂我很难听怎么办 90后父母催婚怎么办 和隔壁邻居吵架了怎么办 教师上课期间孩子出问题责任怎么办 孩子一考试妈妈就焦虑怎么办 妈妈爱发脾气孩子也发脾气怎么办 孩子对家人有抵触情绪怎么办 孩子因为没耐心哭闹怎么办 宝宝哭闹真是没耐心怎么办 对自己孩子没耐心怎么办 跳了把腰伤了怎么办 爸爸对妈妈家暴怎么办 逆反心强23岁怎么办 觉得自己心理有问题怎么办 小孩心理脆弱过于敏感怎么办? 父母老是骂打我怎么办 爸妈打架闹离婚怎么办 夫妻离婚后孩子户口怎么办 离婚后孩子户口怎么办落户 50岁父母要离婚怎么办 父母离婚小孩没有出生证该怎么办 离婚。父母一直在劝说该怎么办 老婆跟人跑了怎么办啊 父母50了要离婚怎么办 父母吵架了我该怎么办 父母看孩子总是吵架怎么办 20岁父母离婚我怎么办 碰到没素质的人怎么办 父母抛弃了我该怎么办 父母说家里没钱困难怎么办 遇到素质低的老婆怎么办 孩子考试心里素质差怎么办 5岁儿童脾气不好怎么办