mysql知识点
2023-01-11 10:55:05 0 举报
AI智能生成
mysql知识点
作者其他创作
大纲/内容
索引
类型
二叉树
红黑树
hash
B-Tree
B+Tree
引擎
Innodb
聚集(叶子节点包含完整的数据记录)
MyISam
非聚集(索引文件和数据分离)
explain
id
select_type
table
type
possible_keys
key
key_len
ref
rows
extra
内部组件结构
binlog归档
mysql优化
trace工具分析
总结
MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序。index 效率高,filesort效率低
order by满足两种情况会使用Using index。 1) order by语句使用索引最左前列。 2) 使用where子句与order by子句条件列组合满足索引最左前列。
尽量在索引列上完成排序,遵循索引建立(索引创建的顺序)时的最左前缀法则。
如果order by的条件不在索引列上,就会产生Using filesort。
能用覆盖索引尽量用覆盖索引
group by与order by很类似,其实质是先排序后分组,遵照索引创建顺序的最左前缀法则。对于group by的优化如果不需要排序的可以加上order by null禁止排序。注意,where高于having,能写在where中 的限定条件就不要去having限定了。
filesort文件排序
单路排序
双路排序
索引设计原则
代码先行,索引后上
联合索引尽量覆盖条件
不要在小基数字段上建立索引
长字符串我们可以采用前缀索引
where与order by冲突时优先where
基于慢sql查询做优化
场景优化
分页优化
根据自增且连续的主键排序的分页查询
非主键子段排序的分页查询
join关联查询优化
算法
嵌套循环链接Nested-loop join(NLJ)
基于块的嵌套循环链接Block Nested-Loop(BNL)
in和exsits优化
count(*)优化
事务
属性
原子性(Atomicity)
一致性(Consistent)
隔离型(Lsolation)
持久性(Durable)
隔离级别
问题
脏读
不可重复读
幻读
级别
读未提交
读已提交
可重复读
串性化
锁
分类
性能
乐观锁
悲观锁
操作
读锁(共享锁,S锁Shared)
写锁(排他锁,X锁eXclusive)
粒度
表锁
行锁
间隙锁(Gap Lock)
临建锁(Next-key Locks)
MVCC机制
BufferPool缓存机制
0 条评论
下一页