MySQL面试题

mysql优化

如何定位慢查询

  • 慢查询的原因:聚合查询,多表查询,表数据量过大查询,深度分页查询。表现为页面加载慢,接口响应慢

  • 定位方法:1,使用运维工具skywalking2,mysql自带的慢日志(mysql默认不开启,手动开启注意调试的时候才开,比较消耗性能)

  • 解决慢查询:1,在查询语句前加explain2,

MySQL索引

索引的概念

索引的底层数据结构是B+树

  • 在创建索引时就要排序,根据where条件决定走哪个索引

  • B+树叶子节点才存数据,叶子节点之间有双向指针,便于扫库、范围查询

聚簇索引,二级索引(非聚集索引),回表

  • 聚集索引:数据索引放一块。叶子节点保存整行数据。必须有只能有一个

    • 聚簇索引
  • 二级索引:数据索引分开放。叶子节点保存的主键。可有多个

  • 回表查询:先通过二级索引找到主键,再到聚集索引里找到整行的数据,使用了两次索引查询

  • 覆盖索引:查询用了索引,在一个索引里就能找到想要的所有数据,就使用了一次索引

  • MySQL超大分页处理:覆盖索引+子查询

索引创建原则

  • 答题方式

    • 在实际工作中是怎么用的

    • 主键索引

    • 唯一索引

    • 根据业务创建的索引(复合索引)

  • 重点

    • 数据量大,查询还频繁

    • 针对于where,order by,group by操作字段创立索引

    • 尽量使用联合索引

    • 控制索引数量

索引失效

自己想一想自己遇到的情况,不要上来就背,适当思考,回想,更真实。可以使用explain判断是否失效

  • 违反最左前缀原则(用到的是复合索引联合)

  • 范围查询右边的列,不能使用索引

  • 在索引上运算会失效

  • 字符串不加单引号会造成失效,类型转换会导致

  • %开头的like模糊查询,可能失效

MySQL优化经验

表的设计优化,参考阿里开发手册《山高山版》

join优化,以小表为基础,小表放在外面循环

MySQL事务相关

  • 事务特性

    • 事务是一组操作的集合,一个不可分割的工作单位。同时成功,要么同时失败

    • ACID:

      • 原子性:要么都成功要么都失败

      • 一致性:数据保持一致

      • 隔离性:不受其他并发操作影响

      • 持久性:事务提交或回滚对数据库中数据的改变是永久的

并发事务会带来问题:脏读(读到另一个事务还没提交的数据),不可重复读(一个事务连读两次,数据不一样),幻读(查询没有,插入又说有。因为解决了前面的不可重复读,)

  • 解决方法:隔离。

    • 隔离级别有。默认使用可重复读。串行化最安全但效率太低了

    • undo log:记录数据被修改前的信息,一致性,原子性,作用包括:回滚(插入),mvcc(更新,删除)

    • redo log:记录事务提交时数据页的物理修改,实现事务持久性,服务器宕机,用来恢复数据

    • 缓冲池(buffer pool):当一个缓存来,先操作内存中的缓冲池,

    • 数据页:放在磁盘中

    • 隔离性由:锁,mvcc保证

  • mvcc多版本并发控制:维护一个数据的多个版本,使得读写操作没有冲突

    • 多个事务并发,到底访问哪个版本。

    • mvcc实现依赖于:隐式字段,undo log日志,readview

      • 实现原理:
    • undolog版本链:修改记录的链子

    • readview快照读

    • 当前读:最新记录,会加锁

    • 快照读:没加锁,

分库分表

相关推荐
聆风吟º12 小时前
Oracle到KingbaseES数据库迁移:全流程实战指南与避坑总结
数据库·oracle·数据库迁移·kingbasees
哈__12 小时前
Oracle至KingbaseES数据库迁移全攻略:痛点拆解、配置实操与问题排查
数据库·oracle
JZC_xiaozhong13 小时前
电商ERP如何同步订单数据到MySQL?集成方案解析
数据库·mysql·数据分析·etl工程师·嵌入式实时数据库·电商erp集成·数据集成与应用集成
消失的旧时光-194313 小时前
第四篇(实战): 订单表索引设计实战:从慢 SQL 到毫秒级
java·数据库·sql
知识分享小能手13 小时前
Oracle 19c入门学习教程,从入门到精通, Oracle 表空间与数据文件管理详解(9)
数据库·学习·oracle
zhengfei61114 小时前
Chroma DB — 未经授权的信息披露
数据库
KaiwuDB14 小时前
KaiwuDB 获评“2025 中国大数据产业年度国产化优秀代表厂商”
数据库
百***074514 小时前
一步API+Gemini 3.0 Pro进阶实战:多模态开发、性能调优与项目落地
数据库·microsoft
不想写bug呀14 小时前
Redis主从复制介绍
数据库·redis
颜颜yan_14 小时前
Oracle 迁移到 KingbaseES 实战:从评估到追平的一套可落地流程
数据库·oracle