面试不知道如何回答这六大知识点,你还敢说熟悉MySQL?

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

用知识改变命运,让我们的家人过上更好的生活

相关文章

sql语句的书写顺序以及执行顺序

20道你必须要背会的微服务面试题,面试一定会被问到

在这里插入图片描述

文章目录

      • 一、事务
    • 1. 什么是事务
  • 2. 事务的四大特性

  • 3. 事务的并发问题

    • ① 事务并发问题什么时候发生?
  • ② 事务的并发问题有哪些?

  • ③ 如何避免事务的并发问题?

  • 二、索引

    • 1. 什么是索引
  • 2. 索引的优缺点

  • 2. 索引的设计原则

  • 三、数据库设计三大范式

    • 1. 第一范式
  • 2. 第二范式

  • 3. 第三范式

  • 四、MySQL的主从复制

    • 1. 概念
  • 2. 原理

  • 3. 主从复制用途

  • 五、MySQL中的锁

    • 1. 为什么要加锁
  • 2. 锁的分类

  • 六、如何做 MySQL的性能优化

一、事务


1. 什么是事务

MySQL事务是一组sql语句或一个独立运行的工作单元。这个工作单元要么全部执行,要么全部不执行。

2. 事务的四大特性

原子性:一个事务不可再分割,事务中的所有操作,要么全部完成,要么全部不完成。

一致性:一个事务执行会使数据从一个一致状态切换到另外一个一致状态。也就是说,在事务开始之前和事务结束以后,数据库的完整性没有被破坏。

隔离性:一个事务所做的修改在最终提交之前,对其它事务是不可见的。也就是说一个事务的执行不会受到其它事务的干扰。

持久性:一个事务一旦提交以后,对数据的修改就会永久的保存到数据库中,即便系统故障也不会丢失。

3. 事务的并发问题
① 事务并发问题什么时候发生?

当多个事务同时操作同一个数据库的相同数据时,就会发生并发问题。

② 事务的并发问题有哪些?

脏读:对于两个事务T1、T2, T1 读取了已经被T2 更新但还没有被提交的数据。如果事务T2进行了回滚, T1读取到的数据就是临时且无效的。

不可重复读:对于两个事务T1、T2, T1 读取了一个数据, 然后 T2 更新了该数据。如果T1再次读取同一个数据, 值就不相同了。

幻读:对于两个事务T1、T2, T1 从一个表中读取了一个数据, 然后T2 在该表中插入了一些新的行。如果T1 再次读取同一个表, 就会多出几行。

③ 如何避免事务的并发问题?

通过设置事务的隔离级别进行避免事务的并发问题。事务有以下四个隔离级别:

读未提交(read-uncommitted)

读已提交(read-committed) 可以避免脏读

可重复读(repeatable-read) 可以避免脏读、不可重复读和一部分幻读

串行化(serializable) 可以避免脏读、不可重复读和幻读

| 事务隔离级别 | 脏读 | 不可重复读 | 幻读 |

| — | — | — | — |

| 读未提交(read-uncommitted) | 是 | 是 | 是 |

| 读已提交(read-committed) | 否 | 是 | 是 |

| 可重复读(repeatable-read) | 否 | 否 | 是 |

| 串行化(serializable) | 否 | 否 | 否 |

MySQL数据库(InnoDB引擎)默认使用的隔离级别是:可重复读( Repeatable read );

隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。

二、索引


1. 什么是索引

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可以提高数据库中特定数据的查询速度

2. 索引的优缺点

优点

① 使用索引可以大大加快数据的查询速度

② 通过创建唯一索引,可以保证数据库表中每一行数据的唯一性。

③ 在使用分组和排序子句进行数据查询时,使用索引可以减少在查询中分组和排序的时间。

缺点

① 创建索引和维护索引需要时间,随着数据量的增加所需要时间也会增加。

② 当对表中的数据进行增加、删除和修改的时候,索引也要动态地维护,这样就降低了数据的维护速度。

③ 索引需要占磁盘空间,除了数据表占数据空间之外,每一个索引还要占定的物理空间,如果有大量的索引,索引文件可能比数据文件更快达到最大文件尺寸

2. 索引的设计原则

索引设计不合理或者缺少索引都会对数据库和应用程序的性能造成障碍。高效的索引对于获得良好的性能非常重要。设计索引时,应该考虑以下准则:

① 索引并非越多越好,一个表中如有大量的索引,不仅占用磁盘空间,而且会影响 INSERT、 DELETE、UPDATES等语句的性能,因为当表中的数据更改的同时索引也会进行调整和更新。

② 避免对经常更新的表进行过多的索引,并且索引中的列尽可能少。而对经常用于查询的字段应该创建索引,但要避免添加不必要的字段。

③ 数据量小的表最好不要使用索引,由于数据较少,查询花费的时间可能比遍历索引的时间还要短,索引可能不会产生优化效果。

④ 在条件表达式中经常用到的不同值较多的列上建立索引,在不同值很少的列上不要建立索引。比如在学生表的“性別”字段上只有“男”与“女”两个不同值,因此就无须建立索引。如果建立索引不但不会提高查询效率,反而会严重降低数据更新速度。

⑤ 当唯一性是某种数据本身的特征时,指定唯一索引。使用唯一索引副需能确保定义的列的数据完整性,以提高查询速度。

⑥ 在频繁进行排序或分组(即进行group by或 order by操作)的列上建立索引,如果待排序的列有多个,可以在这些列上建立组合索引。

三、数据库设计三大范式


1. 第一范式

确保每列保持原子性

第一范式是最基本的范式。要求数据库表的每一列都是不可分割的原子数据项。

| 学号 | 姓名 | 课程号 | 课程名 | 学分 | 成绩 |

| — | — | — | — | — | — |

| 001 | 扬帆向海 | 101 | Java | 4 | 80 |

| 002 | 起帆朝阳 | 102 | 数据结构 | 6 | 90 |

表一

2. 第二范式

确保表中的每列都和主键相关

第二范式在第一范式的基础上,第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

| 学号 | 姓名 | 课程号 | 成绩 |

| — | — | — | — |

| 001 | 扬帆向海 | 101 | 80 |

| 002 | 起帆朝阳 | 102 | 90 |

表二

| 课程号 | 课程名 | 学分 |

| — | — | — |

| 101 | Java | 4 |

| 102 | 数据结构 | 6 |

读者福利

由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

更多笔记分享

35K成功入职:蚂蚁金服面试Java后端经历!「含面试题+答案」

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
Y-1713378055454)]

[外链图片转存中…(img-QvL1yLP1-1713378055454)]

更多笔记分享

[外链图片转存中…(img-KQfavsul-1713378055455)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-7DCLPbu8-1713378055455)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值