目录 索引 1. 索引是什么? 2. 索引有哪些优缺点? 3. MySQL有哪几种索引类型? 4. 说一说索引的底层实现? 5. 为什么索引结构默认使用B+Tree,而不是B-Tree,Hash,二叉树,红黑树? 6. 讲一讲聚簇索引与非聚簇索引? 7. 非聚簇索引一定会回表查询吗? 8. 联合索引是什么?为什么需要注意联合索引中的顺序? 9. 讲一讲MySQL的最左前缀原则? 10. 讲一讲前缀索引? 11. 了解索引下推吗? 12. 怎么查看MySQL语句有没有用到索引? 13. 为什么官方建议使用自增长主键作为索引? 14. 如何创建索引? 15. 创建索引时需要注意什么? 16. 建索引的原则有哪些? 17. 使用索引查询一定能提高查询的性能吗? 18. 什么情况下不走索引(索引失效)? 1、使用!= 或者 <> 导致索引失效 2、类型不一致导致的索引失效 3、函数导致的索引失效 4、运算符导致的索引失效 5、OR引起的索引失效 6、模糊搜索导致的索引失效 7、NOT IN、NOT EXISTS导致索引失效 基础 1. 数据库的三范式是什么? 2. MySQL 支持哪些存储引擎? 3. 超键、候选键、主键、外键分别是什么? 4. SQL 约束有哪几种? 5. MySQL 中的 varchar 和 char 有什么区别? 6. MySQL中 in 和 exists 区别 7. drop、delete与truncate的区别 8. 什么是存储过程?有哪些优缺点? 9. MySQL 执行查询的过程 事务 1. 什么是数据库事务? 2. 介绍一下事务具有的四个特征 3. 说一下MySQL 的四种隔离级别 4. 什么是脏读?幻读?不可重复读? 5. 事务的实现原理 6. MySQL事务日志介绍下? redo log undo log 7. 什么是MySQL的 binlog? 8. 在事务中可以混合使用存储引擎吗? 9. MySQL中是如何实现事务隔离的? 10. 什么是 MVCC? 11. MVCC 的实现原理 锁 1. 为什么要加锁? 2. 按照锁的粒度分数据库锁有哪些? 3. 从锁的类别上分MySQL都有哪些锁呢? 4. 数据库的乐观锁和悲观锁是什么?怎么实现的? 5. InnoDB引擎的行锁是怎么实现的? 6. 什么是死锁?怎么解决? 7. 隔离级别与锁的关系 8. 优化锁方面的意见? 分库分表 1. 为什么要分库分表? 2. 用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点? cobar TDDL atlas sharding-jdbc mycat 3. 如何对数据库如何进行垂直拆分或水平拆分的? 读写分离、主从同步(复制) 1. 什么是MySQL主从同步? 2. MySQL主从同步的目的?为什么要做主从同步? 3. 如何实现MySQL的读写分离? 4. MySQL主从复制流程和原理? 5. MySQL主从同步延时问题如何解决? MySQL优化 1. 如何定位及优化SQL语句的性能问题? 2. 大表数据查询,怎么优化 3. 超大分页怎么处理? 4. 统计过慢查询吗?对慢查询都怎么优化过? 5. 如何优化查询过程中的数据访问 6. 如何优化关联查询 7. 数据库结构优化 8. MySQL数据库cpu飙升到500%的话他怎么处理? 9. 大表怎么优化