前言
在找工作的过程中,对于 MySQL 技术知识的掌握已经成为必须的技能。面试常常就会被问到MySQL相关知识,而这次我就差点倒在了阿里3面,面试官连问我以下几个MySQL的问题,然后就卡壳了.
关于学习 MySQL的思维脑图(Xmind)
近几年,开源数据库逐渐流行起来。由于具有免费使用、配置简单、稳定性好、性能优良等 优点,开源数据库在中低端应用上占据了很大的市场份额,而 MySQL 正是开源数据库中的 杰出代表。
关于MySQL的内容整理,包括了面试题、学习笔记、使用文档以及Xmind思维图几个部分,需要高清完整版的请转发+关注,然后私信回复“MySQL”获得免费领取方式
这是一份BATJ架构师实战整理的深入浅出MySQL文档,共分为4个部分31章。
其中4个部分分别为基础篇、开发篇、优化篇、管理维护篇。
所分的31章具体目录如下:
基础篇
- 第 1 章 MySQL 的安装与配置
- 第 2 章 SQL 基础
- 第 3 章 MySQL 支持的数据类型
- 第 4 章 MySQL 中的运算符
- 第 5 章 常用函数
- 第 6 章 图形化工具的使用
部分知识节点
开发篇
- 第 7 章 表类型(存储引擎)的选择
- 第 8 章 选择合适的数据类型
- 第 9 章 字符集
- 第 10 章 索引的设计和使用
- 第 11 章 视图
- 第 12 章 存储过程和函数
- 第 13 章 触发器
- 第 14 章 事务控制和锁定语句
- 第 15 章 SQL 中的安全问题
- 第 16 章 SQL Mode 及相关问题
部分知识节点
优化篇
- 第 17 章 常用 SQL 技巧和常见问题
- 第 18 章 SQL 优化
- 第 19 章 优化数据库对象
- 第 20 章 锁问题
- 第 21 章 优化 MySQL Server
- 第 22 章 磁盘 I/O 问题
- 第 23 章 应用优化
部分知识节点
管理维护篇
- 第 24 章 MySQL 高级安装和升级
- 第 25 章 MySQL 中的常用工具
- 第 26 章 MySQL 日志
- 第 27 章 备份与恢复
- 第 28 章 MySQL 权限与安全
- 第 29 章 MySQL 复制
- 第 30 章 MySQL Cluster
- 第 31 章 MySQL 常见问题和应用技巧
部分知识节点
部分内容截图
关于MySQL,面试官会问哪些问题?
- 第一个:MySQ性能优化最佳实践21个(有具体的解释)你知道哪些?
- 为查询缓存优化你的查询
- EXPLAIN你的SELECT查询
- 当只要一行数据时使用LIMIT 1
- 为搜索字段建索引
- 在Join表的时候使用相当类型的例,并将其索引
- 千万不要 ORDER BY RAND()
- 避免 SELECT *
- 永远为每张表设置一个 ID
- 使用 ENUM 而不是 VARCHAR
- 从 PROCEDURE ANALYSE() 取得建议
- 尽可能的使用 NOT NULL
- Prepared Statements
- 无缓冲的查询
- 把 IP 地址存成 UNSIGNED INT
- 固定长度的表会更快
- 垂直分割
- 拆分大的 DELETE 或 INSERT 语句
- 越小的列会越快
- 选择正确的存储引擎
- 使用一个对象关系映射器(Object Relational Mapper)
- 小心“永久链接”
- 第二个:来看下MySQL的高频20问(附带详细解答,整理成册)
- 事务四大特性(ACID)原子性、一致性、隔离性、持久性?
- 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认是哪个级别?
- MySQL常见的三种存储引擎(InnoDB、MyISAM、MEMORY)的区别?
- MySQL的MyISAM与InnoDB两种存储引擎在,事务、锁级别,各自的适用场景?
- 查询语句不同元素(where、jion、limit、group by、having等等)执行先后顺序?
- 什么是临时表,临时表什么时候删除?
- MySQL B+Tree索引和Hash索引的区别?
- sql查询语句确定创建哪种类型的索引?如何优化查询?
- 聚集索引和非聚集索引区别?
- 有哪些锁(乐观锁悲观锁),select 时怎么加排它锁?
- 非关系型数据库和关系型数据库区别,优势比较?
- 数据库三范式,根据某个场景设计数据表?
- 数据库的读写分离、主从复制,主从复制分析的 7 个问题?
- 使用explain优化sql和索引?
- MySQL慢查询怎么解决?
- 什么是 内连接、外连接、交叉连接、笛卡尔积等?
- mysql都有什么锁,死锁判定原理和具体场景,死锁怎么解决?
- varchar和char的使用场景?
- mysql 高并发环境解决方案?
- 数据库崩溃时事务的恢复机制(REDO日志和UNDO日志)
第三个:MySQL 面试题(高级进阶部分)
- 请解释关系型数据库概念及主要特点?
- 请说出关系型数据库的典型产品、特点及应用场景?
- 请解释非关系型数据库概念及主要特点?
- 请说出非关系型数据库的典型产品、特点及应用场景?
- 请详细描述 SQL 语句分类及对应代表性关键字。
- 请详细描述 char(4)和 varchar(4)的差别。
- 如何授权 oldboy 用户从 172.16.1.0/24 访问数据库。
- 什么是 MySQL 多实例,如何配置 MySQL 多实例?
- 如何加强 MySQL 安全,请给出可行的具体措施?
- delete 和 truncate 删除数据的区别?
- MySQL Sleep 线程过多如何解决?
- sort_buffer_size 参数作用?如何在线修改生效?
- 如何在线正确清理 MySQL binlog?
- Binlog 工作模式有哪些?各什么特点,企业如何选择?
- 误操作执行了一个 drop 库 SQL 语句,如何完整恢复?
- mysqldump 备份使用了-A -B 参数,如何实现恢复单表?
- 详述 MySQL 主从复制原理及配置主从的完整步骤。
- 如何开启从库的 binlog 功能?
- MySQL 如何实现双向互为主从复制,并说明应用场景?
- MySQL 如何实现级联同步,并说明应用场景?
- MySQL 主从复制故障如何解决?
- 如何监控主从复制是否故障?
- MySQL 数据库如何实现读写分离?
- 生产一主多从从库宕机,如何手工恢复?
目前国内 MySQL需求旺盛,各大知名企业高薪招聘技术能力强的 MySQL 开发人员和管理人员。
总而言之,面试官问来问去,问的那些MySQL知识点也就这么多吧,许是我复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。学习是自己的事,作为开发人员,MySQL是必须要掌握的,如果拥有大厂梦,基础可不能太差,如果你对MySQL还有很多不解问题,将这些MySQL面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习,