java面试一日一题:请讲下对mysql的理解
问题:请讲下对mysql的理解
分析:该问题主要考察对mysql的理解,基本概念及sql的执行流程
回答要点:
主要从以下几点去考虑,
1、mysql的整体架构?
2、mysql中每一个组件的作用?
3、对mysql的自己的见解?
从网上拷贝一张图,来说明mysql的整体架构
个人认为这张图画的很好,
连接器
一条sql经过网络传输到达mysql服务器,第一个要经过的就是连接器,负责连接的建立及权限的判定,例如经常看到的下面的错误,
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
该错误就是经过连接器的处理,密码不正确而返回的。
查询缓存
查询缓存,刚接触mysql的可能有疑惑,mysql怎么会有查询缓存,其实mysql就和平时开发的后端系统是一样的,它也是一个系统,平时如果一个查询较多的系统,发现查询慢了,经常采取的一种方式就是增加一个缓存吧,这里也是一样的,只不过这里mysql已经为我们做好了,就是来存储查询到的数据,缓存key是sql语句,缓存值是查询到的结果,关于查询缓存的具体介绍可以参照下方的链接:https://www.cnblogs.com/coshaho/p/7192343.html
分析器
分析器说的通俗点就是客户端发送来的一条sql,分析要分析这条sql是否正确,是否符合sql的语法,如果不符合就直接返回报错了。
优化器
经过了分析器处理的sql这时就是一条可执行的sql,但是mysql本身内置了一系列的逻辑,就是它会用它认为执行效率最高的方式去执行,并且生成执行计划(可通过explain sql语句查看),包括如何选择索引,是否会涉及全表扫描;
执行器
执行器就是真正执行sql的组件,并且把执行的结果返回
上面提到的几大组件,统一属于server层,server层之下是存储引擎层,mysql的存储引擎常见的有myIsam、innodb,不同的引擎对应的server层是一致的,也就是server层提供了引擎层的统一抽象和实现。为什么要有不同的存储引擎,是因为在不同的场景下数据的存储形式可以是不一样的,myIsam这个引擎实现的就是适合查询频率高的场景,不支持事务;innodb这个引擎实现的是支持事务。也就是说不同的场景决定了不同的引擎,所以在建数据表的时候经常会让我们指定使用的数据引擎,细心的同学可以留意下。
说完了mysql的整体架构,想说下mysql中常见的日志是怎么实现的,
binlog,做过mysql的都知道,在mysql中有binlog也叫做二进制日志,用来记录mysql中的更新操作,可用来进行数据的恢复,既然是记录mysql的更新操作,那么它就属于server层
redo log和undo log,了解事务的都知道redo log和undo log是用来支持事务的,在常用的myIsam和innodb引擎中,innodb是支持事务的,那么redo log和undo log应该是在引擎层产生的;
java面试一日一题:请讲下对mysql的理解的更多相关文章
- java面试一日一题:讲下在什么情况下会发生类加载
问题:请讲下在什么情况下会发生类加载? 分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载? 回答要点: 主要从以下几点去考虑 1.什么是类加载: 2 ...
- java面试一日一题:讲下mysql中的undolog
问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: ...
- java面试一日一题:讲下redo log
问题:请讲下redo log的作用 分析:mysql中有很多日志,例,binlog undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题? 回答要点: ...
- java面试一日一题:讲下mysql中的索引
问题:请讲下mysql中的索引 分析:mysql中有很多索引,要对对这些索引有所掌握,还要弄清楚每种索引的本质? 回答要点: 主要从以下几点去考虑 1.索引的本质是什么 2.mysql的索引分类: 3 ...
- java面试一日一题:讲对mysql的MVCC的理解
问题:请讲下对mysql中MVCC的理解 分析:这个问题要回答的是对MVCC的理解,以及MVCC解决了什么问题这几个方面入手. 回答要点: 主要从以下几点去考虑, 1.什么是MVCC? 2.MVCC用 ...
- java面试一日一题:mysql中常用的存储引擎有哪些?
问题:请讲下mysql中常用的引擎有哪些? 分析:该问题主要考察对mysql存储引擎的理解,及区别是什么? 回答要点: 主要从以下几点去考虑, 1.mysql的存储引擎的基本概念? 2.mysql中常 ...
- java面试一日一题:java中垃圾回收算法有哪些
问题:请讲下在java中有哪些垃圾回收算法 分析:该问题主要考察对java中垃圾回收的算法以及使用场景 回答要点: 主要从以下几点去考虑, 1.GC回收算法有哪些 2.每种算法的使用场景 3.基于垃圾 ...
- java面试一日一题:java中的垃圾回收器
问题:请讲下java中垃圾回收器有哪些? 分析:该问题主要考察hotspot虚拟机下实现的垃圾回收器 回答要点: 主要从以下几点去考虑, 1.垃圾回收器的种类 2.每种垃圾回收器的着重点是什么 前边的 ...
- java面试一日一题:如何优化sql
问题:请讲下在mysql下如何优化sql 分析:该问题主要考察对mysql的优化,重点考虑对索引优化的掌握. 回答要点: 主要从以下几点去考虑, 1.什么样的sql需要优化? 2.怎么对sql进行优化 ...
随机推荐
- React Portal - 弹出层的优秀解决方案
对于需要使用弹出层的需求 ,Portal可以说是提供了一种完美的解决方案.相比于React Native中的实现更多的使用Modal或者绝对定位,Portal实在是简易友好得多. 场景 对话框,确认提 ...
- Excel和CSV格式文件的不同之处
来源:https://blog.csdn.net/weixin_39198406/article/details/78705016 1.个人理解:为何选择使用csv来存储接口测试用例相关字段数据,而不 ...
- [转]ROS订阅激光数据
https://github.com/robopeak/rplidar_ros/blob/master/src/client.cpp /* * Copyright (c) 2014, RoboPe ...
- AtCoder Beginner Contest 192 F - Potion
题目链接 点我跳转 题目大意 给定 \(N\) 个物品和一个 \(X\) ,第 \(i\) 个物品的重量为 \(ai\),你可以从中选择任意个物品(不能不选) 假定选择了 \(S\) 个物品,物品的总 ...
- Java中的CPU占用高和内存占用高的问题排查
下面通过模拟实例分析排查Java应用程序CPU和内存占用过高的过程.如果是Java面试,这2个问题在面试过程中出现的概率很高,所以我打算在这里好好总结一下. 1.Java CPU过高的问题排查 举个例 ...
- 用友U8+V12.0安装教程(有需要软件和服务的可以联系我)
有需要用友U8+V12.0软件和服务的可以联系我 QQ:751824677 1.退出所有杀毒软件 2.先装服务器SQL2008 3.服务器(会计): 经典应用模式--全产品 (解压A盘-执行-Aut ...
- eclipse修改默认的代码注释
在使用Eclipse编写Java代码时,自动生成的注释信息都是默认是使用的当前登录系统用户名,实际上是可以修改的. 选择Window → Preference → Java → Code Style ...
- ViewPager 高度自适应
public class ContentViewPager extends ViewPager { public ContentViewPager(Context context) { super(c ...
- 7.vue组件(二)--双向绑定,父子组件访问
本文主要说两件事 1. 如何实现父子组件之间的双向绑定 2. 父组件如何访问子组件的data,method, 子组件如何访问父组件的data,method等 一. 如何实现父子组件之间的双向绑定 案例 ...
- 利用CORDIC算法计算三角函数
这里主要先介绍如何利用CORDIC算法计算固定角度\(\phi\)的\(cos(\phi)\).\(sin(\phi)\)值.参考了这两篇文章[1].[2]. 一般利用MATLAB计算三角函数时,用\ ...