2022年MySQL最新面试题 - 前言

3/4/2022

最近整理一份关于MySQL常见面试题的,也会根据自己的经验, 标注一些出现的概率,最高5颗★出现的概率最高。比如这样:

百万级别或以上的数据如何删除
出现概率: ★★★

一般来讲在面试当中, 关于数据库相关的面试题频率出现比较高的几个关键词是SQL优化、索引、存储引擎、事务、死锁、乐观锁、悲观锁、关系型数据库和非关系数据库对比等等。 把这几个点问完基本也差不多10~20分钟了(一般一轮面试1小时左右), 基本这些可以让面试官对你的数据库知识有一定的了解了。

如果你线上运维经验, 一般也会问一些比如数据库扩容, 如何给大表加索引, 如何在业务高峰是给一个大表添加字段等。

也欢迎关注我的公众号: 漫步coding, 回复: mysql免费获取最新Mysql面试题汇总(含答案)。 一起交流, 在coding的世界里漫步。

希望这篇文章可以帮助大家, 也希望大家都能找到找到的好工作。

# 目录

  • 一、数据库基础知识

    • 1、平时MySQL主要用哪个版本
    • 2、数据库三大范式是什么
    • 3、MySQL有关权限的表都有哪几个
    • 4、MySQL的binlog有有几种录入格式?分别有什么区别?
    • 5、平时用到哪些关系型数据库和非关系数据库, 可以谈谈你对它们的理解吗?
    • 6、可以简单说说你对MySQL的逻辑架构了解吗?
    • 7、了解MySQL中的MVCC是什么?
    • 8、PostgreSQL相对于MySQL的优势
    • 9、PostgreSQL和MySQL的一些区别
  • 二、索引

    • 1、索引有哪些使用场景(重点)
    • 2、索引的数据结构(b树,hash)
    • 3、创建索引的原则是什么?(重中之重)
    • 4、使用索引查询一定能提高查询的性能吗?为什么
    • 5、索引有哪些优缺点?
    • 6、讲一讲聚簇索引与非聚簇索引?
    • 7、百万级别或以上的数据如何删除
    • 8、什么是最左前缀原则?什么是最左匹配原则
    • 9、数据库为什么使用B+树而不是B树
    • 10、非聚簇索引一定会回表查询吗?
    • 11、有哪些情况, 索引会失效, 可以简单说说吗?
  • 三、MySQL存储引擎

    • 1、可以简单谈谈MySQL存储引擎MyISAM与InnoDB区别
    • 2、MyISAM索引与InnoDB索引的区别?
    • 3、InnoDB引擎的4大特性
  • 四、MySQL事务

    • 1、什么是数据库事务?
    • 2、事物的四大特性(ACID)介绍一下?
    • 3、什么是脏读?幻读?不可重复读?
    • 4、什么是事务的隔离级别?MySQL的默认隔离级别是什么?
    • 5、隔离级别的实现原理
    • 6、事务延伸点: 分布式事务
  • 五、MySQL数据库读写锁

    • 1、谈一谈MySQL的读写锁
    • 2、隔离级别与锁的关系
    • 3、按照锁的粒度分数据库锁有哪些?锁机制与InnoDB锁算法
    • 4、从锁的类别上分MySQL都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了
    • 5、MySQL中InnoDB引擎的行锁是怎么实现的?
    • 6、InnoDB存储引擎的锁的算法有三种
    • 7、什么是死锁?怎么解决?
    • 8、数据库的乐观锁和悲观锁是什么?怎么实现的?
  • 六、MySQL视图

    • 1、为什么要使用视图?什么是视图?
    • 2、视图有哪些特点?
    • 3、视图的使用场景有哪些?
    • 4、视图的优点
    • 5、视图的缺点
    • 6、存储过程与函数
  • 七、MySQL触发器

    • 1、什么是触发器?触发器的使用场景有哪些?
    • 2、MySQL中都有哪些触发器?
  • 八、MySQL数据库优化

    • 1、为什么要优化
    • 2、数据库结构优化
    • 3、MySQL数据库cpu飙升到500%的话他怎么处理?
    • 4、大表怎么优化?某个表有近千万数据,CRUD比较慢,如何优化?
    • 5、垂直分表的适用场景和优缺点
    • 6、水平分表的适用场景和优缺点
    • 7、MySQL的复制原理以及流程
    • 8、读写分离有哪些解决方案?
    • 9、数据表损坏的修复方式有哪些?
  • 九、MySQL部署和运维

    • 1、如何更新给一个大表建索引
    • 2、如何批量删除N行记录, 有什么注意事项
    • 3、如何删除表?
    • 4、MySQL如何扩容
    • 5、如何排查因为MySQL导致CPU占用高的问题?
    • 6、MySQL数据库磁盘IO使用高,请问如何进行排查?
    • 7、如何批量插入大量数据?
    • 8、数据备份和恢复