数据库面试知识点总结

目录

 

数据库必须具备的四个特性

数据库范式

索引

存储过程

死锁

为何选择B+树


  • 数据库必须具备的四个特性

1:原子性:全部成功或失败,失败不会有影响

2:一致性:事务执行前后状态一致。

3:隔离性:多个并发事务之间要相互隔离;

4:持久性:数据提交后的改变是永久的,故障不丢失

隔离性:不考虑事务的隔离性,会产生的几种问题:

01:脏读

数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。

02:不可重复读
不能一个数据同一时间被两个人同时读取。

03::幻读
当事务不是独立执行时发生的一种现象,T1修改全部数据,T2在另一时间插入了一行数据,那T1再读取就发现,诶,有一个没改,是幻觉么,就是幻读,可设置只读来解决。

  • 数据库范式

第一范式(1NF)数据表每一列不可分割,不能是集合数组,不可拆分,例如应该把电话分为座机和移动电话

第二范式(2NF)实体属性应该完全依赖于主关键字,不能部分依赖,例如学分依赖于课程,但是不依赖另一个关键因素学号。

第三范式(3NF)非主属性不依赖其他表的非主属性,例如单位表有字段(楼层,区号),那员工表就不用出现这些属性了。

BCNF                  不能存在关键字段决定关键字段,例如管理员号与仓库号互相决定。

第四范式(4NF)一项不能是多值依赖的,比如孩子,有可能有很多孩子,选修课也有很多,这就是多值问题

索引

聚集索引,按顺序的。非聚集索引,物理上连续的。

存储过程

先编译,再执行。大型数据库系统中,先编译好后,用存储过程的名字来调用,速度就会很快

死锁

原因:

        系统资源不足,运行顺序不合适,资源分配不当

必要条件:

        循环等待,不可强占,互斥每个资源只能被一个占有,一个进程申请新资源的时候还占有老资源

解决方案:

        银行家算法,全部加锁否则不执行,顺序封锁

为何选择B+树

若选择二叉查找树:一个二叉查找树是由n个节点随机构成,所以,对于某些情况,二叉查找树会退化成一个有n个节点的线性链。

AVL:则是带有平衡条件的二叉查找树,如不满足平衡,则要翻转,因此适合查找多插入少的情况

红黑树:用标注颜色的方式限制一条路径比其他路径大两倍的情况。属于弱平衡,对于搜索、插入、删除操作多的情况下,我们就用红黑树

红黑树的性质

1、每个节点非红即黑; 
2、根节点是黑的; 
3、每个叶节点(叶节点即树尾端NULL指针或NULL节点)都是黑的; 
4、如果一个节点是红的,那么它的两儿子都是黑的; 
5、对于任意节点而言,其到叶子点树NULL指针的每条路径都包含相同数目的黑节点; 
6、每条路径都包含相同的黑节点;

B+树

  1. 多叉树,降低树高度,把数据分成多个区间
  2. 每个节点可存储多个key值
  3. 非叶子节点存储key,叶子节点存储key和value
  4. 叶子节点相连,方便顺序查找
  5. 主要是优化了磁盘读取效率,IO更快,顺序存储,不用过多的磁道存储,支持范围查询,无需整个树遍历。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值