MySQL45讲笔记——事务

事务

事务的隔离级别以及产生的问题

隔离级别
读未提交:指一个事务未提交时,他的变更能够被其他事务所读取到。
(脏读)
读已提交:指一个事务提交之后,别的事务才能看到他的变更。
(不可重复读)
可重复读:指一个事务执行过程中,数据总是和事务启动时的一致。
(幻读)
序列化:对同一行记录,读会加读锁,写会加写锁,后面的事务必须要等前面的事务执行完成才能执行。

mysql> create table T(c int) engine=InnoDB;
insert into T(c) values(1);

在这里插入图片描述
各隔离级别所对应数据:
       读未提交:V1=2,V2=2,V3=2
       读已提交:V1=1,V2=2,V3=2
       可重复读:V1=1,V2=1,V3=2
       序列化:将1改成2时阻塞。

Oracle默认隔离级别是读已提交。

隔离级别的实现

MySQL每条更新记录都会同事记录一条回滚操作,假设一个值由1逐次递加到4,那么在这条记录上就包含多条回滚日志,回滚日志保存到没有事务需要时才会删除(MVCC)。

长事务意味着在这个事务提交之前,在他之后产生的所有回滚日志都要记录在内,导致占用大量空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值