超详细的MySQL知识点汇总
2021-11-02 15:32:32 100 举报
AI智能生成
超详细的MySQL知识点汇总
作者其他创作
大纲/内容
常见的MySQL存储引擎
<b><font color="#f44336">MyISAM</font></b>
特点
SQL 走 MyISAM 中索引时的流程
<b><font color="#f44336">InnoDB</font></b>
特点
SQL 走 InnoDB 中索引时的流程
使用建议
区别
索引
<b><font color="#f44336">索引的数据结构</font></b>
<strike>二叉树</strike>
<strike>红黑树</strike>
<b><font color="#f44336">Hash</font></b>
优点
缺点
<strike>B-Tree</strike>
<font color="#f44336"><b>B+Tree</b></font>
优点
为什么使用B+树而非B树
索引查询时MySQL的优化
<font color="#f44336"><b>索引种类</b></font>
是否聚簇分
聚簇/集索引
非聚簇/集索引
按类型分
普通索引
唯一索引
主键索引
复合索引
索引结构
最左前缀原则
全文索引
<b><font color="#f44336">关于索引的 SQL 优化相关建议</font></b>
<b><font color="#f44336">索引优化实例</font></b>
SQL优化原则
减少访问量
减少计算操作
联合索引第一个字段用范围不会走索引
in和or在表数据量比较大的情况会走索引,在表记录不多的情况下会选择全表扫描
like xx% 无论数据量多少一般情况都会走索引
<font color="#f44336"><b>索引下推</b></font>
<b><font color="#f44336">MySQL 如何选择索引</font></b>
<b><font color="#f44336">常见SQL的深入优化</font></b>
Order by与Group by优化
案例
总结
文件排序
单路排序
双路排序
分页查询优化
根据自增且连续的主键排序的分页查询
根据非主键字段排序的分页查询
join关联查询优化
两种算法<br>
嵌套循环连接 Nested-Loop Join(NLJ) 算法
基于块的嵌套循环连接 Block Nested-Loop Join(BNL)算法
优化建议
in和exsits优化
count查询优化
四种方式
效率对比
优化建议
<b><font color="#f44336">索引设计原则</font></b>
代码先行,索引后上
联合索引尽量覆盖条件
不要在小基数字段上建立索引
尽量对字段类型较小的列设计索引
长字符串可以采用前缀索引
where 与 order by 冲突时优先 where
基于慢SQL查询做优化
Explain
作用
Explain 中的列
id
select_type
table
<b><font color="#f44336">type</font></b>
<b><font color="#f44336">possible_keys</font></b>
<font color="#f44336"><b>key</b></font>
<b><font color="#f44336">key_len</font></b>
ref
rows
<font color="#f44336"><b>Extra</b></font>
partitions
filtered
MySQL事务与锁
<b><font color="#f44336">事务</font></b>
MySQL中的事务是什么
ACID属性
原子性(Atomicity)
一致性(Consistent)
隔离性(Isolation)
持久性(Durable)
并发事务带来的问题
脏写/更新丢失(Lost Update)
脏读(Dirty Reads)
不可重读(Non-Repeatable Reads)
幻读(Phantom Reads)
事务的隔离级别
读未提交(Read uncommitted)
读已提交(Read committed)
可重复读(Repeatable read)
可串行化(Serializable)
不同隔离级别解决的事务问题
锁
数据库中的锁是什么
<font color="#f44336"><b>分类</b></font>
性能上
乐观锁
悲观锁
操作类型上
读锁(共享锁,S锁(Shared))
写锁(排它锁,X锁(eXclusive))
数据操作粒度上
表锁
行锁
间隙锁(Gap Lock)
临键锁(Next-key Locks)
<b><font color="#f44336">MyISAM 和 InnoDB 加锁对比</font></b>
锁情况分析
<b><font color="#f44336">锁优化建议</font></b>
两种机制
<b><font color="#f44336">MVCC(多版本并发控制)机制</font></b>
实现原理
undo 日志版本链
read view
版本链对比规则
<b><font color="#f44336">BufferPool 缓存机制</font></b>
作用
原理
其他
常用命令
长连接问题
<b><font color="#f44336">SQL执行过程</font></b>
鸡肋的MySQL查询缓存
<font color="#f44336"><b>MySQL内部组件结构</b></font>
MySQL连接过程
MySQL优化器与执行计划
词法分析器原理
查询优化器
<b><font color="#f44336">SQL执行顺序</font></b>
<b><font color="#f44336">MySQL数据类型选择</font></b>
数值类型
日期和时间
字符串
0 条评论
下一页