八股文之MySQL篇

文章目录

  • 前言
  • 如何定位慢查询
  • 如何优化或分析慢查询
  • 什么是索引
  • 索引的底层数据结构
  • B树和B+树的区别(为什么用B+树不用B树)
  • 聚簇索引和非聚簇索引是什么
  • 什么是回表查询
  • 什么是索引覆盖
  • MySQL超大分页怎么处理
  • 索引创建的原则
  • 什么情况下索引会失效
  • 谈谈SQL优化的经验
  • 事务的特性是什么
  • 并发事务会带来哪些问题
  • 如何解决并发事务带来的问题
  • undo log 和 redo log 的区别
  • 事务中的隔离性是如何保证的
  • MySQL中的幻读问题(RR隔离级别)
  • MySQL的可重复读(RR隔离级别)是怎么实现的
  • MySQL主从同步原理
  • 分库分表

前言

数据库中我们开发生产中是必需的,而MySQL是大多数公司的首选关系型数据库,这一篇开始介绍MySQL相关的面试题,并且给出相应的回答。

如何定位慢查询

  • 慢查询顾名思义,就是一条SQL执行的时间很长,所以它慢嘛,在面试中,我们应该结合相关的场景,讲出该场景中所涉及的接口,它在测试的时候响应的就很慢,后续我们排查到的原因就是慢查询
  • 还可以讲在系统中当时采用了运维工具(Skywalking),这个工具可以检测出是哪个接口,因为它呈现的方式非常直观,以图表的方式给出,一眼就可以看出哪些是耗时的接口,再去排查SQL的问题
  • 最后一个就是MySQL自带慢查询功能,MySQL在设计的时候就考虑到了这一点,非常的哇塞,我们开启这个功能也很简单,在配置文件my.ini(如果安装的时候不做特殊处理,配置文件的位置是固定的,直接在Linux中打开配置文件)中开启配置选项:slow-query-log=1long_query_time=2即可,前者是开启慢查询日志记录,后者是慢查询时间的阈值,超过这个时间的SQL,会被记录到慢查询日志文件中,后续进行排查即可,但一般在生产环境中不会开启该功能,因为会消耗一定的性能

如何优化或分析慢查询

采用MySQL自带的分析命令:explain 或 desc(两者功能相同࿰

你可能感兴趣的:(八股文,MySQL,mysql,数据库)