MySQL常见知识点及面试题

南风 2021年05月27日 62次浏览

MySQL知识点击面试常见题

MySQL

逻辑架构

一层:非MySQL独有,客户端/服务器的工具

二层:核心功能层,解析、分析、优化、缓存等功能实现

三层:存储引擎层

并发控制

锁机制

  • 读写锁

  • 锁粒度

    • 表锁
    • 行级锁
  • 间隙锁(范围锁)

多版本并发控制

事务

隔离级别

  • READ_UNCOMMITED
  • READ_COMMITED
  • REPEATABLE_READ
  • SERIALIZABLE

数据一致性

  • A(原子性)
  • C(一致性)
  • I(隔离性)
  • D(持久性)

log

  • redo log
  • undo log
  • binlog

面试题

1、MySQL的事务隔离级别及解决的问题?
2、什么防止SQL注入攻击?
3、MySQL的间隙锁原理与实现?
4、MySQL有哪些索引?实现原理是什么问题?各个索引类型之间有什么区别?
5、SQL如何优化?
6、你平时如何设计数据库表?
  • 一范式
  • 二范式
  • 三范式
7、你们什么解决MySQL主从延迟的问题?主从同步的机制是什么?
8、MySQL如何保证ACID?
  • undo log
  • bin log
  • redo log
9、一颗B+树索引树能够挂多少记录?怎样计算?

性能优化

索引优化

查询优化

存储优化

Schema优化建议

更小通常更好

简单类型减少CPU周期

索引列避免使用NULL

VACHAR合适的长度最好

使用枚举代替字符串

高性能索引

索引类型

  • B-TREE
  • HASH
  • R-TREE

索引策略

  • 主键索引
  • 普通索引
  • 聚簇索引
  • 覆盖索引

执行计划分析

  • 性能分析关注点

    • 1、是否使用到相关索引

      • 尽量避免回表查询(使用覆盖索引)
      • 精简返回值,避免使用select *
    • 2、关注扫描行数

    • 3、关注select_type

索引失效场景

  • 1、OR过滤
  • 2、查询类型和索引类型不一致
  • 3、前缀模糊
  • 4、联合索引和查询条件顺序不匹配(最左匹配)
  • 5、查询条件中包含运算
  • 6、mysql引擎优化器判断全表比索引开销小的时候
  • 7、索引列上使用内置函数,一定会导致索引失效
  • 8、索引字段可以为null,使用is null或is not null时,可能会导致索引失效