数据库知识复习--老先生

数据库知识复习

如何设计一个关系型数据库

第一部分:程序实例

存储管理:逻辑关系转换成物理存储关系

缓存机制:优化存储管理效率

SQL解析:解析SQL语句

日志管理:记录操作

权限管理:多用户管理

容灾机制:灾难恢复

索引管理:优化数据查询效率

锁管理:支持并发操作

第二部分:存储(文件系统)

索引模块

为什么用:快速查询数据,数据量大的要避免全表扫描,关键信息定位数据

什么能成索引:主键/唯一键/普通键

索引数据结构:二叉查找树/B-树/B+树/Hash结构

二叉查找树

右子树>中间节点>左节点O(logn) 容易深度过大,引起O(n) 复杂度

B树:

跟根节点至少两个孩子,每个节点最多有m(m>=2)个孩子,除了根叶,每个节点至少有ceil(m/2)孩子,所有叶子节点在同一层

如果一个非终端节点包含n个关键字信息,其中:Ki(i=1…n)为关键字,且关键字按顺序升序排列**//关键字个数n比孩子数m少一个(n<=m-1),n>ceil(m/2)-1//**左孩子值都小于最左边关键字的值,右子树值都大于关键字,其他的孩子节点的则位于关键字最小值和最大值的值域内

关于B树的插入删除操作见

https://blog.csdn.net/qq_38972783/article/details/97812186

目录为数据结构,目录下面还有B+树和红黑树

B+树

非叶子节点关键字数量和孩子数指针一样**//非叶子节点值划定了孩子的值域,两个相邻关键字就是其指向的子节点的值域//叶子节点存数据//**非叶子节点就为了索引/这个是范围统计,到叶子节点有链表指向下一个叶子节点。

读写代价低,查询效率稳定,更有利于数据库扫描

Hash索引

hash值对应到桶的地址,桶内部是链表相连,去里面找到所要的值

但是他只能等值过滤,不能范围查询,无法避免排序,不能利用部分索引键查询,不能避免表扫描(要访问hash值对应的桶内的所有数据),大量hash值相同的话性能不一定好毕竟值都放一个桶里面了。

Bitmap索引

适用只有固定的几个种类字段,在不同位置上用0 1表示他是否是该种类,不适合高并发,因为增删改查的时候某行的不同种类对应的位数可能会发生改变

密集索引和稀疏索引的区别

密集索引每个搜索码都对应一个索引值

稀疏索引只为部分值建立索引项

MySql的索引有InnDB/MyISAM

若一个主键被定义,该主键则作为密集索引

若没有主键被定义,该表的第一个唯一非空索引作为密集索引

上面都没有就生成一个隐藏主键

非主键索引存储相关键位和其对应的主键值,包含两次查找

键则作为密集索引

若没有主键被定义,该表的第一个唯一非空索引作为密集索引

上面都没有就生成一个隐藏主键

非主键索引存储相关键位和其对应的主键值,包含两次查找
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值