事务的四大特性
1. 原子性,要么执行,要么不执行
2. 隔离性,所有操作全部执行完之前其它会话不能看到过程
3. 一致性,事务前后数据总额一致
4. 持久性,一旦事务提交,对数据的改变就是永久的
索引有B+索引和hash索引
Hash索引:等值查询效率高,不能排序,不能进行范围查询
B+索引:数据有序,可以进行范围查询
索引的优缺点
索引最大的好处是可以提高查询速度,缺点是更新数据时效率低,因为会同步更新索引内容
如果要对数据进行频繁的查询则要建立索引,如果要频繁更改数据则不建议使用索引
索引的底层实现(B+树,为什么不用B树、红黑树)
红黑树:当增加和删除的时候红黑树会进行频繁的调整,来保证红黑树的结构正确,浪费时间
B树:查询性能不稳定,查询结果高度不一致,每个节点保存指向真实数据的指针,相比每个B+树每一层存储的元素更多,显得高一些
B+树:相较于另外两种树,显得更矮,查询层次更浅
B+树的实现
一个m阶B+树有如下特征:
1. 有k个子树的中间节点包含有k个元素,每个元素不保存数据,只用来索引,所有数据都保存在叶子节点
2. 所有的叶子节点中包含了全部元素的信息,以及指向含这些元素记录的指针,且叶子结点本身依据关键字的大小自小而大顺序连接
3. 所有中间结点元素都同时存在于子节点,在子节点元素中是最大或最小元素
使用B+树的原因
索引查找过程需要产生磁盘的IO消耗,主要看的是IO的次数,和磁盘存取原理有关
检索一次最多需要访问树高的结点
将一个结点的大小设为等于一个页,每个结点只需要一次IO就可以完全载入
索引分类
普通索引:最基本的索引,没有限制
唯一索引:与普通索引类似,但是索引的值必须唯一,但允许有空值
主键索引:它是一种特殊的索引,不允许有空值
全问索引:针对较大的数据
数据库三范式
1NF:属性不可分
2NF:非主键属性完全依赖于主键属性
3NF:非主键属性无传递依赖
参考链接:https://blog.csdn.net/qq_22222499/article/details/79060495