学习笔记 | 完整的MySQL知识体系 思维导图

学习目标:

  • 数据库的架构设计、性能调优、大规模数据库集群运维
  • 如何利用 MySQL 来支撑互联网的海量数据和高并发请求
  • 掌握 MySQL 的底层运行机制,教你如何发挥 MySQL 的最佳性能、让你掌握 MySQL 在互联网应用领域的最佳实践,学会如何处理亿级业务数据和高并发请求。
    学习笔记 | 完整的MySQL知识体系 思维导图_第1张图片
    学习笔记 | 完整的MySQL知识体系 思维导图_第2张图片

MySQL 的 8 大优点

  • 第一个是体积小、速度快,可以在不占用太多资源的情况下提供数据库服务;
  • 第二个是开源免费,工具生态完善,用起来没有经济门槛;
  • 然后是,简单易用,维护成本低,用起来没有技术门槛;
  • 兼容性好,支持多种操作系统,用起来没有平台门槛;
  • 提供多种 API 接口;
  • 支持多种开发语言,用起来没有编程语言门槛;
  • 社区及用户活跃,用起来没有技术支持门槛;
  • 最重要的,就是 MySQL 的数据库属性,它支持事务、MVCC、4 种隔离级别等,同时易扩展、集群、高可用等也可以满足一般需求。

MySQL 常见的坑

学习笔记 | 完整的MySQL知识体系 思维导图_第3张图片

MySQL 知识点全景图

学习笔记 | 完整的MySQL知识体系 思维导图_第4张图片

  • 比如,优化包括数据库针对系统的优化,针对数据库本身参数的优化,针对SQL的优化,针对业务的优化等等。还有一个比较关键的点——InnoDB,因为一般使用 MySQL 都会使用 InnoDB 作为存储引擎,所以 InnoDB 有很多技术焦点和特性,需要你去学习和了解。另外就是数据库的复制、MySQL Replication,这也是经常会被面试官所考察的,包括复制的原理、复制的类型、各种复制之间的差异等等。还有就是从顶层来看,数据库的容量规划这么多,数据库的生态体系该怎么掌握,或者是怎么学习?
    学习笔记 | 完整的MySQL知识体系 思维导图_第5张图片

考察点与加分项

考察点
  • 必须了解消息队列、数据库的基本原理、使用场景以及常用队列、数据库的特点。比如消息队列适用于异步处理和削峰填谷的场景;Kafka 在提供高可用性的前提下实现了 0 消息丢失的高性能分布式队列服务;MySQL 提供了多种引擎可以支持事务型与非事务型的关系对象库服务等等。
  • 要了解 Kafka 的架构和消息处理流程,明白 Kafka 是如何通过 Partition 来保证并发能力与冗余灾备的;了解消费组是如何保证每个 Consumer 实例不会获取到重复消息的
  • 要深刻理解数据库事务的 ACID 特性,了解并发事务可能导致的并发问题和不同的数据库隔离级别如何解决这些并发问题。
  • 要牢牢掌握常用的 MySQL 语句,比如 WHERE 条件查询语句、JOIN 关联语句、ORDER BY 排序语句等等。还要熟悉常用的自带函数,例如 SUM、COUNT 等等。
  • 了解 MySQL 数据库不同引擎的特点及不同类型的索引实现。比如知道最常使用的 InnoDB 非常擅长事务处理,MyISAM 比较适合非事务的简单查询场景。比如知道 MySQL 的唯一索引、联合索引、全文索引等不同索引类型,以及最常使用等 B+ 树索引实现等等。
加分项
  • 要了解新特性,不论是 Kafka 还是 MySQL,都要了解一下新版本特性。例如 MySQL8.0 中提供了窗口函数来支持新的查询方式;支持通用表表达式,使复杂查询中的嵌入表语句更加清晰等等。
  • 要知道数据库表设计原则,如果有过线上业务数据库的设计经验就更好了,就能够知道如何对容量进行评估,也知道适当分库分表来保证未来服务的可扩展性,这会对面试起到积极的影响。
  • 最好有过数据库调优经验,例如明明建立了索引的语句,但是查询效率还是很慢,通过 Explain 分析发现表中有多个索引,MySQL 的优化器选用了错误的索引,导致查询效率偏低,然后通过在 SQL 语句中使用 use index 来指定索引解决。
  • 有过 Kafka 等主流消息队列使用经验,并且知道应该如何在业务场景下进行调优。例如日志推送的场景,对小概率消息丢失可以容忍,可以设置异步发送消息。而对应金融类业务,需要设置同步发送消息,并设置最高的消息可靠性,把 request.required.acks 参数设置为 -1。
真题汇总

学习笔记 | 完整的MySQL知识体系 思维导图_第6张图片

  • 第 2 题,可以从消息的发送者保证投递到消息队列、消息对象自身的高可用、消费方处理完成后修改 offset 这三个方面来保证消息的可靠性。这个题目可以结合 Kafka 的消息发送同步、异步,消息可靠性配置来回答。

  • 第 3 题可以从两个方面解决消息重复:一个是通过对消息处理实现幂等,消除消息重复的影响;另一个是使用 Redis 来进行消息去重,避免重复消息的处理。

  • 第 4 题可以从创建索引、减少关联查询、优化 SQL 查询条件等方面展开。

  • 第 6 题可以从 MySQL 调优部分讲解的相关原则这个角度来回答。

MySQL的主流分支

学习笔记 | 完整的MySQL知识体系 思维导图_第7张图片

参考书籍

学习笔记 | 完整的MySQL知识体系 思维导图_第8张图片

你可能感兴趣的:(#,数据库,SQL,mysql,知识体系)