目录

1. 什么是MySQL的MVCC机制?

2. 如何理解InnoDB的Next-Key Lock机制?

3. 快照读和当前读的区别?

4. 如何在SQL语句中触发当前读?

5. MySQL默认的隔离级别是什么?

6. 如何避免在使用当前读时可能出现的死锁问题?

7.1 事务的四种隔离级别是什么?

7.2 不可重复读和幻读之间的区别是什么?

7.3 为什么InnoDB在可重复读隔离级别下仍然可能产生幻读?

7.4 解决幻读的方法★★★

8. MySQL的日志★★★★★

8.1 为什么需要使用redo log?它是何时写的?

8.2 redo log的刷盘策略

8.3 redo log的两阶段提交

8.4 binlog日志的记录格式、写入机制

9. EXPLAIN 分析执行计划★★★★★

10.1 MySQL索引失效的情形有哪些?★★★

10.2 如何避免索引失效的情况?★★★ 

10.3 针对“使用覆盖索引来实现ORDER BY和GROUP BY,或者将排序操作放到应用程序层面”具体应该怎么做呢?

11. MySQL高性能优化规范建议总结

一、数据库命名规范:

二、数据库基本设计规范

三、字段设计规范

四、索引设计规范

五、SQL 开发规范

六、必须阅读

12. MySQL索引详解★★★★★

一、最左前缀匹配原则:

二、索引下推

三、MySQL的索引结构?★★★★★

四、索引分类

13. MySQL查询缓存详解

1. 什么是MySQL的MVCC机制?

2. 如何理解InnoDB的Next-Key Lock机制?

3. 快照读和当前读的区别?

4. 如何在SQL语句中触发当前读?

5. MySQL默认的隔离级别是什么?

6. 如何避免在使用当前读时可能出现的死锁问题?

7.1 事务的四种隔离级别是什么?

7.2 不可重复读和幻读之间的区别是什么?

7.3 为什么InnoDB在可重复读隔离级别下仍然可能产生幻读?

7.4 解决幻读的方法★★★

8. MySQL的日志★★★★★

MySQL 日志 主要包括错误日志、查询日志、慢查询日志、事务日志、二进制日志几大类。其中,比较重要的还要属二进制日志 binlog(归档日志)、事务日志 redo log(重做日志)、undo log(回滚日志)。

8.1 为什么需要使用redo log?它是何时写的?

8.2 redo log的刷盘策略

8.3 redo log的两阶段提交

8.4 binlog日志的记录格式、写入机制

9. EXPLAIN 分析执行计划★★★★★

图灵第4期MySQL调优专题学习笔记_图灵学院索引优化资料下载-CSDN博客

10.1 MySQL索引失效的情形有哪些?★★★

10.2 如何避免索引失效的情况?★★★ 

10.3 针对“使用覆盖索引来实现ORDER BY和GROUP BY,或者将排序操作放到应用程序层面”具体应该怎么做呢?

11. MySQL高性能优化规范建议总结

一、数据库命名规范:
二、数据库基本设计规范
三、字段设计规范
四、索引设计规范
五、SQL 开发规范
六、必须阅读

技术同学必会的MySQL设计规约,都是惨痛的教训

聊聊数据库建表的15个小技巧

12. MySQL索引详解★★★★★

一、最左前缀匹配原则:

最左匹配原则会一直向右匹配,直到遇到范围查询(如 >、<)为止。对于 >=、<=、BETWEEN 以及前缀匹配 LIKE 的范围查询,不会停止匹配(相关阅读:联合索引的最左匹配原则全网都在说的一个错误结论)。

二、索引下推
  • 索引下推(Index Condition Pushdown,简称 ICP)MySQL 5.6 版本中提供的一项索引优化功能,它允许存储引擎在索引遍历过程中,执行部分 WHERE字句的判断条件,直接过滤掉不满足条件的记录,从而减少回表次数,提高查询效率。
  • MySQL 可以简单分为 Server 层和存储引擎层这两层。Server 层处理查询解析、分析、优化、缓存以及与客户端的交互等操作,而存储引擎层负责数据的存储和读取,MySQL 支持 InnoDB、MyISAM、Memory 等多种存储引擎。
  • 索引下推的下推其实就是指将部分上层(Server 层)负责的事情,交给了下层(存储引擎层)去处理。
三、MySQL的索引结构?★★★★★

索引底层数据结构存在很多种类型,常见的索引结构有: B 树, B+树,Hash、红黑树。在 MySQL 中,无论是 Innodb 还是 MyIsam,都使用了 B+树作为索引结构。

为什么MySQL的索引结构不使用Hash索引、二叉查找树(BST)、红黑树?

  • Hash索引:不支持顺序和范围查询。
  • 二叉查找树(BST):二叉查找树的性能非常依赖于它的平衡程度。
  • 红黑树:平衡性相对较弱,可能会导致树的高度较高,这可能会导致一些数据需要进行多次磁盘 IO 操作才能查询到。
四、索引分类

按照数据结构维度划分:BTree 索引、哈希索引、RTree 索引、全文索引。
按照底层存储方式角度划分:聚簇索引、非聚簇索引。

按照应用维度划分:

主键索引 VS 二级索引

覆盖索引和联合索引:略。

聚簇索引与非聚簇索引:

13. MySQL查询缓存详解

有经验的 DBA 都建议生产环境中把 MySQL 自带的 Query Cache(查询缓存)给关掉。而且,从 MySQL 5.7.20 开始,就已经默认弃用查询缓存了。在 MySQL 8.0 及之后,更是直接删除了查询缓存的功能。

04-18 20:25