面试(06)————MySQL篇

目录

问题一:在MySQL中,如何定位慢查询?

方案一:开源工具

方案二:MySQL自带慢日志

模拟面试

 问题二:这个SQL语句执行很慢,如何分析的呐?

 模拟面试

问题三:了解过索引吗?(什么是索引)

 索引的底层数据结构了解过吗?

模拟面试

​编辑 

问题四:聚簇索引和非聚簇索引

回表查询

​编辑 模拟面试

 问题五:覆盖索引、超大分页优化

覆盖索引

​编辑 MYSQL超大分页处理

优化思路

模拟面试

 问题六:索引创建原则有哪些?

模拟面试

问题七:什么情况下索引会失效? 

​编辑 1、违反最左原则

​编辑 2、范围查询右边的列,不能使用索引

3、不要再索引列上进行运算操作,索引会失效 

4、字符串不加单引号,可能会造成索引失效

​编辑 5、以%开头的like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。

模拟面试

​编辑 问题八:谈谈你对sql优化的经验?

表的设计优化

SQL语句的优化

主从复制、读写分离

 模拟面试

问题九: 事务的特性

什么是事务?

ACID是什么 ?

模拟面试

​编辑 问题十:并发事务带来了哪些的问题?怎么解决这些问题?MySQL的默认隔离级别是什么?

并发事务问题

模拟面试

问题十一: undo log和redo log的区别

redo log

undo log

模拟面试

问题十二: 事务的隔离性是如何保证的呐?

解释一下MVCC

 记录中的隐藏字段

undo log

undo log的版本链

readView 

模拟面试

 问题十三:MySQL的主从同步原理

模拟面试

问题十四: 分库分表

拆分策略

垂直分库

垂直分表 

水平分库

水平分表

新的问题和新的技术


问题一:在MySQL中,如何定位慢查询?

方案一:开源工具

调试工具:Arthas

运维工具:Prometheus、Skywalking

方案二:MySQL自带慢日志

慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志

如果要开启慢查询日志,需要在MySQL的配置文件(/etc/my.cnf)中配置如下信息:

 配置完毕之后,通过以下指令重新启动MySQL服务器进行测试,查看慢日志文件中记录的信息

/var/lib/mysql/localhost-slow.log

模拟面试

 问题二:这个SQL语句执行很慢,如何分析的呐?

可能的原因:

 一个SQL语句执行很慢,如何分析?

可以采用EXPLAIN或者DESC命令获取MySQL如何执行SELECT语句的信息

  •  possible_key 当前sql可能会使用到的索引
  • key 当前sql实际命中的索引
  • key_len 索引占用的大小
    其中可以通过第二点和第三点来查看是否可能会命中索引
  • Extra 额外的优化建议
  • type 这条sql的连接的类型,性能由好到差为NULL、system、const、eq_ref、ref、range、index、all

        如果出现后两种情况,就说明这条sql就需要优化了

 模拟面试

问题三:了解过索引吗?(什么是索引)

索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构(B+树),这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

 索引的底层数据结构了解过吗?

MySQL默认使用的索引底层数据与结构是B+树。

B+Tree是在BTree基础上的一种优化,使其更适合实现外存储索引结构,InnoDB存储引擎就是用B+Tree实现其索引结构

模拟面试

 

问题四:聚簇索引和非聚簇索引

 

回表查询

给name加了索引,所以它会走二级索引这条,查到之后,查到的其实是id等于10这个数据,然后再走聚集索引再查一遍,最后查到整行数据,这个过程就是回表查询(其实就是:先走二级索引查询,查到对应的主键值之后,再走聚集索引查询,查到整行数据)

 模拟面试

 问题五:覆盖索引、超大分页优化

覆盖索引

覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到。

 MYSQL超大分页处理

在数据量比较大时,如果进行limit分页查询,在查询时,越往后,分页查询效率越低。

 

优化思路

一般分页查询时,通过创建覆盖索引能够比较好地提高性能,可以通过覆盖索引加子查询形式进行优化

 和上面相比执行时间确实减少了很多

模拟面试

 问题六:索引创建原则有哪些?

模拟面试

问题七:什么情况下索引会失效? 

 1、违反最左原则

 

以下情况跳过了name字段,索引失效 

 2、范围查询右边的列,不能使用索引

后一个情况的address的索引失效

3、不要再索引列上进行运算操作,索引会失效 

4、字符串不加单引号,可能会造成索引失效

 5、以%开头的like模糊查询,索引失效。如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。

模拟面试

 问题八:谈谈你对sql优化的经验?

表的设计优化

SQL语句的优化

主从复制、读写分离

如果数据库的使用场景读的操作比较多的时候,为了避免写的操作所造成的性能影响 可以采用读写分离的架构。

读写分离解决的是,数据库的写入,影响了查询的效率

 

 模拟面试

问题九: 事务的特性

什么是事务?

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败

ACID是什么 ?

模拟面试

 问题十:并发事务带来了哪些的问题?怎么解决这些问题?MySQL的默认隔离级别是什么?

并发事务问题

 

注意:事务隔离级别越高,数据越安全,但是性能越低。

模拟面试

问题十一: undo log和redo log的区别

redo log

undo log

undo log可以实现事务的一致性和原子性

模拟面试

问题十二: 事务的隔离性是如何保证的呐?

解释一下MVCC

全称Multi-Version Concurrency Control,多版本并发控制。指维护一个数据的多个版本,使得读写操作没有冲突

MVCC的具体实现,主要依赖于数据库记录中的隐式字段、undo log日志、readView

 记录中的隐藏字段

undo log

undo log的版本链

不同事务或相同事务对同一条记录进行修改,会导致该记录的undolog生成一条记录版本链表,链表的头部是最新的旧纪录,链表尾部是最早的旧纪录

readView 

模拟面试

 

 问题十三:MySQL的主从同步原理

mysql主从复制的核心就是二进制日志

二进制日志(binlog)记录了所有哦的DDL语句(数据定义语言)和DML语句(数据操纵语言),但不包括数据查询(select、show)语句

 

模拟面试

问题十四: 分库分表

拆分策略

垂直分库

以表为依据,根据业务将不同表拆分到不同库中

特点:

 

垂直分表 

水平分库

水平分表

新的问题和新的技术

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

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

相关文章

kali没有数字签名

一开始以为是国外源访问缓慢问题,更新国内源后依旧报错 解决方案: 你需要下载apt源对应的签名文件,并使用apt-key命令将其添加到系统中。例如,对于Kali的官方源,你可以使用以下命令下载并安装签名文件: …

Python图像处理【24】面部变形(face morphing)

面部变形 0. 前言1. 网格变形算法2. 实现面部变形小结系列链接 0. 前言 面部变形 (face morphing) 的目的是在计算图像中两个面部之间的平均值,它并不是计算两张图像的平均值,而是计算面部区域的平均值。可以将该过程分解为以下两步: 对齐两…

web渗透xxe漏洞

xxe xml external entity 外部实体注入,用户输入恶意 xml 被后台解析了恶意语句 owasptop10-- 不安全的配置 xml 是什么?? XML 指可扩展标记语言( EXtensible Markup Language )。 XML 是一种很像 HTML 的标记…

了解网卡、光猫、路由器

了解网卡、光猫、路由器 一、网卡二、光猫三、路由器四、光猫和路由器的联系和区别五、家庭正常上网的简单流程六、企业正常上网的简单流程 一、网卡 网卡:用来允许计算机在计算机网络上进行通讯的计算机硬件 一般来说,笔记本都有两种网卡,有…

【数值计算方法】 4.2 / Newton-Cotes公式

本质:具有等距节点的插值求积公式就是NC公式

OpenCV——Niblack局部阈值二值化方法

目录 一、Niblack算法1、算法概述2、参考文献二、代码实现三、结果展示OpenCV——Niblack局部阈值二值化方法由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、Niblack算法 1、算法概述 Niblack 算法是一种典型的局部阈值…

设计模式-观察者模式(Observer)

1. 概念 观察者模式(Observer Pattern)一种行为型设计模式。它定义了对象之间的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 2. 原理结构图 主题(Subject)&#xff…

【C语言】操作符相关编程题

目录 题目一: 题目二: 题目三: 题目三: 题目四: 题目五: 题目六: 题目七: 题目八: 题目一: 题目:不创建临时变量,交换两个数…

SpringMvc的核心组件和执行流程

一、 springmvc的核心组件及作用 1.DispatcherServlet:前置控制器,是整个流程控制的核心,用来控制其他组件的执行,降低了其他组件的耦合性 2.Handler:控制器,完成具体的业务逻辑,当DispatcherServlet接收到请求后&am…

C语言 字符函数和字符串函数

目录 1. 字符分类函数2. 字符转换函数3. strlen - 计算长度4. strcpy - 复制內容5. strcat - 追加內容6. strcmp - 比较大小7.strncpy - 指定复制8. strncat - 指定追加9. strncmp - 指定比较10. strstr - 查找子字符串11. strtok - 查找记号12. strerror - 错误码 正文开始 1…

深度图转点云

一、理论分析 二、其他分析 1、相机内参 相机内参主要是四个参数fx,fy,u0,v0。要明白相机内参就是相机内部参数,是参考像素坐标系而言,有了这个前提,这四个参数也就很好理解了。 (1)首先,。其中F是相机的…

使用easyexcel将csv转为excel

一.背景 供应商系统下载的csv文件不支持域控(主要是第三方wps服务不能对csv文件加密,但是可以对office系列产品进行权限访问的加密控制)。因此思路就改为现将csv文件转为excel文件,然后对excel文件进行加域控制。本文主要介绍如何…