计组的知识 虚拟存储 IEEE754标准
5.1存储层级
二级存储器磁盘和固态硬盘
红色部分是磁道,蓝色部分是扇区,绿色指示部分是数据库中的一个块/页
块/页是我们用来存储介质的一个物理单元,数据写入磁盘以块位单位写入内存,一个块的大小一般是4KB或者8KB,
东西平行的移动,乡里向外,访问磁盘中的数据确定数据确定的磁道,指到蓝色部分的时候磁盘就会停下按块读取数据,读写时间延迟相同
从工作原理可以知道什么,假如读取三个数据,三个数据连一块会在一个磁道上连续的部分读取效率比较高 ,利用空间的局部性,存取效率比较高,如果不是会花费寻道的时间,寻道之后还得找到位置,必须考虑数据的存储特性。
很多磁盘也不是一个磁片,有很多的盘,这样的时候可以把数据放在同一个柱面中也能提高访存效率。
固态硬盘和他相比访问延迟更低,固态硬盘的不足损耗 反复在一个地方擦写会减少使用寿命,比较贵,读写速度(固态硬盘的读写过程先擦,然后读写),导致读写时间不同,在应用中既有读写时,怎么提高他的性能。
5.2基于磁盘的DB存储
也可以存在内存中,面向主存的数据库存储,和上图相比更快,不用经过IO,但是容易丢失,面向列的数据库存储,按列进行组织同一列的数据会时同一种类型,列的数据进行压缩的时候会比行压缩的时候更方便。行的话,数据类型可能不同。
SIMD 单指令流多数据流 对数据进行并行的处理来加速计算
为啥不用操作系统直接管理内存系统,操作系统的内存映射,将一个磁盘的文件,我们对于这个流部分的所有流的管理都交给操作系统了,缓冲区管理器,可以对这部分的内容进行更好的管理。
目标:理解内存映射。
在访问之前已经存入内存缓冲池了
设计目标
文件组织
一个文件由很多个页构成,这些页怎么组织是我们学习主要内容,在一个数据库里,不管是索引的数据还是数据字典的源数据,他们都是以块的形式存储,
通过号码,标识符访问到是哪一个页,页号是一个虚拟地址,不像内存地址,间接层的做法,把实际的地址转换为物理地址。
- 面向行的存储有利于查询,
- 分析型数据库GROUP BY,分组聚集做统计这样的任务一般是分析型任务,一个企业想了解某一商品在某一时间的销量是多少,他的查询会根据列进行查询,求平均分......
字符串以字节的方式进行存储。可以通过连接的方式把不同的属性拼在一起,通过元组所在的(模式)确定字节的大小。
空隙加进去的目的是对其:访问的时候更优化,由可能减少一次访问,
变长怎么办????
可以设置一个指针数组,有几个属性指针数组就有多长,有一个偏移量。
页布局
面向元组数据的组织方法:
指针也存了属性的长度,
VACUUM FULL清除空白
此时id = 3的值是X,从后向前去找,越往下越新。
缺点:随着数据的写入性能会不断下降。
文件的组织方式:
- 堆文件 特点:元组排序无序。
- 哈希文件:文件中的元组是按元组的一个键的哈希值决定位置。一个页存放的是值相同的元素,类似于一个个的桶。但是只是等值比较的时候快,其他时候性能基本不变。
- 顺序/有序文件组织:可以建立二级索引 可以先按照年龄排序 然后建立在年龄的索引
内存的组织
缓冲区管理
buffer bool 数据里的文件太大,必须经过一个内存来作为中间的桥梁
结构:pin_count = 0的时候才能被使用。 dierty位看是否被修改过。
这种事有地方的情况
第二种情况事没地方的情况, 需要及时写回去,否则数据容易丢。叫做页的替换策略,页的替换策略可以自己预习一下。