DBMS-4 数据库存储

news2024/11/24 8:47:05

  • 存储结构

一.表空间

1.概念:一张数据表在数据库空间中以一个表空间的形式存储。表空间由数据段、索引段、回滚段组成,分别记录一张表的不同信息。

2.层次信息

(1)一个表空间(TableSpace)由多个段(Segment)构成;

(2)一个段(Segment)由多个区(Extent)构成;

(3)一个区(Extent)由多个页(Page)构成;

(4)在页中,以记录为单位,存储表的信息。例如数据段对应的页中,每条记录对应表的一个元组数据。

二.表空间的扩张

1.如果一个区的所有页面都满时,要继续插入记录就需要申请新页面,扩张表空间。

2.每次表空间的扩张是以一个区(Extent)为单位,即每次扩张申请固定数量的区。原因是:为了便于连续读写,尽量让大数据存入一个区的连续页中,避免存入不同区的页中;以区为单位一次能申请到多个页,一个页存不下一段大数据,也能让剩余部分存入相同区的相邻页中。

  • 页面组织

页面中存储的一条条记录就是最终的表数据,决定页面该以何种方式存储一条条记录就是页面组织。

一.定长记录

1.概念

定长记录要求记录中所有属性都是定长类型的。

2.页面内组织形式

记录上下页面在该区中的偏移量,以此来记录上下页面的位置。

3.增加记录

如果页面能容纳新纪录,则添加到页面的最后。

4.删除记录

定长记录的页面,其记录删除有四种组织方式

(1)删除记录,并依次将后续记录向前移动

(2)删除记录,并将最后一条记录移到当前的因删除而空出位置

(3)使用链表记录空闲位置,插入记录时可快速定位第一个空位

(4)使用Bitmap(最佳选择)

二.变长记录

1.概念

变长记录要求记录中有变长属性,但也可以同时存在定长属性。

2.页面内组织形式

(1)由于每条变长记录的长度不同,因此在页面内位置无法单元化,所以无法用bitmap来记录页面位置。

(2)变长记录采用slot来记录页面内每条记录的位置和每个空闲空间的位置,每个槽位记录的信息对应一条记录或一个空闲位置。slot = 起始位置 + 长度(或叫偏移量)

(3)整个页面中,槽位从前往后存,每个槽位对应的记录从后往前存。形成:【槽位1,槽位2,。。。。。。,记录2,记录1】。好处是:空闲位置集中在中间,不会出现以下这种尴尬局面:【槽位1,槽位2,记录1,记录2,。。。。。。】,即没位置记录槽位了。

3.记录内组织形式

(1)对于变长字段:在一条记录内对应字段位置下存的实际上的"真实值的位置"。例如姓名字段的位置存的是"37,6",表示从该条记录的第37个字节开始,往后的6个字节就是姓名字段的真实值。

(2)对于NULL值字段:在一条记录中是以bitmap的形式来管理的。例如该条记录有5个字段,则NULL值bitmap的大小就为5,如果字段值为NULL,则在bitmap中对应位置为1,否则为0;该条记录5个字段值均不为NULL,因此NULL值bitmap是00000。

4.修改记录

如果一条记录原长为80,修改后为100,但是原位置放不下该记录,则先将原记录删除,再寻找一个大小合适的空闲位置插入

5.增加和删除记录

删除记录是只删除该条记录对应的槽位,对该条记录的实际位置空间不做回收。

只有当多次删除后,才会去移动聚拢每条记录的位置,重排页面空间,空出空闲位置。

三.定长记录 vs 变长记录

1.对于bitmap的使用不同

(1)定长记录:bitmap用于记录一个页面中每个位置是否有记录(即是否空闲),该bitmap是页面级别的。

(2)变长记录:bitmap用于记录一条记录中每个字段是否为NULL值,该bitmap是记录级别的。

2.区别
(1)记录位置和空闲位置标识
  • 定长记录:使用位图bitmap标识记录位置和空闲位置。使用索引定位记录:索引 = Page(页号) + Record(bitmap下标)。
  • 变长记录:使用槽位slot标识记录位置和空闲位置。slot = 起始位置 + 偏移量。
(2)记录中对NULL值字段的表示
  • 定长记录:一个字段无论是否为NULL值,都占据等长大小。
  • 变长记录:使用bitmap记录字段是否为NULL值。
(3)删除和更新记录

四.页面组织思考

  • 文件组织

一.概述

二.文件组织方式

1.堆表

(1)概念

(2)空闲空间管理

假设一个页面大小为8KB,那么该页面的空闲空间可能就有8KB,维护一个8KB=2^13的空闲空间需要16/8=2个字节。可如果我们采用空闲空间编码,就能实现用1个字节维护8KB的空闲空间。(255*32 = 2^8 * 2^5 = 2^13)

使用二级空闲空间数组加快查询效率,二级空闲空间数组每个槽位,是几个页面聚簇后,取它们一级空闲空间数组槽位的最大值。

2.顺序表

(1)概念

(2)增删

3.哈希表

4.B+树

5.多表聚簇

  • 元数据存储

一.元数据概念

二.元数据存储

  • 缓冲区

一.概述

1.缓冲区作用

2.缓冲区组成

二.缓冲区管理

1.流程

为什么日志必须同步刷入磁盘后,才可以返回提交成功,而数据和索引却可以异步刷入磁盘?

答:如果在内存中完成更新缓冲区页面、索引、日志,但未刷盘,就返回提交成功,此时断电后,数据直接丢失,无法复原,却还是返回了提交成功。但是先将日志刷入磁盘,再返回提交成功,此时断电,断电后可以根据磁盘的日志进行数据复原重做。而如果日志刷入磁盘前就断电,则不会返回提交成功,而是提交失败,此时就直接回滚。

2.缓冲区页面替换

常见的页面替换策略:

  • 行存储与列存储

一.概述

二.比较

三.适用场景

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2205661.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四、Spring Boot集成Spring Security之认证流程

Spring Boot集成Spring Security之认证流程 一、概要说明二、基于内存的用户名密码1、默认用户名密码2、自定义用户名密码3、为方便测试添加测试接口TestController 三、登录登出重要概念介绍四、登录业务逻辑1、登录业务相关过滤器2、访问业务请求处理流程①、访问业务请求地址…

AI核身-金融场景凭证篡改检测Baseline实践

金融领域交互式自证业务中涵盖信用成长、用户开户、商家入驻、职业认证、商户解限等多种应用场景,通常都需要用户提交一定的材料(即凭证)用于证明资产收入信息、身份信息、所有权信息、交易信息、资质信息等,而凭证的真实性一直是…

力扣19.删除链表的倒数第N个节点

题目链接:19. 删除链表的倒数第 N 个结点 - 力扣(LeetCode) 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2输出:[1,2,3,…

【Linux调试工具】gdb/cgdb

文章目录 gdb 简介gdb 的主要功能 gdb的用法如何进入gdb显示代码如何运行程序如何打断点和取消断点逐语句调试逐行逐行执行代码(s)调试工具 总结 gdb 简介 GDB(GNU Debugger)是GNU项目中的一款强大的调试工具,广泛应用…

数字隔离器的技术竞争

长期以来,光耦合器一直被人们信赖,因为它能够在电路的不同部分之间提供电气隔离,确保信号的安全传输,同时保护元件免受高压影响。然而,近年来,数字隔离器已成为一种强大的替代品,在速度、寿命和…

Map的实现类:TreeMap

1.存储结构:红黑树 2.实现了SortedMap接口(是Map的子接口),可以对key自动排序。 3.实例代码:Student类和Demo03 如果出现类转换异常 参考【TreeSet(红黑树)】 package com.map;import java…

苍穹外卖P19--异常处理

以上传数据库数据重复为例,进行异常处理。 接口文档报错: 重新启动:

Arduino中使用PS2手柄

目录 1、PS2手柄介绍 2、PS2库文件添加 3、Auduino代码 4、测试 5、测试程序和库文件下载连接 1、PS2手柄介绍 PS2手柄介绍见下面博客 STM32中使用PS2手柄_stm32 ps2-CSDN博客 PS2手柄按钮分布 2、PS2库文件添加 库文件和测试程序一起打包提供下载 3、Auduino代码 #in…

【数据结构】二叉堆一文详解,附demo

有时候也挺迷惑的,技术那么多,感觉学什么都来不及,又什么都得学,经常一看别人,哇,比你年轻比你厉害,然后自己emo一下又要鸡血模式,就挺无语的,但愿我们的坚持与努力都不白…

“炫我”受邀出席虚拟现实及元宇宙产业创新论坛!

当前,新一轮科技革命和产业变革向纵深演进,虚拟现实及元宇宙等相关产业加速发展,催生了新产业新业态新模式,发展潜力巨大、应用前景广阔。 9月27日,由北京市科学技术委员会、中关村科技园区管理委员会,北京…

攻防世界1

pwnstack 发现是64位文件 发现vuln双击进入 看到read知道这里是要将B1(177)的数据输入buf,这里涉及了栈溢出 发现system和binsh 后门 A8十进制是168 exp: from pwn import * context(oslinux,archamd64,log_leveldebug) io rem…

生产及质量BI应用场景方案(可编辑37页PPT)

荐言分享:随着全球化的深入发展,制造业面临的竞争日益激烈。为了在市场中脱颖而出,企业需要不断提升自身的生产效率、降低成本,同时保证产品质量。现代消费者的需求日益多样化,对产品的个性化、定制化和品质要求越来越…

【unity踩坑】打开vs2022没有文字联想/杂项文件

unity打开vs2022没有文字联想 修改外置编辑器安装unity开发插件vs编辑器显示杂项文件 修改外置编辑器安装unity开发插件 参考 在unity项目里选择Edit-> Preferences->External Tools然后更换编辑器 在vs工具界面添加unity游戏开发选项。 重新打开还是有问题&#xff…

记录搜罗到的Matlab 对散点进行椭圆拟合

需要基于一些散点拟合椭圆估计并计算出椭圆的参数和周长,搜罗到直接上代码 (1)有用的椭圆拟合及参数计算函数 function W fitellipse(x,y) % 构造矩阵 D [x.*x, x.*y, y.*y, x, y,ones(size(x))]; S D*D; G zeros(6); G(1,3) 2; G(3,1)…

深入探讨B+树索引的基本概念、工作原理以及在MySQL中的应用

文章目录 1. B树的基本概念2. B树在MySQL中的实现3. 示例代码4. 结论 在数据库管理系统中,索引是一种特殊的文件,它能够提高数据检索的速度。MySQL作为最流行的开源关系型数据库之一,提供了多种索引类型来满足不同的性能需求。其中&#xff0…

windows端口被占用但是查不到进程的问题排查

在开发环境上经常遇到端口被占用,但是 netstat -ano|findstr 3306 查不到进程号,没法强杀解决。 这种情况,很有可能端口被排除了,可用命令: netsh interface ipv4 show excludedportrange protocoltcp 可以看到mysql的…

web-前置技能(HTTP协议)-CTFHub

前言 在众多的ctf平台当中,作者认为ctfhub对于初学者来说,是入门平台的不二之选。ctfhub通过自己独特的技能树模块,可以帮助初学者来快速入门。具体请看官方介绍:CTFHub。 作者正在更新ctfhub系列,希望小伙伴们多多支…

多元线性回归:机器学习中的经典模型探讨

引言 多元线性回归是统计学和机器学习中广泛应用的一种回归分析方法。它通过分析多个自变量与因变量之间的关系,帮助我们理解和预测数据的行为。本文将深入探讨多元线性回归的理论背景、数学原理、模型构建、技术细节及其实际应用。 一、多元线性回归的背景与发展…

小米开放式耳机好不好用?小米、南卡、倍思、飞利浦热门开放式耳机一周测评!

​开放式耳机正成为潮流,它们不仅佩戴舒适,音质也出色,特别受到音乐发烧友和运动爱好者的追捧。作为一名多年的数码测评博主,我也早就对开放式耳机感兴趣了,只是最近一直没时间来好好测评下,今天一下子买了…

计算机网络实验二:FTP服务器配置

ftp服务器配置 要求: 1. 学会配置FTP服务器、能在FTP客户端进行下载和上传文件 2. 进一步熟悉ipconfig和ping命令 3. 进一步理解FTP工作原理和流程 1、FTP服务器配置(FileZilla Server) 第一步安装FileZilla Server,直接下一步…