数据库系统原理与实践 笔记 #9

文章目录

  • 数据库系统原理与实践 笔记 #9
  • 存储管理与索引
    • 文件和记录的组织
      • 文件组织
      • 定长记录
      • 变长记录
      • 分槽的页结构
      • 文件中记录的组织
      • 顺序文件组织
      • 多表聚簇文件组织

数据库系统原理与实践 笔记 #9

存储管理与索引

文件和记录的组织

文件组织

  • 数据库是以一系列文件的形式存储的。每个文件再逻辑上组织称为记录的一个序列
    • 每个文件分为定长的存储单元,称为块(block)
    • 块是存储分配数据传输的基本单元,块大小一般为4~8KB

定长记录

  • 简单方案:
    • 记录i从第 n × ( i − 1 ) n\times (i-1) n×(i1)个字节开始存储,n是每个记录的大小
    • 访问记录很简单,但是一个记录可能存储于不同块,假设要求:不允许记录跨过块边界,没有记录是部分包含在一个块中
  • 删除第i个记录的可选方案
    • 将记录i+1,…,n移动到i,…,n-1
    • 将记录n移到i
    • 不移动记录,在一个空闲列表中将所有空闲记录列出

变长记录

  • 变长记录以下面几种方式出现在数据库系统中:
    • 多种记录类型存储在一个文件中
    • 允许一个或多个字段是变长的记录类型
    • 允许可重复字段的记录类型
  • 属性按照顺序存储
  • 以固定大小表示可变长度的属性(偏移量、长度),实际数据存储在所有固定长度的属性后
  • 记录末尾加上记录终止符
    在这里插入图片描述

分槽的页结构

  • 分槽页的块头包含:
    • 块中记录条目的个数
    • 块中空闲空间的末尾处
    • 一个由包含记录位置大小的记录条目组成的数组
  • 记录可以在页中移动,来保持它们的连续存储
  • 记录相互间没有空闲的空间(若删除记录,需移动记录数据

文件中记录的组织

  • 如何在文件中组织记录:
    • 堆文件组织:一个记录可以存放在文件中的任何地方,只要那个地方有空间存储这条数据
    • 顺序文件组织:记录根据“搜索码”的值顺序存储
    • 散列文件组织:在每条记录的某些属性上计算一个散列函数,散列函数的结果确定记录应放到文件的哪个块中
  • 通常,每个关系的记录用一个单独的文件存储
  • 但是多表聚簇文件组织中,几个不同关系的记录存储在同一个文件中:目的在于同一块中存储相关记录,以将I/O代价减到最小

顺序文件组织

  • 使用于需要对整个文件进行顺序处理的应用
  • 文件中的记录按搜索码排序
  • 删除 - 使用指针链
  • 插入 - 定位插入的位置:
    • 如果有空闲空间,那么插入到空闲处
    • 如果没有空闲空间,将新纪录插入到溢出块
    • 无论哪种方式,指针链都要更新

多表聚簇文件组织

  • 用多表聚簇文件组织在一个文件中存储多个关系
  • 能够很好地处理对 d e p a r t m e n t ⋈ i n s t r u c t o r department\bowtie instructor departmentinstructor的查询以及涉及一个系和相应老师的查询
  • 对只设计department的查询效果不好
  • 可以添加指针链来链接某个关系的记录

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

羊大师:冬季有哪些宅家必备?

羊大师:冬季有哪些宅家必备? 寒冷的冬天,宅在家里是舒适的选择。但是长时间的久坐却会让我们的身体变得僵硬,缺乏运动会导致身体机能下降。为了保持健康且舒服的状态,羊大师建议我们应该在家里进行一些简单又有效的运…

竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码

文章目录 0 简介1 项目说明2 数据集介绍:3 思路分析及代码实现3.1 数据可视化3.2 数据分离3.3 数据可视化3.4 在pytorch下创建数据集3.4.1 创建data-label对照表3.4.2 重写Dataset类3.4.3 数据集的使用 4 网络模型搭建4.1 训练模型4.2 模型的保存与加载 5 相关源码6…

拜托!佛系点,你只是给社区打工而已

社区人到年底了各种要写的东西很烦啊!突然看到这个,真的谢谢啊! 家人们谁懂啊?!!平时写个东西起码两三天,试了一下这东西!输入需求,一键生成,写好了&#xf…

vue年季度月联动筛选(el-cascader实现)

默认显示当年当季当月 <label class"font-weight">时间范围</label> <el-cascaderplaceholder"请选择":options"timeOption"filterableclearablechange-on-selectv-model"timeRange":props"{emitPath: true}&quo…

深眸科技以自研算法+先进硬件,创新打造AI视觉一体化解决方案

工业视觉软硬件一体化解决方案&#xff1a;是以工业AI视觉技术为核心&#xff0c;通过集成工业相机等视觉硬件、电控系统和机械系统等自动化设备以及算法平台等软件应用&#xff0c;为工业自动化降本增效提质。 深眸科技为进一步巩固和加强技术领先优势&#xff0c;创新打造的…

DBeaver连接本地MySQL

原文&#xff1a; DBeaver21.3.0安装与连接本地MySQL_dbeaver创建本地数据库_傅大胖的博客-CSDN博客 其他&#xff1a; mysql 的驱动下载地址&#xff1a; Central Repository: mysql/mysql-connector-java ​​​​​​​

一行代码搞定GPT4.0禁止升级开通

GPT4.0官方停止开通&#xff1f;看我一行代码就搞定他&#xff0c;又可以愉快的充值升级了 首先打开你的chatgpt的界面 正常点击这个升级是没有用的 这个界面中windows用户按键盘的F12打开开发者工具 mac电脑点菜单栏的开发–页面检查 然后输入这一串命令并回车 等待两…

预约按摩小程序功能及使用指南;

小程序预约按摩功能及使用指南&#xff1a; 1. 注册登录&#xff1a;用户可选择通过账号密码或微信一键登录&#xff0c;便捷注册&#xff0c;轻松管理预约服务。 2. 查找店铺&#xff1a;展示附近的按摩店铺信息&#xff0c;用户可根据需求选择合适的店铺进行预约。 3. 选择服…

SpringBoot2—运维实用篇

目录 打包与运行 • 程序打包与运行&#xff08;Windows版&#xff09; • 程序运行&#xff08;Linux版&#xff09; 配置高级 • 临时属性设置 • 配置文件分类 • 自定义配置文件 多环境开发 多环境开发&#xff08;yaml单一文件版&#xff09; 多环境开发&am…

划片机新手教程:从准备工作到注意事项全解析!

随着科技的飞速发展&#xff0c;划片机已成为半导体行业不可或缺的一部分。对于新手来说&#xff0c;如何正确操作划片机显得尤为重要。以下是新手操作划片机的步骤和建议。 一、准备工作 在开始操作划片机之前&#xff0c;首先需要准备好以下工具和材料&#xff1a; 1. 划片机…

大结局!OpenAI创始人奥特曼和 Greg Brockman 将加入微软!!!

持续48小时的OpenAI政变大戏终于迎来了大结局&#xff01; 微软堪称最大赢家&#x1f4a5;&#x1f4a5;&#x1f4a5; 微软CEO刚刚宣布&#xff1a; 我们仍然致力于与 OpenAI 的合作伙伴关系&#xff0c;并对我们的产品路线图、我们在 Microsoft Ignite 上宣布的一切继续创…

8年经验之谈 —— 如何使用自动化工具编写测试用例?

以下为作者观点&#xff0c;仅供参考&#xff1a; 在快速变化的软件开发领域&#xff0c;保证应用程序的可靠性和质量至关重要。随着应用程序复杂性和规模的不断增加&#xff0c;仅手动测试无法满足行业需求。 这就是测试自动化发挥作用的地方&#xff0c;它使软件测试人员能…

【理解ARM架构】不同方式点灯 | ARM架构简介 | 常见汇编指令 | C与汇编

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《理解ARM架构》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f3c0;直接操作寄存器点亮LED灯&#x1f3c0;地址空间&#x1f3c0;ARM内部的寄存…

【深度学习实验】注意力机制(三):打分函数——加性注意力模型

文章目录 一、实验介绍二、实验环境1. 配置虚拟环境2. 库版本介绍 三、实验内容0. 理论介绍a. 认知神经学中的注意力b. 注意力机制 1. 注意力权重矩阵可视化&#xff08;矩阵热图&#xff09;2. 掩码Softmax 操作3. 打分函数——加性注意力模型1. 初始化2. 前向传播3. 内部组件…

Vue3 provide 和 inject 实现祖组件和后代组件通信

provide 和 inject 能够实现祖组件和其任意的后代组件之间通信&#xff1a; 一、provide 提供数据 我们在祖组件中使用provide 将数据提供出去。 使用provide 之前需要先进行引入&#xff1a; import { provide } from "vue"; 语法格式如下&#xff1a; provide(&q…

C++类与对象(3)—拷贝构造函数运算符重载

目录 一、拷贝构造函数 1、定义 2、特征 3、内置与自定义类型 4、const修饰参数 5、默认生成 浅拷贝 深拷贝 6、总结 二、运算符重载 1、定义 2、判断是否相等 3、比较大小 4、赋值 5、总结 一、拷贝构造函数 1、定义 拷贝构造函数&#xff1a;只有单个形参…

pnpm 管理依赖包是如何节省磁盘空间的?

npm 存在的问题 我们经常使用 npm 来管理 node 项目中的包&#xff0c;从 package.json 中读取配置将依赖下载到本地&#xff0c;以保障项目的正常运行。 当项目数量多时&#xff0c;这样的包管理方式会非常的占用电脑内存。由于每个项目都有属于自己的依赖&#xff0c;每个项…

【Zabbix监控二】之zabbix自定义监控内容案例(自动发现、自动注册)

一、自定义监控内容 案例&#xff1a;自定义监控客户端服务器登录的人数 需求&#xff1a;限制登录人数不超过3个人&#xff0c;超过5个人就发出报警 1、在客户端创建自定义key 明确需要执行的linux命令 创建zabbix监控项配置文件&#xff0c;用于自定义Key #在zabbix的配…

支持对协议和会话分享动作进行授权,新增API Key白名单功能,JumpServer堡垒机v3.9.0发布

2023年11月20日&#xff0c;JumpServer开源堡垒机正式发布v3.9.0版本。在这一版本中&#xff0c;JumpServer对授权功能进行了优化&#xff0c;增加了对“会话分享”及“资产协议”的配置&#xff0c;方便管理员以更细的颗粒度对各种资源进行控制&#xff1b;针对使用API Key与J…