数据库常见知识点

1、关系型数据库和非关系型数据库

数据库常见知识点_第1张图片

2、事务的一般特点(ACID)

 

事务(txn)是一系列在共享数据库上执行的行为,以达到更高层次更复杂逻辑的功能。事务是DBMS中最基础的单位,事务不可分割。

ACID,是指在可靠数据库管理系统(DBMS)中,事务(transaction)所应该具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。

原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性是指事务使得系统从一个一致的状态转换到另一个一致状态。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。

多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。这指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。

持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。即使出现了任何事故比如断电等,事务一旦提交,则持久化保存在数据库中。

3、数据库的三大范式

第一范式,字段具有原子性,不可再分性

第二范式,不存在除主键以外的函数依赖

第三范式,不存在传递函数依赖,即某一属性依赖于非主键属性,非主键属性又依赖于主键,形成传递函数依赖

 

1、二分查找树BST,左子树都比根节点要小,右子树都比根节点要大


但是在极端情况下会退化成链表,所以引入AVL树,平衡二叉树,利用左旋右旋来满足树的高度相差不超过1,但是插入性能和查找性能都不高。

因此牺牲一部分插入性能,引入红黑树,最短子树与最长子树的高度差不超过2倍,通过旋转和变色完成、其中插入的一定是红色节点。不能有两个红色节点相邻,同样长路径中的黑色节点数目相同,根节点和叶节点插是黑的,任何不平衡都会在三次旋转之内解决,左旋,右旋,变色

红黑树与AVL的比较:

AVL是严格平衡树,因此在增加或者删除节点的时候,根据不同情况,旋转的次数比红黑树要多;

红黑是用非严格的平衡来换取增删节点时候旋转次数的降低;

所以简单说,如果你的应用中,搜索的次数远远大于插入和删除,那么选择AVL,如果搜索,插入删除次数几乎差不多,应该选择RB。

 

B树的话每个节点都有key和value数值,而页的大小有限,因此存放的key就会比较有限,数的高度也会增加,磁盘IO读取次数也会增打

B+树的话就可以很好的避免这个问题,所有的数据都存放在叶子节点中,MySQL的存储方式

聚簇索引的特点:
1. 按主键值的大小进行记录和页的排序:
数据页(叶子节点)里的记录是按照主键值从小到大排序的一个单向链表。
数据页(叶子节点)之间也是是按照主键值从小到大排序的一个双向链表。
B+树中同一个层的页目录也是按照主键值从小到大排序的一个双向链表。


2. B+树的叶子节点存储的是完整的用户记录,就是指这个记录中存储了所有列的值(包括隐藏列)。
具有这两种特性的B+树称为聚簇索引

 

2、mysql中搜索引擎InnoDB与Mylsam的区别:


 innoDB中数据和索引存放在同一个文件中,数据即索引,索引即数据,但是myisam中放在不同位置,而且底层存放的数据的地址
innoDB支持事务,Mylsam并不支持
innoDB支持行锁和表锁,Mylsam只支持表锁
innoDB有外键,Mylsam没有外键


3、索引下推和最左匹配:


组合查询 age,gender字段

select  * from t1 where age = ? and gender = ?

索引下推并不是串行,是并行的,在存储引擎拉数据的时候,就会根据age和gender字段一起进行筛选
 

你可能感兴趣的:(数据库常见知识点)