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