1、架构
存储模块、缓存机制、SQL解析、日志管理、权限划分、容灾机制、索引管理、锁管理
2、索引
-
为什么要用索引?
答:通常在数据查询中,我们要避免全表扫描,但这并不意味着全表扫描的速度就慢,也要分情况,如果数据量少的情况,我们就可以一次性全表扫描将其全部取出并丢进缓存,但如果数据量大,全表扫描就会变得特别慢,从而影响程序整体的响应效率,为此,在数据量的情况下,我们尽可能会采用索引来优化查询,就跟字典中的部首与拼音一般为我们提升查询效率。
-
什么样的信息能称为索引?
答:能将记录限定在一定范围内的关键信息,如主键、唯一键、普通键或多种信息组合成的组合键等。
-
索引的数据结构?
- 二叉树
优点:查找速度快,可类比二分查找
缺点:若插入数据的顺序与数值依次递增,会导致二叉树成线性排列,失去二分查找的优点,从而导致查询效率下降
- B-Tree
每个存储块中,包含了关键字与指向孩子结点的指针,根节点至少包括两个孩子,且树中的每个节点最多含有m(m>=2)个孩子,除根节点与叶节点外,其他每个节点至少有ceil(m/2)个孩子(ceil函数表示向上取整),所有叶子结点都位于同一层,假设每个非终端节点中有n个关键字信息,其中关键字按照升序排序,关键字的个数n满足n<=m-1,即关键字个数至少比孩子指针的个数少1,最后关键字所指向的孩子结点个关键字必须小于该关键字
- B+Tree
- 非叶子结点的子树指针与关键字个数相同
- 非叶子结点的子树指针**P[i]**,指向关键字值**[K[i],K[i+1])**的子树
- 非叶子结点仅用来索引,数据都保存在叶子节点中
- 所有叶子节点均有一个链指针指向下一个叶子结点以加快查询速率
至此B+Tree的优点就很明显了,因为其文件内部只存放关键字数据,所以其占用的内存更少&#x