mysql数据结构及mvcc

索引

帮助mysql高效获取数据排好序数据结构

B-tree

B+-tree mysql主键索引与单列索引


b+-tree增加优化:1.叶子数据节点有指针,范围查询时可以更快。2.数据都放置在最下层叶子节点,上层节点占用空间小,可以有更多分叉,树高度会小,查询更快

联合索引


最左匹配原则

MVCC

在使用READ COMMITTD\REPEATABLE READ这两种隔离级别的事务在执行普通的select操作时访问记录的版本链的过程。可以让不同事务的读写、写读操作并发执行,从而提升性能。这两个隔离级别很大不同就是生产READVIEW的实际不同。READ COMMITTD在每次进行普通select操作前会生产readview,而REPEATABLE READ只有在第一次仅限普通select操作前生成readview,之后的查询操作都重复使用第一次生成的readview。

版本链

readview

存储事务id

mysql 索引下推

mysql锁

读锁,写锁
READ COMMITTD隔离事务中,只会对写的固定行加锁,其他的行则不会阻塞。
REPEATABLE READ 隔离事务中,会加间隙锁,会对有影响的行加锁。

自己mysql优化过程

配置msyql开启慢查询sql;
拿到sql后使用explain检查sql查看分析结果
id:选择标识符
select_type:表示查询的类型。
table:输出结果集的表
partitions:匹配的分区
type:表示表的连接类型
possible_keys:表示查询时,可能使用的索引
key:表示实际使用的索引
key_len:索引字段的长度----长度越短越好
ref:列与索引的比较
rows:扫描出的行数(估算的行数)
filtered:按表条件过滤的行百分比
Extra:执行情况的描述和说明

posted @ 2021-03-30 22:10  蓝团青  阅读(115)  评论(0编辑  收藏  举报