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进行优化 ...
随机推荐
- [转]自动驾驶平台Apollo 2.5环境搭建
原文地址:https://blog.csdn.net/jinzhuojun/article/details/80210180,转载主要方便随时查阅,如有版权要求,请及时联系. 我们知道,自动驾驶在学界 ...
- [Python] Matplotlib 图表的绘制和美化技巧
目录 在一张画布中绘制多个图表 加图表元素 气泡图 组合图 直方图 雷达图 树状图 箱形图 玫瑰图 在一张画布中绘制多个图表 Matplotlib模块在绘制图表时,默认先建立一张画布,然后在画布中显示 ...
- 关于PCA主成分分析的一点理解
PCA 即主成分分析技术,旨在利用降维的思想,把多指标转化为少数几个综合指标. 假设目前我们的数据特征为3,即数据维度为三,现在我们想将数据降维为二维,一维: 我们之前的数据其实就是三维空间中的一个个 ...
- 与程序员相关的CPU缓存知识
本文转载自与程序员相关的CPU缓存知识 基础知识 首先,我们都知道现在的CPU多核技术,都会有几级缓存,老的CPU会有两级内存(L1和L2),新的CPU会有三级内存(L1,L2,L3 ),如下图所示: ...
- Django自学计划之集装箱货物运输物流仓储一站式ERP系统
业余开始学习时间:2018年1月 业余学习时间段:每天下班晚饭后时间+无事的星期六和星期天+上班时的空闲时间 自学目标: 1.我们要用管理的思维来写我们的系统! 2.我们要用我们的ERP系统帮助中小集 ...
- Vue学习笔记-rest_framework_jwt 学习
一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ...
- Linux-基础命令学习
Linux终端 Linux存在两种终端模拟器,一种类MAC的Gnome和一种类Win的KDE 远程连接工具: xshell,putty,crt(网工) 如果在Linux下输入tty 1 wang@DE ...
- C++类的静态成员笔记
下面是C++类的静态成员笔记. 静态数据成员特征 用关键字static声明 为该类的所有对象共享,静态数据成员具有静态生存期 必须在类外定义和初始化,用(::)来指明所属的类 举例说明-具有静态数据成 ...
- 记录core中GRPC长连接导致负载均衡不均衡问题 二,解决长连接问题
题外话: 1.这几天收到蔚来的面试邀请,但是自己没做准备,并且远程面试,还在上班时间,再加上老东家对我还不错.没想着换工作,导致在自己工位上做算法题不想被人看见,然后非常紧张.估计over了.不过没事 ...
- TKE 容器网络中的 ARP Overflow 问题探究及其解决之道
作者朱瑜坚,腾讯云后台开发工程师,熟悉 CNI 容器网络相关技术,负责腾讯云 TKE 的容器网络的构建和相关网络组件的开发维护工作,作为主力开发实现了 TKE 下一代容器网络方案. 1. 问题背景 1 ...