面试之MySQL调优问题

前言

对于MySQL调优问题是作为一个后端开发者经常在面试的时候被面试官问到的高频率问题,其中主要是对MySQL的底层进行一个掌握程度的一个了解,现将自己最近的一些总结经验记录下来作为一个提升训练。


一、MySQL的底层原理粗解

1.1 MySQL的底层运作

1、MySQL文件底层是基于文件系统的操作方式————故此可以说明其底层就是I/O操作
2、那么影响I/O操作的因素是什么呢?(在这里我们以常用的查询操作为例)————磁盘的“旋转”与磁盘的“寻道”,通过磁盘的“旋转”与磁盘的“寻道”这种方式最终去找到这个数据,这个才是决定我们MySQL性能上优劣的基础。
3、通常情况之下磁盘的旋转时间是很短的,影响我们查询的真正因素是磁盘的寻道(就是要找到我们这个数据到底应该读取哪一个区间的数据 这个才是最耗时的)

1.2 MySQL的存储方式

对于我们熟悉的MySQL来说我们都知道它的引擎的是innodb,因此我们的MySQL在保存我的表的整体数据的时候就会有两个文件

在这里插入图片描述

.frm文件中保存的是表的结构
.ibd文件中保存的是数据和索引方式

如果是MyISAM存储引擎的话那么我们的表的整体数的保存至少是三个文件
一个文件用来保存 表结构
一个文件用来保存 数据
一个文件用来保存 索引
顺带一提:MyISAM是MySQL的默认数据库引擎(5.5版之前)由早期的ISAM所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction),因此呢MyISAM存储引擎与Innodb存储引擎是不一样的。

二、索引(重点内容)

2.1 索引是什么?

问题:在MySQL中存在索引吗?
回答:存在,在每一个表结构中可以看到,其次在MySQL中的Innodb引擎下会默认为主键创建索引的。
在这里插入图片描述

平时:记得我第一次与索引打交道的时候是在学Java数组里面的知识的时候学到的,当时自己作为一个小白刚入门只知道索引就类似于一个标志,对它的了解非常的片面。

MySQL中的索引:在MySQL的索引中我们应该用一种新的认知来了解这个概念,因为他不同于我们之前认识的那种粗略的概念,在MySQL中如果将MySQL存储的数据比作一本字典的话,那么索引就相当于于查询该字典数据的一种方式,回想一下我们在查询字典的时候,我们可以通过查询目标字的拼音或者部首偏旁来进行查找,而我们的索引就相当于于这两种方式中的一种。

试想一下,如果是一本庞大的字典的话当我们在没有索引或者是说没有查找方式的情况下去查找一个字我们只能通过一页一页地翻去查找它,那是有多麻烦,效率非常地低下。(tips:如果这样我觉得我宁可当一个文盲~~)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sugar-free->小粽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值