表的存储原理(数据库)

news2024/11/17 17:28:31

目录

一、内部存储概述

二、 数据行(记录)结构

1、定长记录

2、变长记录


一、内部存储概述

表是有关某个特定实例的数据集合,在关系数据库中处于核心地位

创建一个表,就会有一行或多行插入到用来管理这个表的多个系统表里。至少要写信息到sysobjects、sysindexes和syscolumns这三个系统表里,当新建的表有外码约束时,相关的信息还会插入到sysrefrences系统表里。

  • Sysobjects主要记录新表的基本信息,如表名、对象ID以及表的所有者等等。
  • Syscolumns主要记录新表列的信息,如列名、类型和长度等。
  • Sysindexes系统表记录包含指向新表所使用的存储空间的指针和有关新表大小的信息。
  • sysrefrences系统表里记录参照表的外键信息。

注意:

  • 当一个新表刚创建时,在插入第一行数据之前系统不会立即为其分配存储空间,因此Sysindexes表中指示页地址和预留存储空间的列将都是0值。
  • 如果在该表上定义了PRIMARY KEY或UNIQUE约束,而PRIMARY KEY或UNIQUE约束的背后是由簇集索引支持的,则该表在Sysindexes中对应行的indid值为1。
  • 任何有非簇集索引支持的其他约束在Sysindexes表中都有一行,而且该行的indid值在2到250之间。

二、 数据行(记录)结构

1、定长记录

        在定长记录里,每个字段都有固定的长度,而且字段数也是固定的。这种记录的字段能够连续存储,因此在给定记录地址的情况下,借助系统目录里有关字段的长度信息就能计算出某个特殊字段的的地址。

2、变长记录

        对于变长记录来说,一种可能的记录组织方式就是像定长记录一样连续地存放字段,字段之间通过分割符隔开。这种组织方式需要扫描记录才能定位需要访问的字段。

         另一种方法是在记录开始处预留一些空间作为存放一个整数偏移量数组的空间,数组中的第I个整数表示记录的第I个字段的其始地址,当然这个地址是相对于记录的起始地址的。另外在数组中也存储记录尾部的偏移量,这个偏移量用来识别最后一个字段的结束位置。

SQL Server定长记录的存储

首先来看最简单的情况,记录中所有字段都是定长的。

CREATE TABLE Fixed

(

col1 int             NOT NULL

col2 char(5)      NOT NULL

col3 char(3)      NULL

col4 float            NOT NULL

)

当这个表被创建以后,就有类似下面一个记录被插入到sysindexes系统表中:

idnameindidfirstminlen
2099048Fixed00x00000000000024

而其各个字段则会被插入到syscolumns系统表中:

namecolidxtypelengthxoffset
col115644
col2217558
col33175313
col4462816

当往Fixed表中插入一个记录数据时,例如:

     INSERT INTO Fixed VALUES(123,‘ABCD’,NULL,45.5)

Fixed表在sysindexes系统表里的内容就会发生变化:

idnameindidfirstminlen
2099048Fixed00x72000000000024

         这说明在插入了一记录数据之后,SQL Server就为Fixed表分配了一个数据页。Fixed表只包含四个定长字段,sysindexes表中minlen字段的值表示记录的最小长度,该长度恰好是syscolumns表中表示字段长度的length的数字之和再加上4个字节。其中额外的4个字节是用于记录字段数目的两个字节和表示字段中NULL的字节数。

第一个字节是状态位A,它的值是0x10,表示只有位4是1,其他位都是0,因此该记录没有变长字段(如果位5为1说明存在变长字段)。

最后一个字节是NULL位图,其值4意味只有第三位是1,表示第三个字段是NULL。

SQL Server变长记录的存储

CREATE TABLE Variable

(

col1 char(3)           NOT NULL

col2 varchar(15)      NOT NULL

col3 varchar(5)         NULL

col4 varchar(10)       NOT NULL

col5 smallint NOT     NULL

)

当这个表被创建以后,就有类似下面一个记录被插入到sysindexes系统表中:

idnameindidfirstminlen
18099105Variable00x0000000000009

而其各个字段则会被插入到syscolumns系统表中:

namecolidxtypelengthxoffset
col1117534
col2216715-1
col331675-1
col4416710

-1

col555227

当往Variable表中插入一个记录数据时,例如:

      INSERT INTO Variable VALUES(‘xyz’,‘ABCDe’,NULL, ‘123’,999)

Variable表在sysindexes系统表里的内容就会发生变化:

idnameindidfirstminlen
18099105Variable00x8800000000009

        定长字段的数据位于记录中由syscolumns的xoffset值指定的字节偏移量所在的位置,即col1起始于字节偏移量4的位置,而col5起始于字节偏移量7的位置。

          为了找到变长字段,首先要确定记录中列偏移数组的位置。在表示总字段数的2个字节(其值是0500)和表示位图的1字节(其值为04)之后就是变长字段数的两个字节,在本例中其值是0300,换算成十进制是3,说明该记录有3个变长字段存在。紧跟其后的字节就是变长字段偏移数组。该例变长字段偏移数组用三个2字节来表示3个变长字段在记录中的结束位置。1900经过字节交换是0x0019,所以第一个变长字段结束于25字节处。接下来也是0x0019,所以第二个变长字段实际长度为0,表明没有任何东西存储在变长数据区域。1c00经过字节交换是0x001c,所以第三个变长字段结束于28字节处,而且整个记录也结束于28字节处,换句话说,目前整个记录的实际长度是28个字节长。

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

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

相关文章

如何压缩照片大小不大于200k

如何压缩照片大小不大于200k?有时候需要压缩照片大小不大于200k是因为在一些场景下,上传或传输大文件会受到限制,例如通过电子邮件发送、上传到云存储空间等等。在这种情况下,压缩照片可以让图片更容易地传输和分享,并…

基于simulink进行音频波束成形系统的多核仿真

一、前言 此示例展示了 Simulink中的音频波束成形系统仿真模型如何使用数据流域提高性能。它使用 Simulink 中的数据流域自动将通信系统的数据驱动部分划分为多个线程,从而通过在桌面的多个内核上执行模拟来提高仿真的性能。 二、介绍 数据流执行域允许您在计算密集…

Docker Overlay2占用大量磁盘空间解决

问题 最近项目的jenkins编译时报错 FATAL: Unable to produce a script filejava.io.IOException: No space left on deviceat java.io.UnixFileSystem.createFileExclusively(Native Method)at java.io.File.createTempFile(File.java:2024)at hudson.FilePath$CreateTextTem…

#vue项目冗余请求处理#http://localhost:8080/sockjs-node/info?t=1683604231866

目录 前言一、为什么会出现这个请求?二、解决方法1.修改源码 总结 前言 提示:本文要记录的大概内容: 在我的vue项目中,开发环境下,一直重复发请求:http://localhost:8080/sockjs-node/info?t16836042318…

《花雕学AI》33:如何用XMind制作AI思维导图、鱼骨图和组织结构图

思维导图是一种有效的思维工具,它可以帮助我们整理信息,激发创意,提高效率。思维导图是一种以中心主题为核心,以分支结构为形式,以关键词和图像为内容的图形表示法。它可以让我们一目了然地看到知识的层次和逻辑&#…

手把手教你Vue+ECharts+高德地图API实现天气预报数据可视化

前言 所谓数据可视化,我们可以理解为从宏观角度来看一眼就能看出来整个数据的占比,走向。对于数据可视化,很多互联网公司是很看重这一块的,包括大厂;就比如阿里的淘宝,双十一的时候往往就需要将消费者的一…

论文浅尝 | 句法丰富的判别训练:一种有效的开放信息抽取方法

笔记整理:杜苗增,东南大学硕士,研究方向为多模态信息抽取 链接:https://aclanthology.org/2022.emnlp-main.401.pdf 动机 开放信息提取(OIE)是信息提取(IE)的一个分支,专注于从非结构化自然语言文本中提取结构化信息。…

论文笔记_2017_RS_迈向高清 3D 城市测绘:基于道路特征的移动测绘系统和航空影像配准

基本情况 出处:Javanmardi M, Javanmardi E, Gu Y, et al. Towards high-definition 3D urban mapping: Road feature-based registration of mobile mapping systems and aerial imagery[J]. Remote Sensing, 2017, 9(10): 975.原文地址:Remote Sensin…

Postman生成代码的小技巧

描述 你还在使用postman吗?你还是一条条复制参数吗?你还是手动录入数据吗?对于一些不经常使用postman的人来说,这个小技巧可以帮助你导入请求,以及转换成开发语言。 教程 1 抓包接口 以CSDN热榜为例,直…

数据可视化二、综合项目

零、文章目录 数据可视化二、综合项目 1、项目概述 (1)项目展示 (2)项目目的 市场需求:应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使…

Fiddler 微信小程序抓图教程(傻瓜式|汉化版|狗看了都直呼内行)

前言 本篇文章主要给大家详细讲解如何用Fiddler爬取微信小程序的图片,内容图文并茂,流程非常简单,我们开始吧。 目录 获取软件并打开点击工具设置相关代理如何抓图答疑总结 一、获取软件并打开 1、通过百度网盘下载获取安装包(链接是永久的…

二十三种设计模式第六篇--建造者模式(也叫生成器)

建造者模式(Builder Pattern)是使用多个简单的对象一步一步(顺序构建)构建成一个复杂的对象, 这种类型的设计模式属于创建型模式,他提供了一种创建对象的最佳方式。 一个Builder类会一步一步构建成为最终的…

Windows10 WIFI蓝牙图标消失,网卡驱动出现感叹号等无法上网的情况解决方案

Windows10出现WIFI蓝牙图标消失,网卡驱动出现感叹号等无法上网的情况解决方案_飞机跑不快的博客-CSDN博客 问题描述 我的电脑是戴尔游匣G15 5511,由于静电保护的原因,不得不拆开电脑后盖拔掉电池,释放静电,释放完成后…

OpenPCDet系列 | 6.PointPillars模型分类、回归、角度损失的构建

文章目录 模型损失计算1. 分类损失构建1.1 分类损失函数:SigmoidFocalClassificationLoss2. 回归损失构建2.1 回归损失函数:WeightedSmoothL1Loss3. 角度损失构建3.1 角度损失函数:WeightedCrossEntropyLoss4. 总结模型损失计算 在进行anchor的正负样本分配后,具体来说就是…

【运动规划算法项目实战】专栏介绍

文章目录 前言1. 路径规划中常用的插值方法2. 路径规划中常用的抽稀3. 如何加载csv文件的路径信息4. 如何在栅格地图中实现A*算法5. 如何在栅格地图中实现Dijkstra算法6. 如何实现简单的状态机7. 如何实现机器人多目标点导航8. Voronoi图]9. 八叉树地图10. 如何实现三次样条插值…

网安笔记05 SHA

SHA Hash函数 定义 任意长度的数据M变换为定长码h h H A S H ( M ) h H ( M ) h HASH(M)\quad h H(M) hHASH(M)hH(M) 实用性: 给定M,计算h时高效的 安全性: 单向性 给出h,反向计算原文x时不可行的,否则截取…

vcomp140.dll怎么安装?提示vcomp140.dll丢失怎样修复?

在用电脑玩游戏或者打开软件工作的时候,电脑提示vcomp140.dll丢失无法执行此代码,是什么回事呢?需要怎么修复呢?不用紧张,小编今天就把vcomp140.dll文件修复方法分享给大家。我总结了几个修复经验; vcomp14…

IO-概述

概述 ​ IO是Input(输入)和Output(输出)的首字母缩写。 ​ I(输入Input):指向Java程序中输入数据,即Java程序从外部获取数据。 ​ O(输出Output)&#xff1a…

c盘游戏怎么转移到d盘?无需重新安装

概述:游戏占用的容量一般很大,如果都存在C盘中,可能会导致C盘空间不足,这时候我们可以考虑迁移游戏到其他盘。c盘游戏怎么转移到d盘?本指南详细讲解。 一、为什么需要将游戏移动到其他盘 现在很多游戏玩家&#xff0c…