MySQL常见面试题

数据库三大范式是什么
  • 第一范式:确保每个数据列都是不可再分的原子值
  • 第二范式:表中的每个非主键列完全依赖于主键列
  • 第三范式:每个非主键列之间不应该存在依赖关系
MySQL为什么默认引擎是InnoDB
  • 支持事务
  • 支持行级锁
  • 支持外键
什么是索引?索引有哪些优缺点?

索引是数据库中用于提高数据检索性能的数据结构

优点:

  • 提高查询性能
  • 唯一性约束
MySQL 索引分类?
  • 主键索引
  • 唯一索引
  • 普通索引
  • 组合索引
什么时候不要使索引
  • 小型表
  • 插入更新频繁的表
  • 查询条件不经常使用
  • 需要频繁更新索引的表
MySQL中有那些锁
  • 表级锁
  • 行级锁
  • 共享锁
  • 排他锁
  • 记录锁
  • 间隙锁
  • 临表锁
B树和B+树的区别

B树每个节点都包含了键和对应的值,B+树只有叶子节点存储了实际的数据记录,B+树叶子节点之间用链表连接

MySQL多表查询时有哪些连接方式
  • 内连接
  • 左外连接
  • 右外连接
  • 全外连接
  • 自连接
  • 交叉连接
什么是最左前缀原则?

假设有一个包含三个列(A, B, C)的复合索引 INDEX(A, B, C),最左前缀原则的含义是:

  • 数据库可以使用列 A 进行查询优化。
  • 数据库可以使用列 AB 进行查询优化。
  • 数据库可以使用列 ABC 进行查询优化。

但是,数据库不能仅使用列 B 或列 C,因为这不满足最左前缀原则。

什么是覆盖索引?

覆盖索引是指一个索引中包含了所有被查询字段(包括查询条件字段和查询结果字段),使得查询可以直接从索引中获得所有需要的数据,而不需要再去表中读取数据。

什么是索引下推?

索引下推(Index Condition Pushdown,ICP)是一种数据库优化技术,主要用于提高查询性能,特别是在包含复杂查询条件的场景下。ICP通过在索引扫描阶段提前过滤数据,减少不必要的回表操作,从而提高查询效率。

为什么需要数据库连接池呢?
  • 提高性能
  • 资源管理
  • 并发处理
  • 连接可靠性
并发事务带来哪些问题?
  • 脏读
  • 不可重复读
  • 幻读
  • 丢失数据
CHAR 和 VARCHAR 的区别?
  • CHAR长度固定
  • VARCHAR可变
慢SQL你是怎么优化的 
  • 优化查询语句结构
  • 添加合适的索引
  • 使用覆盖索引
  • 避免全表扫描
  • 合理分页查询 
索引失效的情况有哪些 
  • 不满足索引列循序
  • 使用函数或表达式
  • 使用了NOT,<>,OR等非优化的逻辑操作符
  • 数据类型不匹配
  • 数据分布不均匀
说下你对数据库事务的理解
  1. 原子性
  2. 一致性
  3. 隔离性
  4. 持久性 
事务的隔离级别有哪些 
  • 读未提交
  • 读已提交
  • 可重复读
  • 串行化
讲讲主从复制原理与延迟 

主从复制是一种常用的数据库数据同步机制,通过将主数据库的数据变更复制到从数据库来实现数据备份、负载均衡和高可用性。然而,复制延迟是主从复制中的一个常见问题,理解复制延迟的原因并采取相应的优化措施可以有效减少延迟,确保数据的一致性和系统的高效运行。

了解MySQL锁升级吗 

MySQL的锁升级(Lock Escalation)指的是将大量的细粒度锁(如行锁)合并为较少的粗粒度锁(如表锁),以减少锁管理开销,提高系统性能。锁升级机制在某些数据库系统中存在,但MySQL的InnoDB存储引擎并不支持自动锁升级。相反,InnoDB设计了一些机制来有效管理和使用细粒度锁,以避免锁升级的需求。

MySQL 有哪些高可用方案
  • 主从复制
  • 集群
如何解决MySQL死锁问题 
  • 使用行级锁
  • 优化查询和事务逻辑
  • 调整事务隔离级别
  • 设置合理的超时时间和重试机制
MySQL索引底层结构为什么使用 B+树 
  • 良好的平衡性
  • 循序访问性
  • 存储效率
  • 支持高并发
  • 易于扩展和维护
高并发场景下,如何安全修改同一行数据 
  • 乐观锁
  • 悲观锁
  • 分布式锁
  • 事务 
数据库 cpu 飙升,你会如何处理 
  • 查询性能问题
  • 数据库连接问题
  • 锁于死锁问题
  • 配置问题
  • 资源竞争
一条SQL的执行过程是怎样的 
  • 建立连接
  • 查询缓存
  • 分析优化
  • 执行存储
  • 返回结果 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值