关系数据库

关系数据库

一、主要考点

image-20200925084434416

二、问题:如何设计一个关系型数据库?

开始设计

image-20200925090139254

回答:
1、要设计一个关系型数据库,首先要划分两大部分,第一模块是用来“存储”的部分,类似于文件系统,将数据持久化到存储设备当中。
2、光有存储是不行的,还需有程序实例模块,来对存储进行逻辑上的管理,程序实例部分包含:
(1)存储管理:数据的逻辑关系转换成物理存储关系的存储管理模块。
(2)缓存机制:优化执行效率的缓存模块。
(3)SQL解析:将SQL语句进行解析的SQL解析模块。
(4)日志管理:记录操作的日志管理模块。
(5)权限划分:进行多用户管理的权限划分模块。
(6)容火机制:灾难恢复模块。
(7)索引模块:优化数据查询效率的索引模块。
(8)锁管理:支持数据库并发操作的索引模块。

三、索引模块

常见问题

1、为什么要使用索引?
(1)通常情况下,最简单的数据查询,进行全表扫描,将表的数据全部或分批次加载到内存当中,逐个块去轮询,缺点:处理大量数据效率太低,优点:处理少量数据效果明显。
(2)为避免全表扫描的发生,所以数据库需要引入一种更高效的机制——索引。(它的灵感来自于字典,根据偏旁部首查询)这些关键的信息以及查询的方式便组成了我们的索引,通过索引来大幅度提升查询速度。
(3)快速查询
2、什么样的信息能成为索引?
(1)把某条记录限定在一定查找范围内的“字段”
(2)主键、唯一键以及普通键等
3、索引的数据结构?
(1)生成索引,建立二叉查找树进行二分查找
(2)生成索引,建立B-Tree结构进行查找
(3)生成索引,建立B±树结构进行查找
(4)生成索引,建立Hash结构进行查询
4、密集索引和稀疏索引的区别?

二叉查找树

缺点:

image-20200925100449719

解决问题:
引入B-Tree,让树变得“矮”一些,降低查询的事件复杂度、和IO次数,每个树节点能传输的数据多一些。

B-Tree

1、平衡多路查找树

image-20200925163942996

(1)三阶B-Tree(阶数==每个节点最多孩子数)
(2)每个节点包含:关键字、指向孩子的指针
(3)孩子数量取决于存储块的容量,以及数据库的相关配置
(4)O(logn)
2、m阶B-Tree的定义:
(1)根节点至少包括两个孩子
(2)树中每个节点最多包含有m个孩子(m>=2)
(3)除根节点和叶节点外,其他每个节点至少有ceil(m/2)个孩子(ceil()为取上限函数)
(4)所有叶子节点都位于同一层
(5)省略,看图理解即可

B±Tree

1、B+树是B树的变体,其定义基本与B树相同,除了:

为取上限函数)

(4)所有叶子节点都位于同一层
(5)省略,看图理解即可
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值