彻底搞懂事务以及事务的隔离级别

事务是什么?

就这个问题,官方给出的解释长篇大论,当初学的时候看的也很懵逼,我就不去copy官方解释了,下面是我的个人理解:

直接从事务的特性去解释可能比较直观

事务的ACID
原子性一个事务也就是一组sql语句,我们把它看成一个不能在分的个体,(什么东西不能拆分,那就是原子,其实也很好理解)要么同时成功,要么同时失败;
一致性数据再更改前后,数据都是一样的
隔离性事务与事务之间是相互独立的,数据要是隔离的,这里就有点类似于java里面的多线程,一个线程看成一个事务,他们的共同变量就类似与数据库里的表。
持久性就是每次事务完成以后都应该被持久化到硬盘上面

 

第二问题,是针对于事务的隔离性而言的,事务的隔离级别?

要搞清楚这个,首先要了解,多个事务同事执行时会出现哪几种问题,就类似与java多线程并发去访问同一个静态变量一样,

第一个问题,脏读,什么事脏读呢?

就是有AB两个事务同时在执行,A事务读取到了B事务没有提交数据;

例子:

用户表

CREATE TABLE `user` (
                        `userId` int NOT NULL  COMMENT '用户id',
                        'userName` varchar(20)  COMMENT '用户名称',
                        `Money` int DEFAULT NULL COMMENT '用户金额',
                         PRIMARY KEY (`userId`)
                        ) ;

插入两条记录作为测试

insert into user values(1,'张三',1000),(2,'李四',1000);

模拟一下脏读情况

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值