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
相关推荐
TuringSnowy18 分钟前
SQL_having_pandas_filter
数据库·笔记·sql·mysql·pandas
柴可夫司机i1 小时前
.NET MAUI(.NET Multi-platform App UI)下拉选框控件
android·.net·visual studio·xamarin
stark张宇1 小时前
lnmp - BasicAuth、Mysql、Linux的用户管理、ssh免密登录
linux·后端·mysql
alien爱吃蛋挞2 小时前
MySQL之基础篇
数据库·笔记·mysql
zhangphil2 小时前
Android PopupWindow.showAsDropDown报错:BadTokenException: Unable to add window
android
16seo2 小时前
Android使用RecyclerView仿美团分类界面
android·gitee
爱学的小涛2 小时前
【MySQL】常见的SQL优化方式(一)
数据库·笔记·后端·sql·mysql
前端物语2 小时前
深入解析 Android 的 evaluateJavascript
android·java·前端
峥嵘life2 小时前
Android 热点分享二维码功能简单介绍
android
Jackson__3 小时前
浅谈 nodejs 的事件循环机制
前端·面试·node.js