表都存在磁盘上,在data目录,一个表两个文件
应用调用操作系统内核,内核调用磁盘IO到磁盘获取数据到内存中
磁盘存取:寻道(磁道)-->旋转(扇区)--->预读(按页)
【树的核心思想:分而治之】
二叉树:
每个节点都有key和value,都有左子节点和右子节点,左小右大
二叉树是树结构的基础
红黑树:【优化的二叉树】
1 节点是红色或黑色
2 根节点是黑色
3 每个红色节点的两个子节点都是黑色
4 新插入的节点默认为红色
平衡措施:
1 变色 2 自旋
B树:【多路平衡树】
*度:节点数据存储个数
*叶节点具有相同深度
*叶节点的指针为空
*节点中的数据key从左到右递增排列
B+树:
非叶子节点不存储data,可以增加度,把树压底
所有叶子节点都有一个链指针
顺序访问指针提高访问性能
hash索引:
有连续数组,哈希值直接一次查找,但不适合范围查找
聚集索引:数据和索引放在一起
非聚簇索引:索引和地址在一起,要取数据就到该点地址取
innoDB怎么保证有主键?
搭:如果没有指定主键也没有指定唯一约束,mysql有一个隐藏功能自动生成
为什么推荐使用整型的自增主键?
答:
联合索引:
最左匹配原则:
如果字段A B C一起建立联合索引,只用 B C查询,则没用到索引;
如果是A C查询条件,则只有A字段用到索引匹配;
如果用A C B或B C A查询条件,则联合索引都用到,msql有【全值匹配】功能
如果A B>? C,则C不走索引