MySQL事务
前言
我是一个学习Java的小白,此系列为我的一个学习日常记录,在此记录分享一下。如果能帮助到您那就更好啦,让我们一起进步(摸鱼)吧。
、
一、事务是什么?
事务是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行;事务是一组不可再分割的操作集合(工作逻辑单元)
嗯,很好,每个字都认识,合在一起不知道讲了个啥,这是给我们小白看的吗?啥也不是,下课!
不知道这是不是每个小白第一次看的内心独白啊,反正是我的内心独白,当时就感觉我差不多改转行了,转啥都行,不要脑子就好。
这里呢,我还是得做一个翻译,毕竟得让我这种渣渣能看懂。
举个简单的例子:比如要购买一件商品:需要以下几步:
- 查看库存是否足够
- 扣库存
- 生成订单
- 收钱
那么可不可说我只收钱,不扣库存不发货呢?或者只发货不收钱呢?
显然是不行的吧。那么我们是不是就可以吧这4个步骤看成一个整体,一旦少了任何一步都无法完成购买一件商品这个动作呢?哦!原来这个是惊喜(事务)啊。现在再反过来看上面那一段专业术语是不是就可以理解,为什么事务是不可拆分的了吧。都不可拆分了当然就是最小的单位了。
二、事务的四大特性
1.原子性
原子性很好理解,都是原子了 ,就说明是最小单位了,无法拆分了
2.一致性
还是刚刚的例子,你购买商品的4个步骤,每一个步骤都得执行,保持一致,不能说我发货了你不给钱,或者你给了钱我不发货。不理解的话,我再举一个简单的例子:你给我转100万让我离开你女儿
结果你钱转了,我却没收到;或者我收到了但是您并没有扣钱。这都是不合理的吧。必须都保持数据一致,这就是一致性。
3.隔离性
事务的隔离性也叫隔离级别一共有4种。
- 读未提交
- 读已提交
- 可重复度
- 序列化
大概特性就是防止你转给我的一百万转个了隔壁杀猪的翩翩浊世佳公子。这里不做详细介绍,之后会专门写文章分享,嗯标题就叫小白学习日记02
4.持久性
持久性就像字面意思,会持久的存在,不会今天数据在,明天就不在了。
比如:我刚刚收到你转给我的100万,美滋滋去睡觉,结果停电了,我一看手机,刚刚到账的100万不翼而飞,竹篮打水一场空。让我这多姿多彩的人生瞬间规复平凡。