mysql 优化 经验汇总
https://cs.usfca.edu
cs.usfca.edu/~galles/visualization/bst.html
二叉树:小的插入左边,大的插入右边
红黑树:平衡二叉树
B-Tree: 横向存放更多的节点数据(data)
B+tree: 16/(8+6)=1170b,节点从左到右依次递增,非叶子节点不存储数据,只放索引
聚集索引:索引和数据文件放在同一个文件里
非聚集索引:索引和数据文件放在不同的文件里
myi
myd
rowid 隐藏列,mysql引擎自己维护,会占用数据库资源
整型比较大小,字符串逐个字符比较
innodb
myisam
索引是排好序的数据结构
表是排行序的数据文件
O(1)时间复杂度
hash:一维数组+链表,hash冲突问题,不支持范围,支持==, in
联合索引的存储
单字段索引和联合索引
联合索引最左匹配原则
非叶子节点会默认加载到内存,方便提供效率,
1.b树和b+树数据的区别?
b+非叶子节不包含数据,b树所有节点上包含数据
存储树的高度,横向存储数据的长度 16(n)=2000万数据
90% 单表走索引
表关联底层逻辑:NLJ BLJ
db扩容比web应用扩容难得多,所有逻辑从大sql里抽取到c#代码里完成