MySQL面试知识汇总

学习链接

  1. 创建索引有哪些注意点?
  1. 索引应该建在查询频繁的字段,比如where查询、order排序
  2. 索引的个数应该适量(最多64个),索引需要占用空间,更新时也需要维护
  3. 区分度低的字段,例如性别,不要建索引
  4. 频繁更新的值,不要作为索引,维护索引文件需要成本,还会导致页分裂、IO次数增多
  5. 联合索引把散列性高的值放在前面,可以更好的满足最左前缀匹配原则
  6. 尽可能用联合索引代替多个单列索引
  7. 过长的字段,使用前缀索引,即截取字段的前面一部分内容建立索引
  8. 不建议用无序的值作为索引
  1. 索引哪些情况下会失效?
  1. 查询条件包含or,可能会导致索引失效
  2. 如果字段类型是字符串,where时一定用引号括起来,否则会因为隐式类型转换,索引失效
  3. like通配符可能导致索引失效
  4. 联合索引,查询时的条件不是联合索引中的第一个列,索引失效
  5. 在索引列上使用mysql的内置函数,索引失效
  6. 对索引列运算(如:加减乘除、!= /<> /not in),索引失效
  7. 索引字段上使用 is null is not null,可能会导致索引失效
  8. 左连接查询或者右连接查询 查询关联的字段编码格式不一样,可能导致索引失效
  9. MySQL优化器估计使用全表扫描要不使用索引快时,不适应索引
  1. 解释下MySQL上事务的四大特性ACID,及实现
  1. 原子性::redo log(被称为重做日志,是物理日志,事务提交时,必须先将事务的所有日志写入redo log持久化)
  2. 一致性:undo log(是逻辑日志,记录了事务的insert、update和delete操作,回滚时执行相反的操作)
  3. 隔离性:数据库锁及MVCC机制
  4. 持久性:redo log
  1. 事务的各个隔离级别都是如何实现的?
  1. 读未提交
  2. 读已提交
  3. 可重复读
  4. 串行化
  1. MySQL 主从同步延迟怎么处理?

原因:当数据库主库有较大更新并发操作时,可能会导致主从同步延迟,因为从库里面读取binlog的线程只有一个,当某个SQL在从库中执行的时间稍长,或者由于某个SQL要进行锁表就会导致主从同步延迟,主库的SQL大量积压,未被同步到从库里。就会导致主从不一致,即主从延迟。

主从同步延迟的解决方法:

  1. 写操作后的读操作指定发给数据库主库
  2. 读从库失败后,再读一次主库
  3. 关键业务读写操作全部指向主库,非关键业务采取读写分离
  1. 水平分表有哪几种路由方式?
  1. 范围路由:选取有序的数据列作为路由的条件,不同分段分散到不同的数据库表中;(单表数据量在 100w~1000w)
  2. Hash路由:选取某个列(或者某几个列组合)的值进行Hash运算,然后根据Hash结果分散到不同的数据库表中。(缺点:初始表的数量选取不好确定,且扩容比较麻烦)
  3. 配置路由:用一张独立的表来记录路由信息。(缺点是必须多查一次)
  1. 分库分表如何实现不停机扩容?
  1. 第一步:在线双写,查询走老库
    >

  2. 第二步:在线双写,查询走新库

  3. 第三步:旧库下线

  1. 分库分表会带来哪些问题?

分库的角度:

  1. 事务的问题
  2. 跨库JOIN问题:1. 代码层面关联 2. 数据异构:同步到ES的大宽表

分表的角度:

  1. 跨节点的count、order by、group by以及聚合函数问题
  2. 数据迁移、容量规划、扩容等问题
  3. ID问题
  1. 数据库CPU飙升怎么解决?
  1. xxxx
相关推荐
JiangJiang2 分钟前
🔥 面试官:Webpack 为什么能热更新?你真讲得清吗?
前端·面试·webpack
蒟蒻小袁28 分钟前
力扣面试150题--被围绕的区域
leetcode·面试·深度优先
掘金安东尼35 分钟前
字节-Trae、阿里-通义灵码、腾讯-CodeBuddy,为什么都在“卷”AI编码?
面试·llm·github
天天摸鱼的java工程师1 小时前
从被测试小姐姐追着怼到运维小哥点赞:我在项目管理系统的 MySQL 优化实战
java·后端·mysql
Clang's Blog1 小时前
一键搭建 WordPress + MySQL + phpMyAdmin 环境(支持 PHP 版本选择 & 自定义配置)
数据库·mysql·php·wordpr
异常君2 小时前
高并发数据写入场景下 MySQL 的性能瓶颈与替代方案
java·mysql·性能优化
RestCloud2 小时前
如何通过ETLCloud实现跨系统数据同步?
数据库·数据仓库·mysql·etl·数据处理·数据同步·集成平台
spionbo2 小时前
Vue 表情包输入组件实现代码及完整开发流程解析
前端·javascript·面试
天涯学馆2 小时前
前后端分离的 API 设计:技术深度剖析
前端·javascript·面试
程序员岳焱2 小时前
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
后端·sql·mysql