4.26知识点总结
索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。
索引是一种数据结构。
从应用层次,索引可以划分为:
普通索引:即一个索引只包含单个列,一个表可以有多个单列索引。
唯一索引:索引列的值必须唯一,但允许有空值。
联合索引:多个列值组成一个索引,专门用于组合搜索
不使用二叉查找树:是因为二叉查找树可能退回成一个线性链
使用B树:是由于查找数据时是要在磁盘中去查找,因此应该尽量多的在结点上存储相关的信息,减少I/O操作。
B+树的有点:1.读写代价更低:内部节点不存放指向关键字具体信息的指针,因此其内部系欸但相对B树更小,如果把所有同一内部节点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多,一次性读入内存的需要查找的关键字也就越多,相对IO读写次数就降低了。
2.B+树的查询效率更加稳定:由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。
3.B+树支持基于范围的查询
数据库解决幻读的方式:
1.对于快照读:
所谓快照读:普通的SELECT语句都是快照度,也就是在一个事务内,多次执行SELECT语句,查询到的数据都是实物开始时那个状态的数据。
所以通过mvcc(多版本并发控制)解决幻读
2.实时读就是查询时总是执行这个查询时数据库中的数据,一般使用FOR UPDATE 在查询时会先申请X锁的查询,就是所谓的实时读。解决方式是通过可重复读+间隙锁

浙公网安备 33010602011771号