【MySQL面试题pro版-7】

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【MySQL面试题pro版-7】


MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。

mysql的索引覆盖是什么?

就是select的数据列只用从索引中就能够取得,不必从数据表中读取,换句话说查询列要被所使用的索引覆盖。比如 你查询一个name字段,但是这个name正好被建立了索引,那么这个数据你不用去找到数据表,直接从索引中就获 取到了。这就是索引覆盖。explain的输出结果Extra字段为Using index时,能够触发索引覆盖。平常我们通过建立联 合索引来实现索引覆盖。

mysql索引存储结构

在MySQL中,索引的存储结构取决于所使用的存储引擎。对于最常用的InnoDB存储引擎,索引主要分为聚集索引和非聚集索引(二级索引),它们的存储结构如下:

  1. 聚集索引(Clustered Index):
  • 聚集索引的叶节点包含完整的数据行。这意味着数据行是按照聚集索引的顺序存储在磁盘上的。
  • 每个InnoDB表都有一个聚集索引,通常是主键索引。如果没有显式定义主键,InnoDB会选择一个唯一非空索引作为聚集索引,如果也没有这样的索引,InnoDB会隐式地生成一个名为GEN_CLUST_INDEX的自动递增列作为聚集索引。
  • 聚集索引是B+树(B-Plus Tree)结构,这是一种自平衡的多路搜索树,适用于大量数据的查找、插入和删除操作。
  1. 非聚集索引(Non-Clustered Index):
  • 非聚集索引的叶节点包含指向数据行的指针,而不是数据行本身。这意味着非聚集索引和数据行的物理存储是独立的。
  • 非聚集索引也是B+树结构,允许快速查找到数据行的指针,然后通过指针访问数据行。
  • 一张表可以有多个非聚集索引,每个索引都可以根据其列来优化特定的查询。

B+树的特点包括:

  • 所有的叶子节点都在同一层。
  • 叶子节点之间是有序的,并且包含了指向记录的指针。
  • 叶子节点还包含了指向相邻叶子节点的指针,形成了链表,便于范围查询。
  • 非叶子节点存储的是索引列的值,以及指向子节点的指针。
  • 非叶子节点之间的数据也是有序的,可以加快搜索速度。
  • B+树是高度平衡的,保证了查询效率。

了解索引的存储结构对于数据库设计和查询优化非常重要。合理地选择和使用索引可以提高查询性能,但同时也要注意不要过度使用,以免增加写操作的负担和维护成本。

mysql常见索引失效的情况

  1. 在where后使用or,导致索引失效(尽量少用or)
  2. 使用like ,like查询是以%开头,以%结尾不会失效
  3. 不 符合最左原则
  4. 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引
  5. 使用 mysql内部函数导致索引失效,可能会导致索引失效。
  6. 如果MySQL估计使用索引比全表扫描更慢,则不使用索引

mysql主从同步原理

  1. master服务器将数据的改变记录二进制binlog日志,当master上的数据发生改变时,则将其改变写入二进制日 志中;
  2. slave服务器会在一定时间间隔内对master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个 I/OThread请求master二进制事件
  3. 同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志 中,从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致,最后 I/OThread和SQLThread将进入睡眠状态,等待下一次被唤醒。

mysql主从同步延迟的原因和解决办法

MySQL主从同步延迟是指从服务器(Slave)复制主服务器(Master)上的数据变更时出现的延迟。这种延迟可能是由多种因素引起的,以下是一些常见的原因以及相应的解决办法:

延迟的常见原因:
  1. 网络延迟:主从服务器之间的网络连接慢,导致数据传输延迟。
  2. 主服务器负载高:主服务器的CPU、磁盘I/O或内存使用率高,导致二进制日志生成和传输缓慢。
  3. 从服务器负载高:从服务器的CPU、磁盘I/O或内存使用率高,导致处理中继日志和执行SQL操作缓慢。
  4. 大量写入操作:主服务器上有大量写入操作,导致二进制日志增长迅速,从服务器来不及处理。
  5. 大事务:主服务器上执行了大事务,而从服务器需要等待整个事务完成后才能应用。
  6. SQL线程数不足:从服务器上的SQL线程数量不足以及时处理中继日志中的事件。
  7. 锁竞争:从服务器上存在锁竞争,导致SQL线程被阻塞。
  8. 硬件问题:主从服务器的硬件性能不足,无法处理当前的负载。
解决办法:
  1. 优化网络:改善主从服务器之间的网络连接,减少网络延迟。
  2. 降低主服务器负载:优化主服务器上的查询,减少资源消耗,提高二进制日志的生成和传输速度。
  3. 降低从服务器负载:优化从服务器上的查询,减少资源消耗,提高SQL线程的执行速度。
  4. 增加写入操作的处理能力:在从服务器上增加更多的SQL线程,以提高处理中继日志的速度。
  5. 拆分大事务:将大事务拆分成多个较小的事务,减少单个事务对主从同步的影响。
  6. 增加SQL线程数:根据从服务器的负载情况,适当增加SQL线程的数量。
  7. 减少锁竞争:优化从服务器上的查询,减少锁的使用,避免锁竞争。
  8. 升级硬件:如果主从服务器的硬件性能不足,可以考虑升级硬件,提高处理能力。

此外,还可以使用一些监控工具来实时监控主从同步的状态,及时发现并解决延迟问题。在某些情况下,也可以考虑使用其他数据复制方案,如MySQL的Group Replication或其他数据库系统提供的同步机制。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
SQL 存储 关系型数据库
复盘女朋友面试4个月的Mysql面试题(1万字)
该文章详细分析了Ribbon的超时配置是否会覆盖OpenFeign的超时配置,并探讨了OpenFeign超时配置能否动态实时修改生效的问题。
复盘女朋友面试4个月的Mysql面试题(1万字)
|
3天前
|
SQL 关系型数据库 MySQL
推荐一款高颜值的MySQL管理工具:Sequel Pro
推荐一款高颜值的MySQL管理工具:Sequel Pro
|
23天前
|
关系型数据库 MySQL Java
面试官:说说MySQL调优?
面试官:说说MySQL调优?
52 5
面试官:说说MySQL调优?
|
12天前
|
SQL 关系型数据库 MySQL
面试准备-MySQL
面试准备-MySQL
|
17天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
17天前
|
算法 关系型数据库 MySQL
一天五道Java面试题----第七天(mysql索引结构,各自的优劣--------->事务的基本特性和隔离级别)
这篇文章是关于MySQL的面试题总结,包括索引结构的优劣、索引设计原则、MySQL锁的类型、执行计划的解读以及事务的基本特性和隔离级别。
|
30天前
|
SQL 存储 关系型数据库
|
10天前
|
存储 关系型数据库 MySQL
MySQL 常见面试题总结(上)
主要介绍 MYSQL 数据库面试中常见的面试问题。
13 0
|
2月前
|
算法 搜索推荐 NoSQL
面试题MySQL问题之分库分表后的富查询问题处理如何解决
面试题MySQL问题之分库分表后的富查询问题处理如何解决
38 3
|
2月前
|
运维 关系型数据库 MySQL
面试题MySQL问题之MySQL集群的单点失效如何解决
面试题MySQL问题之MySQL集群的单点失效如何解决
73 2

热门文章

最新文章

下一篇
云函数