最新MySQL数据库 --- 事务面试重点,java基础面试题

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

部分内容截图:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

一致性(Consistency):


在事务执行操作前后,数据库的完整性不会因为这些操作而破坏,也就是说,事务执行前后,数据始终处于一种合法的状态.

例如: 小明本来只有1000 元,想要去转1500元给小红,是不合法.

持久性(Durability):


当事务执行完毕了之后,他的操作对于数据的修改会一直持续下去.

例如: 事务完成了对数据的修改,上传到了磁盘上(提交成功后),这个时候,发生故障也不会让数据库中的数据被破坏

隔离性(isolation):


数据库允许多个事务同时并发执行修改和读取操作.隔离性就可用防止并发执行修改和删除的时候造成数据不一致的情况.

5. 脏读

=========================================================================

脏读就是一个事务A在执行修改数据的操作,此时事务A还没有完成修改操作,这个时候有另外一个事务B读取了此时的内容.此时 事务B的读操作就是脏读,

因为此时此刻的事务A还没有完成修改操作,随时都可能再次修改刚刚事务B读取到的数据.

例子:


例如小明向小红转账示例.

本来小明账户余额是1000.小红账户余额是500

此时事务A执行操作 : 小明向小红转账500元

此时事务B执行操作: 读取小明账户余额.

当事务A执行了 小明账户-500的操作,还没执行小红账户+500的操作的时候,事务B读取了小明账户余额 500.

但是是事务A此时发生错误,发生了回滚(rollback),小明账户又变成了1000,可是事务B读取到的却是500.

图解时间线:


在这里插入图片描述

解决办法:


写操作加锁,当一个事务在执行写操作的时候,其他事务没办法执行读操作,当事务执行完写操作,释放了锁,其他事务才能读.

6. 不可重复读

============================================================================

不可重复读就是,事务A在执行过程中,多次读取的数据不相同,就叫不可重复读.

例子:


小明想去查自己的成绩并且看看别人成绩,老师上传成绩和检查成绩.

事务A就执行: 读小明成绩 -> 看看别人成绩 -> 再次查看自己的成绩

事务B就执行: 上传成绩 -> 发现错误成绩修改成绩

当事务B执行写操作的时候,事务A想去读操作发现写操作加锁了,没办法读,只有等待写操作完成,当事务B写操作完成后,事务A第一次读操作,发现小明考了80分,第一次读后,整个事务A还没结束,事务B进行了修改操作,将小明成绩修改成了60分,此时事务A再去读的时候,发现小明只有60分,前后数据不一致,就是不可重复读.

图解时间线:


在这里插入图片描述

解决办法:


读操作也加锁,当事务A在读的时候,事务B没办法修改操作,只有等事务A执行完释放锁之后,事务B才能进行操作.

7. 幻读

=========================================================================

幻读就是,事务A在执行过程中,多次读取的结果集不一样(数据总量不一样)

虽然读操作和写操作都加锁了,但是可以新增.

例子:


小明查看暑期作业有多少,老师上传暑期作业.

事务A 小明查看暑期作业有多少 -> 小明进行其他操作 -> 小明再次查看暑期作业有多少

事务B 老师添加暑期作业.

当事务A去执行的时候,第一次读操作,发现暑期作业只有10页.然后小明进行了其他的操作,此时事务B进行添加操作,又增加了90页.

当事务B再去查看的时候,发现作业页数变成了100页.

图解时间线:


在这里插入图片描述

解决办法:


彻底让事务之间彻底的 串行化, 就是当事务A在执行的过程中,事务B什么也不能干,只能挂机等待.

8. MySQL 的隔离级别

==================================================================================

1. read uncommitted


允许读取未提交的数据

注: 隔离性最低,并发性最高,存在脏读的问题

2. read committed


只允许读取已提交的数据,相当于对写操作加锁.

最后

针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。

最新整理面试题
在这里插入图片描述

上述的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题

最新整理电子书

在这里插入图片描述

最新整理大厂面试文档

在这里插入图片描述

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值