面霸篇:MySQL 35 卷

9bad36500fed256b58de146d85d2efbf.png

若有收获,请记得分享和转发哦

  • 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 的区别是什么?

687a346aca355a620f55239b6b51ec0f.png

982c1a43fa3fb0dc0f832c2f1c03e4e4.png

287278a2daf41316b01340079cd7ea63.png

ec9089528892c39304a07d59f2de2bd7.png

64015d5b0ee571e0495db7df5b4300a1.png

34229987ab9ccda5610fc1f190ab8170.png

ecce12c183ba9b1148cad3295fe4203a.png

7203ed4f8510280214effa42dc7cc875.png

11.什么是回表?

e07728a1184aeb57a02f538bdb55bd25.png

1f6483fd0c17aca396582bdf444d1f97.png

d7d28da465346b08b5e70750c86086ac.png

03dee2bcc02a34731fb6a0a5d3fcbfb5.png

4dd3942ba8480a32065a51160980e3cb.png

0ff6ebe738beb31351a8f7764a8d4e3f.png

4bcddeabeaef107812f112867e312644.png

54d80840f94330bc5b8567a57d645413.png

21.redolog 是做什么的?

redolog 是 「InnoDB 存储引擎所特有的一种日志」,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。

可以做「数据恢复并且提供 crash-safe 能力」

当有增删改相关的操作时,会先记录到 Innodb 中,并修改缓存页中的数据,「等到 mysql 闲下来的时候才会真正的将 redolog 中的数据写入到磁盘当中」

b06a13986a24a35554106297acf97db7.png

d577ec2a9c6d49f40412e316bdbe1502.png

e4d77c6ceca4ee1675b4515ee1c27c31.png

3ba23ff1d47eb14ad6f369e33d2952fd.png

9cbd9a9c51d465e0152933e407d72630.png

f9b618536b159f407e81dc47a79c15b7.png

f1dec102de0b1647c8ccd36d33aca64f.png

4886d90048629e5333f1265a9281eb26.png

4430953692366f1042de8bc1a380ee19.png

    • 用来淘汰不常被访问的缓存页,分为热数据区和冷数据区,冷数据区主要存放那些不常被用到的数据

预读机制:

  • Buffer Pool 有一项特技叫预读,存储引擎的接口在被 Server 层调用时,会在响应的同时进行预判,将下次可能用到的数据和索引加载到 Buffer Pool

35.说说你的 Sql 调优思路吧

db8bdd19bb8ca34a5715305b4fb5044e.png
  • 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.「分库分表」

c1b9d581f289dea24115b3144385e6b1.png

轻松一刻,欣赏美景

1e47264b289b8bdd55d3a248539c8e4e.png

点击下方

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值