MySQL索引数据结构原理
二叉树 - 链表结构 - 相当于全表扫描
大于自己的值,放在右边,比自己小的放在左边
红黑树 - 二叉平衡树 - 数据量大时,树的高度不可控
B-Tree树
非叶子节点也会存储数据 没有维护双向指针
树的高度 由非叶子节点 的叶叉树来决定的
16^n^ = 2Kw
B+Tree - 多叉平衡树 B-Tree树的变种 树的高度可控
非叶子节点,作为一个冗余,不存储数据
1170 * 1170 * 16 = 2Kw
叶节点大小 16KB - 16384字节
Hash - hash运算 hashmap 桶 - 一次 I/O
hash冲突
仅支持 = 等值,不支持范围查询
主键 必须有,否则MySQL会自行选择一列作为 聚簇索引,如果没有,MySQL 会做个 隐藏的 聚簇索引
且为整型
数值存储空间要小
数值比较效率要比字符串比较高
数值自增排序,避免页分裂
ASCII值
二级索引 - 非聚簇索引
回表&跳表
联合索引(复合索引)
最左前缀原则
排好序
跳过最左字段,属于是无序的结构
MVCC 多版本 并发控制
processon.com/mindmap/5dbeda6ee4b0ece75948831d
buffer pool 缓存机制
LRU算法
脏页

分布式消息中间件 RabbitMQ 、 RocketMQ 、 Kafka
分布式存储中间件 Redis 、 MongoDB 、 FastDFS、 ElasticSearch、 ELK
分布式架构(微服务框架) Zookeeper 、 Dubbo 、ShardingSphere 、 Netty
cs.usfca.edu
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Michael's Blog!
评论




