金九银十就要来了,出来面试的人也多了起来。我发现不少候选人,对数据库的认知还处在比较基础的阶段,以为会写“增删改查”、做表关联就足够了,那些工作中经常出现的问题,却支支吾吾答不上来,比如:
◆ count(*) 慢该如何解决?
◆ 对于千万级的大表,MySQL 要怎么优化?
◆ SQL 使用 Join 好,还是多次 Select 好?
◆ 1000 多万条数据,建了索引还是慢,该怎么办?
想来,我在用 MySQL 的过程中,遇到的问题也是五花八门,从开发技巧到管理维护,从性能问题到安全问题。
第一个感受就是,MySQL 本身是个设计优良的系统,其中有很多巧妙的设计思路,比如 WAL 机制、索引的实现、缓存的处理方式等等,掌握好这些,能解决日常工作中的很多问题。
那会儿,也没少在网上找资料,虽说有所收获,但内容大多脱离真实的软件开发,看的时候各种明白,上手实操就原形毕露了。太简短不全面,禁不住深挖,因此很多次都掉坑里,那么如何避坑呢?
刚好,通过最近的学习整理出一份《MySQL 性能调优与架构笔记及面试题》,笔记里都有详细讲到,已打包好,感兴趣的朋友可以私信!
MySQL 性能调优与架构笔记
一、基础篇
-
MySQL 基本介绍
-
MySQL 架构组成
-
MySQL 存储引|擎简介
-
MySQL 安全管理
-
MySQL 备份与恢复
二、性能优化篇
-
影响 MySQLServer 性能的相关因素
-
MySQL 数据库锁定机制
-
MySQL 数据库 Query 的优化
-
MySQL 数据车 Schema 设计的性能优化
-
MySQLServer 性能优化
-
常用存储引擎优化
三、架构设计篇
-
MySQL 可扩展设计的基本原则
-
可扩展性设计之 MySQLReplication
-
可扩展性设计之数据切分
-
可扩展性设计之 Cache 与 Search 的利用
-
MySQLCluster
-
高可用设计之思路及方案
-
高可用设计之 MySQL 监控
部分内容展示:
BAT 面试必问的 MySQL 核心题
-
事务四大特性(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 笔记和 MySQL 面试解析已经整理成文档了。