浅谈关于事务的知识

同学小H闲来无事,拿起手机,找到列表里最帅的人,进行聊天。
浅谈关于事务的知识

小H:在吗?

新白:在

小H:这几天天气真热啊

新白:是啊,夜晚也有蚊子了,脑瓜子嗡嗡的。

小H:… …

浅谈关于事务的知识
新白:… …
浅谈关于事务的知识

小H:前面聊了这么多,我想起来一个事,你了解事务吗?

新白:

浅谈关于事务的知识
恕我直言,不了解。

小H:咱们之前不是学过MySQL事务吗?

新白:浅谈关于事务的知识

小H:首先呢,通常数据库事务具备四大特性:ACID

新白:嗯嗯,那ACID是啥?

小H:别急,听我慢慢道来
A(Atomicity):原子性,事务是一个原子操作单元,其对数据的修改,要么一次性都成功,要么全部失败回滚。只有当事务中的部分都成功执行了,才将事务写入磁盘并是变化永久化。
C(Consistent):一致性,数据保持一致,要么都成功,要么都不成功。
I(Isolation):隔离性,当多个事务操作数据库中同一个记录或多个记录时,对事务进行隔离来进行有序执行。
D(Dirty Reads):脏读,脏读就是指事务A读取到事务B修改单未提交的事务数据。
事务是并发控制的基本单位。

新白:哦哦,那事务就是操作系列,这些操作要么执行要么不执行,事务是不可分割的工作单位。

小H:对,事务是数据库维护数据一致性的单位,在每个事务结束时,都能保持事务的一致性。我再说说不可重复读和幻读。

新白:好。

小H:不可重复读就是事务A读取到事务B已经提交事务的数据,导致两次读取的数据信息不一致。比如说,当你准备好钱,想买一双心心念念的球鞋时,然后付款发现余额不足,原来是你女朋友在你付款之前去银行把钱取出来了,这时候你的查询就是显示余额不足。这就是不可重复读。

新白:这样啊,那下次买东西是要趁早。

小H:扯远了啊,再说说幻读,幻读就是指当用户读取某一范围的数据行时,另一事务又在该范围内插入新行,当用户再读取该范围的数据行时,会发现新的“幻影行”。
浅谈关于事务的知识

新白:那怎么解决呢?

小H:将两行记录间的空隙加上锁,阻止新纪录的插入,这个锁叫作间隙锁,具体我们之后学。

新白:那好吧,向大佬学习。
浅谈关于事务的知识

小H:称不上大佬,知识还很少,这一块也不是很熟,,努力学好。