java开发学生管理系统,看这篇足矣了!

20道常见MySQL数据库面试题+解析

  1. 事务四大特性(ACID)原子性、一致性、隔离性、持久性?

  2. 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?

  3. MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?

  4. MySQL的MyISAM与InnoDB两种存储引擎在,事务、锁级别,各自的适用场景?

  5. 查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序?

  6. 什么是临时表,临时表什么时候删除?

  7. MySQL B+Tree索引和Hash索引的区别?

  8. sql查询语句确定创建哪种类型的索引?如何优化查询?

  9. 聚集索引和非聚集索引区别?

  10. 有哪些锁(乐观锁悲观锁),select 时怎么加排它锁?

  11. 非关系型数据库和关系型数据库区别,优势比较?

  12. 数据库三范式,根据某个场景设计数据表?

  13. 数据库的读写分离、主从复制,主从复制分析的 7 个问题?

  14. 使用explain优化sql和索引?

  15. MySQL慢查询怎么解决?

  16. 什么是 内连接、外连接、交叉连接、笛卡尔积等?

  17. mysql都有什么锁,死锁判定原理和具体场景,死锁怎么解决?

  18. varchar和char的使用场景?

  19. mysql 高并发环境解决方案?

  20. 数据库崩溃时事务的恢复机制(REDO日志和UNDO日志)?

1、事务四大特性(ACID)原子性、一致性、隔离性、持久性?

原子性(Atomicity)

  • 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

一致性(Consistency)

  • 事务开始前和结束后,数据库的完整性约束没有被破坏。比如A向B转账,不可能A扣了钱,B却没收到

隔离性(Isolation)

  • 隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离

同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

关于事务的隔离性数据库提供了多种隔离级别,稍后会介绍到持久性(Durability)

  • 持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作

2、事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?

从理论上来说, 事务应该彼此完全隔离, 以避免并发事务所导致的问题,然而, 那样会对性能产生极大的影响, 因为事务必须按顺序运行, 在实际开发中, 为了提升性能, 事务会以较低的隔离级别运行, 事务的隔离级别可以通过隔离事务属性指定

2.1事务的并发问题

(1)脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

(2)不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致。

(3)幻读:幻读解决了不重复读,保证了同一个事务里,查询的结果都是事务开始时的状态(一致性)。

例如:事务T1对一个表中所有的行的某个数据项做了从“1”修改为“2”的操作 这时事务T2又对这个表中插入了一行数据项,而这个数据项的数值还是为“1”并且提交给数据库。 而操作事务T1的用户如果再查看刚刚修改的数据,会发现还有跟没有修改一样,其实这行是从事务T2中添加的,就好像产生幻觉一样,这就是发生了幻读。

小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表。

2.2事务的隔离级别

事务隔离级别

image

  • 读未提交:另一个事务修改了数据,但尚未提交,而本事务中的SELECT会读到这些未被提交的数据脏读

  • 不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果因此本事务先后两次读到的数据结果会不一致。

  • 可重复读:在同一个事务里,SELECT的结果是事务开始时时间点的状态,因此,同样的SELECT操作读到的结果会是一致的。但是,会有幻读现象

  • 串行化:最高的隔离级别,在这个隔离级别下,不会产生任何异常。并发的事务,就像事务是在一个个按照顺序执行一样

2.3 MySQL默认的事务隔离级别为repeatable-read

  • MySQL 支持 4 中事务隔离级别.

  • 事务的隔离级别要得到底层数据库引擎的支持, 而不是应用程序或者框架的支持.

  • Oracle 支持的 2 种事务隔离级别:READ_COMMITED , SERIALIZABLE

2.3补充

  1. SQL规范所规定的标准,不同的数据库具体的实现可能会有些差异

  2. MySQL中默认事务隔离级别是“可重复读”时并不会锁住读取到的行

  • 事务隔离级别未提交读时,写数据只会锁住相应的行。

  • 事务隔离级别为可重复读时,写数据会锁住整张表。

  • 事务隔离级别为串行化时,读写数据都会锁住整张表。

隔离级别越高越能保证数据的完整性和一致性,但是对并发性能的影响也越大,鱼和熊掌不可兼得啊。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为Read Committed,它能够避免脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、幻读这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。

image.png

21条MySQL性能调优经验

  1. 为查询缓存优化你的查询

  2. EXPLAIN你的SELECT查询

  3. 当只要一行数据时使用LIMIT 1

  4. 为搜索字段建索引

  5. 在Join表的时候使用相当类型的例,并将其索引

  6. 千万不要 ORDER BY RAND()

  7. 避免 SELECT *

  8. 永远为每张表设置一个 ID

  9. 使用 ENUM 而不是 VARCHAR

  10. 从 PROCEDURE ANALYSE() 取得建议

  11. 尽可能的使用 NOT NULL

  12. Prepared Statements

  13. 无缓冲的查询

  14. 把 IP 地址存成 UNSIGNED INT

  15. 固定长度的表会更快

  16. 垂直分割

  17. 拆分大的 DELETE 或 INSERT 语句

  18. 越小的列会越快

  19. 选择正确的存储引擎

  20. 使用一个对象关系映射器(Object Relational Mapper)

  21. 小心“永久链接”

image

最后

由于文案过于长,在此就不一一介绍了,这份Java后端架构进阶笔记内容包括:Java集合,JVM、Java并发、微服务、SpringNetty与 RPC 、网络、日志 、Zookeeper 、Kafka 、RabbitMQ 、Hbase 、MongoDB、Cassandra 、Java基础、负载均衡、数据库、一致性算法、Java算法、数据结构、分布式缓存等等知识详解。

image

本知识体系适合于所有Java程序员学习,关于以上目录中的知识点都有详细的讲解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。
有需要的朋友可以点击这里免费获取

image

解及介绍,掌握该知识点的所有内容对你会有一个质的提升,其中也总结了很多面试过程中遇到的题目以及有对应的视频解析总结。
有需要的朋友可以点击这里免费获取

[外链图片转存中…(img-Xdq7adtn-1624947168944)]

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385828.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java开发实战经典第二版百度网盘,灵魂拷问

一面(一个小时左右) 算法:写冒泡排序,问如何优化,简单讲了快排和堆排序的原理数据库:解释左连接数据库第一第二第三范式,数据库死锁linux:怎么查看内存;怎么查看进程&am…

php用户之间的数据,什么是位于用户与操作系统之间的一层数据管理软件

什么是位于用户与操作系统之间的一层数据管理软件?DBMS是位于用户与操作系统之间的一层数据管理软件。数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统…

java开发实战经典答案百度云,含面试题+答案

1、上下文切换 上下文定义 cpu发生进程或者线程切换时,所依赖的数据集合,比如一个函数有外部变量,函数运行时,必须获取外部变量,这些变量值的集合就是上下文。 引发问题 对于CPU密集型任务,多线程处理会…

java开发小程序好吗,看完必懂

1关于MySQL,面试官会问哪些问题? 第一个:MySQ性能优化最佳实践21个(有具体的解释)你知道哪些? 为查询缓存优化你的查询 EXPLAIN你的SELECT查询 当只要一行数据时使用LIMIT 1 为搜索字段建索引 在Join表…

java开发属于后端吗,值得一读!

1. 垃圾回收机制 Stop-the-World:   JVM由于要执行GC而停止了应用程序的执行称之为Stop-the-World,该情形会在任何一种GC算法中发生。当Stop-the-world发生时,除了GC所需的线程以外,所有线程都处于等待状态直到GC任务完成。事实…

java开发岗位招聘,吊打面试官

一.java基础面试知识点 java中和equals和hashCode的区别 int、char、long各占多少字节数 int与integer的区别 探探对java多态的理解 String、StringBuffer、StringBuilder区别 什么是内部类?内部类的作用 抽象类和接口区别 抽象类的意义 抽象类与接口的应用…

java开发工作找不到要放弃吗,年薪50W

1. Redis面试专题 绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知。这里以面试题的形式对 Redis 常见问题做一个总结,解决大家的知识盲点。 什么是Red…

linux 函数手册 在线,Linux系统API函数手册

Linux系统API函数手册 (34页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!11.90 积分(一)文件操作篇 1、creat(建立文件)头文件1 #include2 #include3 #include定义函数1 int creat(const char * pa…

java开发工具包的英文缩写,程序员翻身之路

基本概念面试题集( Spring 相关概念梳理) 谈谈对Spring loC的理解?谈谈对Spring Dl的理解?BeanFactory 接口和ApplicationContext接口不同点是什么?请介绍你熟悉的Spring 核心类,并说明有什么作用?介绍一下Spring的事务的了解?介绍—下…

java开发工程师学什么专业,Java核心知识点

应聘求职 每年这个时候,都是应届生求职以及在职人员跳槽的高峰期。对于即将成为程序员的应届毕业生们。在求职过程中怎样确定目标公司和目标职位,大家在求职过程中要注意哪些细节?这些都是大家所关心的话题。 ①应聘渠道: ⑴学校招聘会&a…

java开发工程师招聘软件,面试题附答案

蚂蚁金服一面(技术面) JVM 内存分哪几个区,每个区的作用是什么?JVM有哪些回收算法,对应的收集器有哪些? GC 的两种判定方法 ?CMS 收集器与 G1 收集器的特点。 hashmap源码问题 HashMap、HashMap如何保…

java高分面试指南:redis怎么保证高可用

缓存雪崩 缓存雪崩指的是Redis当中的大量缓存在同一时间全部失效,而假如恰巧这一段时间同时又有大量请求被发起,那么就会造成请求直接访问到数据库,可能会把数据库冲垮。 缓存雪崩一般形容的是缓存中没有而数据库中有的数据,而因…

linux文件系统只有几k,关于Linux文件系统的的简单理解和认识

关于Linux文件系统的的简单理解和认识关于文件系统的运作,这与操作系统带的档案数据有关。例如Linux操作系统的档案权限(rwx)与文件属性(拥有者,群组,时间参数等)。文件系统通常会将这两部分的数据分别存放在不同的区块,权限与属性…

Java高级工程师必备知识!java入门书籍pdf

美团技术一面20分钟 晚7点,因为想到下周一才面试,我刚准备出去打个羽毛球,北京的电话就来了。面试官各种抱歉,说开会拖延了。 1、自我介绍 说了很多遍了,很流畅捡重点介绍完。 2、问我数据结构算法好不好 挺好的&…

linux eclipse设置颜色,Linux Eclipse美化:解决工具栏过大和 Javadoc背景色修改

Eclipse 在Ubuntu 下总是感觉上面的工具栏感觉特别的大,控件之间的空隙非常的大,和在Windows 下的感觉非常的不一样(毕竟是刚刚从windows叛逃出来),其实也不光光是Eclipse 是这样,其他也软件也同样有这个问题。尝试过通过更换主题…

Java高级工程师面试实战,mysqlsettimeout

我听到的一些发声 你们赚的钱已经可以了: 我一个发小是做土木工程的,上海大学博士,参与很多著名建筑的工程,但是从薪资上看,还不如一些稍微像样的公司的6年多的高级开发。为什么?这就是行业的红利&#xf…

Java高级开发面试,java字符串拼接的方法

一面:70分钟 突击电话面试 正思考着项目功能模块,阿里面试官打来了电话,开始了阿里一面。 阿里面试官自我介绍,介绍了5分钟左右,部门的情况,主要的业务 提问开始 会哪些操作系统 Linux会一点说一下操作指…

Java高级开发面试,java泛型下界通配符

微服务是什么 微服务起源于2005年Peter Rodgers博士在云端运算博览会提出的微Web服务(Micro-Web-Service),根本思想类似于Unix的管道设计理念。2014年,由Martin Fowler 与 James Lewis共同提出了微服务的概念,定义了微服务架构风格是一种通过…

Java高级进阶学习资料!java开发环境的搭建是什么意思

1. static 和 final 的用法 static 的作用从三个方面来谈,分别是静态变量、静态方法、静态类。 静态变量:声明为 static 的静态变量实质上就是全局变量,当声明一个对象时,并不产生static 变量的拷贝,而是该类所有实例…

Java高级面试题!java小游戏制作视频

首先我们先来看看这份Spring源码分析笔记 Spring源码分类的一览无余,详细清晰明了!让你分分钟把握! Spring源码分析笔记手册内容,共七个部分 第一部分Spring概述 Spring 简介Spring 发展历程Spring 的优势Spring 的核⼼结构Sprin…