面试(06)————MySQL篇

news2024/10/2 10:24:28

目录

问题一:在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.coloradmin.cn/o/1613633.html

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

相关文章

【GlobalMapper精品教程】076:基于高程和影像数据创建电子沙盘(真实三维地形)

影像与数字高程模型叠加,可以构建三维真是地形。本文讲解在Globalmapper中基于高程和影像数据创建电子沙盘(真实三维地形)。 文章目录 一、加载数据二、创建三维网格三、三维叠加显示一、加载数据 本实验的数据(配套实验数据资料包中的data076.rar,订阅专栏,获取全文及数…

Java Web 网页设计(1)

不要让追求之舟停泊在幻想的港湾 而应扬起奋斗的风帆 驶向现实生活的大海 网页设计 1.首先 添加框架支持 找到目录右键添加 找到Web Application选中 点击OK 然后 编辑设置 找到Tomcat--local 选中 点击OK 名称可以自己设置 找到对应文件夹路径 把Tomcat添加到项目里面 因为…

分享几个申请免费SSL证书的平台

随着数字网络蓬勃发展,人们在享受互联网时代带来的便利生活外,网络安全问题也是日益变得严重;越来越多企业或个人选择通过安装SSL证书来保护网站的数据安全和提高企业的品牌形象,好在很多证书服务机构都有提供免费SSL证书申请的服…

【机器学习-15】决策树(Decision Tree,DT)算法介绍:原理与案例实现

前言 决策树算法是机器学习领域中的一种重要分类方法,它通过树状结构来进行决策分析。决策树凭借其直观易懂、易于解释的特点,在分类问题中得到了广泛的应用。本文将介绍决策树的基本原理,包括熵和信息熵的相关概念,以及几种经典的…

Modern CSV for Mac:强大的CSV文件编辑器

Modern CSV for Mac是一款功能强大的CSV文件编辑器,专为Mac用户设计,提供直观易用的界面和丰富的功能,使用户能够轻松编辑和管理CSV文件。 Modern CSV for Mac v2.0.6激活版下载 这款软件支持快速导入和导出CSV文件,方便用户与其他…

Docker - Compose

原文地址,使用效果更佳! Docker - Compose | CoderMast编程桅杆Docker - Compose 在部署应用时,常常使用到不止一个容器,那么在部署容器的时候就需要一个一个进行部署,这样的部署过程也相对来说比较繁琐复杂&#xff…

​「Python大数据」VOC数据清洗

前言 本文主要介绍通过python实现数据清洗、脚本开发、办公自动化。读取voc数据,存储新清洗后的voc数据数据。 一、业务逻辑 读取voc数据采集的数据批处理,使用jieba进行分词,去除停用词,清洗后的评论存储到新的列中保存清洗后的数据到新的Excel文件中二、具体产出 三、执…

实验 2--创建数据库和表

文章目录 实验 2--创建数据库和表实验目的3.3.2 实验准备3.3.3 实验内容2.在 SSMS 图形界面中创建和删除数据库和数据表。(1)在 SSMS 图形界面中创建 YGKQ 数据库;(2)在 SSMS 图形界面中删除 YGKQ 数据库;(3)在 SSMS 图形界面中创建、删除 BMXX表;(4)在 SSMS 图形界面中分别创建…

【探讨】RocketMQ消息灰度方案-消息逻辑隔离

vivo 鲁班平台 RocketMQ 消息灰度方案 - 稀土掘金分布式- vivo鲁班RocketMQ平台的消息灰度方案MQ消息在生产环境和灰度环境隔离一般怎么实现?消息隔离的原则 中心正常消费者,可以同时消费正常的消息和特定标签的消息(自动识别);特定标签的消费者,只能消费特定标签的消息。灰…

连连看游戏页面网站源码

首页,可以上传自己喜欢的图片 游戏页面 通关页面

Python程序设计 字典

教学案例十 字典 1. 判断出生地 sfz.txt文件中存储了地区编码和地区名称 身份证的前6位为地区编码,可以在sfz.txt文件中查询到地区编号对应的地区名称 编写程序,输入身份证号,查询并显示对应的地区名称 若该地区编码不在文件中,…

MapReduce——ReudceTask并行度决定机制

MapReduce——ReudceTask并行度决定机制 1. Reduce任务的数量(reduce task count): 这是最基本的决定因素之一。在作业启动时,用户可以指定Reduce任务的数量。更多的Reduce任务意味着更多的并行度,因为每个Reduce任务…

【大模型应用极简开发入门(2)】GPT模型简史:从GPT-1到GPT-4:从小数据量的微调到大数据量的强化学习不断优化模型

文章目录 一. GPT-1:无监督与微调1. 在GPT-1之前的监督学习的问题2. GPT-1中新的学习过程-无监督的预训练3. 复杂任务下的微调4. GPT-1为更强大的模型铺平了道路 二. GPT-2:context learning1. 核心思想:context learning2. GPT-2的数据集 三…

【面试经典 150 | 数组】罗马数字转整数

文章目录 写在前面Tag题目来源解题思路方法一:模拟 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾…

IoT、IIoT、AIoT的区别是什么?

一、IoT、IIoT、AIoT的区别是什么? IoT、IIoT和AIoT都是物联网(Internet of Things)的不同应用和发展方向,但它们之间存在一些区别。 IoT(物联网):物联网是指通过互联网连接各种物理设备&#x…

RIP最短路实验(思科)

华为设备参考:RIP最短路实验(华为) 一,技术简介 RIP(Routing Information Protocol,路由信息协议)是一种基于距离矢量的内部网关协议,工作原理是每个路由器周期性地向邻居路由器发…

GPT-3.5 Turbo 的 temperature 设置为 0 就是贪婪解码?

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 将 GPT-3.5 Turbo 的 temperature 设置为 0 通常意味着采用贪婪解码(greedy decoding)策略。在贪婪解码中,模型在每一步生成文本时选择概率最高的词元,从…

LeetCode题练习与总结:矩阵置零--73

一、题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1: 输入:matrix [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2&#xf…

每日一题---链表的中间结点

文章目录 前言1.题目2.题目分析2.1.思路一2.2.思路二(快慢指针) 3.参考代码3.1.代码1--思路13.2.代码2---思路2 前言 我们上一篇数据结构与算法的章节当中,我们学习到了单链表,下面我们做几篇中,我们做几道题&#xf…

PTA L2-052 吉利矩阵

题目 解析 这题考的是搜索剪枝 可行性剪枝: 即判断当前行(列)是否已经超过L和剩下的格子都填最大值是否小于L,若是则剪枝。 当前行数大于1时,判断上一个填完的行是否等于L,若否,则剪枝。 当前行…