mysql left join优化_面试阿里挂在“MySQL”,看完这份MySQL笔记8大问题,我顿悟了...

699cfbf3bf8513aa20116b0f75e191b5.png

对于技术面试来说,考察的核心内容具备以下两个特征:

  1. 涉及的知识点广,因为不同的公司和不同的面试官技能知识结构是不同的,所以关注的问题和面试内容也是不同的,因而具备面试知识点广的特点;
  2. 考察的知识点深,以阿里巴巴为例(其他大厂也是类似的情况),通常会从一个大的方向切入,然后再层层深入,直到问到你不会为止。比如,你都了解哪些数据库引擎?这个数据库引擎的特点是什么?这个数据库引擎是如何存储数据的?为什么要采用这种存储方式?等等。

所以针对以上两个问题,整理了这 8 大模块知识点,基本囊括了 MySQL 的所有知识点,它包含的内容如下:

这份MySQL知识整理笔记内容包括8个内容:

  • 事务
  • SQL优化原则
  • JOIN
  • 执行计划与执行明细
  • 执行流程
  • 表结构对性能的影响
  • 索引

4cfcadf5c94cbece06e8969a0c232198.png

事务

  • 特性
  • 分类
  • 隔离级别

09dfcb3686857dd4edc999794815d893.png

MySQL事务相关面试问题

  1. 什么是事务?
  2. ACID是什么?可以详细说一下吗?
  3. 同时有多个事务在进行会怎么样呢?
  4. 怎么解决这些问题呢?MySQL的事务隔离级别了解吗?
  5. Innodb使用的是哪种隔离级别呢?
  6. 对MySQL的锁了解吗?
  7. MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了?

a989ca02e4ff06d4d9fe849b2c7adee7.png

  • lock
  • latch<轻量级锁,锁的时间非常短,用来操作临界资源>
  • 一致性的非锁定读
  • 一致性的锁定读
  • 死锁

410c442309dbd0a8aeaeb010edeeb594.png

SQL优化原则

  • 选择需要优化的SQL
  • Explain和Profile入手
  • 永远用小结果集驱动大的结果集
  • 在索引中完成排序
  • 使用最小Columns
  • 使用最有效的过滤条件
  • 避免复杂的JOIN和子查询

85b32370485f03ad7d245abfae2a7015.png

JOIN原理

  • JOIN的原理
  • JOIN的优化原则

c313068aa769b810a5deb4bf75e431cf.png

执行计划与执行明细

  • Explain
  • Profiling

c3889019da5842b122e2a4b00a33b4c5.png

索引

  • 类型
  • 方法
  • 创建

a06f18a4ba1b8fb72492defa8f16922f.png

索引面试相关问题

  • 什么是索引?* 索引是个什么样的数据结构呢?* Hash索引和B+树所有有什么区别或者说优劣呢?* 上面提到了B+树在满足聚簇索引和覆盖索引的时候不需要回表查询数据,什么是聚簇索引?* 非聚簇索引一定会回表查询吗?* 在建立索引的时候,都有哪些需要考虑的因素呢?* 联合索引是什么?为什么需要注意联合索引中的顺序?* 创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因?* 那么在哪些情况下会发生针对该列创建了索引但是在查询的时候并没有使用呢?

6c789df3d9f39287e122c1041456b644.png

表结构对性能的影响

  • 冗余数据的处理
  • 大表拆小表
  • 根据需求展示更加合理的表结构
  • 常用属性分离为小表

457a497d662488ea0857ed24d051e586.png

表结构设计相关

  1. 为什么要尽量设定一个主键?
  2. 主键使用自增ID还是UUID?
  3. 字段为什么要求定义为not null?
  4. 如果要存储用户的密码散列,应该使用什么字段进行存储?

6271f9ea5b7fee137bab862af7e52d6a.png

执行流程

  • 查询缓存
  • 解析器生成解析树
  • 预处理再次生成解析树
  • 查询优化器
  • 查询执行计划
  • 查询执行引擎
  • 查询数据返回结果

48a9f7ec9c40e60fe3d2d7d8470f0594.png

MySQL优化学习思维笔记

6f9e6b613029144cf7586899f07510fa.png

更多相关进阶学习资料分享

f52982e60b983ba95d7c82677a8026dd.png

这次小编针DUI MySQL优化和架构设计知识难点特地分享一份PDF文档《MySQL性能优化与架构设计解析文档》同时配合这位大咖的MySQL学习视频,学起来会事半功倍,接着往下看吧。

c8f5835796bc8463fecf7fc412ba456e.png

这份文档共分3个部分

  1. 基础篇介绍了MySQL软件的基础知识、架构组成、存储引擎、安全管理及基本的备份恢复知识。
  2. 性能优化篇从影响 MySQL 数据库应用系统性能的因素开始,针对性地对各个影响因素进行调优分析
  3. 架构设计篇则主要以设计一个高可用可扩展的分布式企业级数据库集群环境为目标,分析介绍了通过MySQL 实现这一目标的多种架构方式。

基础部分

  1. MySQL基本介绍
  2. MySQL架构组成
  3. MySQL存储引擎简介
  4. MySQL安全管理
  5. MySQL备份与恢复

目录及内容展示

fafae2970dd912e5f5933738f76c7468.png

性能优化篇

第一节:MySQLServer性能的相关因素

8d2a6e1efdffc4ea0e7fc0d226c5f625.png

第二节:MySQL数据库锁定机制

主要内容包括:MySQL锁定机制简介、各种锁定机制分析、合理利用锁机制优化MySQL、小结

7a05086318d515c071731d017112e0c4.png

第三节:MySQL数据库Query的优化

主要内容包括:理解MySQL的QueryOptimizer、Query语句优化基本思路和原则、充分利用Explain和Profiling、合理设计并利用索引、Join的实现原理及优化思路、ORDERBY,GROUPBY和DISTINCT优化

13f168610ffc2bdcb24afd9dedef912f.png

第4到6节

  1. MySQL数据库Schema设计的性能优化
  2. MySQLServer性能优化
  3. 常用存储引擎优化

2a2f561a025793c1444e2b83f02fe5b2.png

架构设计篇

这部分分为7节内容如下:

  1. MySQL可扩展设计的基本原则
  2. 可扩展性设计之MySQLReplication
  3. 可扩展性设计之数据切分
  4. 可扩展性设计之Cache与Search的利用
  5. MySQLCluster
  6. 高可用设计之思路及方案
  7. 高可用设计之MySQL监控

b556407a5eac79783b4ec34d1c4be5c7.png

获取方式:

Java学习、面试;文档、视频资源免费获取​shimo.im
9e196ebb639810e4d6bd8189230f96f2.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值