若有收获,请记得分享和转发哦
1.说一说三大范式
2.MyISAM 与 InnoDB 的区别是什么?
3.为什么推荐使用自增 id 作为主键?
4.一条查询语句是怎么执行的?
5.使用 Innodb 的情况下,一条更新语句是怎么执行的?
6.Innodb 事务为什么要两阶段提交?
7.什么是索引?
8.索引失效的场景有哪些?
9.为什么采用 B+ 树,而不是 B-树
10.WAl 是什么?有什么好处?
11.什么是回表?
12.什么是索引下推?
13.什么是覆盖索引?
14.什么是最左前缀原则?
15.普通索引和唯一索引该怎么选择?
16.什么是事务?其特性是什么?
17.事务的隔离级别?
18.binlog 是做什么的?
19.undolog 是做什么的?
20.relaylog 是做什么的?
21.redolog 是做什么的?
22.redolog 是怎么记录日志的?
23.redolog 和 binlog 的区别是什么?
24.说一说 mvcc 吧,有什么作用?
25.一条 Sql 语句查询一直慢会是什么原因?
26.一条 Sql 语句查询偶尔慢会是什么原因?
27.Mysql 主从之间是怎么同步数据的?
28.主从延迟要怎么解决?
29.删除表数据后表的大小却没有变动,这是为什么?
30.为什么 VarChar 建议不要超过255?
31.分布式式事务怎么实现?
32.Mysql 中有哪些锁?
33.为什么不要使用长事务?
34.buffer pool 是做什么的?
35.说说你的 Sql 调优思路吧
1.说一说三大范式
「第一范式」:数据库中的字段具有「原子性」,不可再分,并且是单一职责
「第二范式」:「建立在第一范式的基础上」,第二范式要求数据库表中的每个实例或行必须「可以被惟一地区分」。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。这个惟一属性列被称为主键
「第三范式」:「建立在第一,第二范式的基础上」,确保每列都和主键列直接相关,而不是间接相关不存在其他表的非主键信息
但是在我们的日常开发当中,「并不是所有的表一定要满足三大范式」,有时候冗余几个字段可以少关联几张表,带来的查询效率的提升有可能是质变的
2.MyISAM 与 InnoDB 的区别是什么?
11.什么是回表?
21.redolog 是做什么的?
redolog 是 「InnoDB 存储引擎所特有的一种日志」,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。
可以做「数据恢复并且提供 crash-safe 能力」
当有增删改相关的操作时,会先记录到 Innodb 中,并修改缓存页中的数据,「等到 mysql 闲下来的时候才会真正的将 redolog 中的数据写入到磁盘当中」。
-
用来淘汰不常被访问的缓存页,分为热数据区和冷数据区,冷数据区主要存放那些不常被用到的数据
预读机制:
Buffer Pool 有一项特技叫预读,存储引擎的接口在被 Server 层调用时,会在响应的同时进行预判,将下次可能用到的数据和索引加载到 Buffer Pool
35.说说你的 Sql 调优思路吧
1.「表结构优化」
1.1拆分字段
1.2字段类型的选择
1.3字段类型大小的限制
1.4合理的增加冗余字段
1.5新建字段一定要有默认值
2.「索引方面」
2.1索引字段的选择
2.2利用好mysql支持的索引下推,覆盖索引等功能
2.3唯一索引和普通索引的选择
3.「查询语句方面」
3.1避免索引失效
3.2合理的书写where条件字段顺序
3.3小表驱动大表
3.4可以使用force index()防止优化器选错索引
4.「分库分表」
轻松一刻,欣赏美景
点击下方