第六课(二)|学习笔记

简介: 快速学习第六课(二)

开发者学堂课程【高校精品课-西安交通大学-数据库理论与技术:第六课】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/12/detail/15862


第六课(二)

 

内容介绍

一. 顺序文件组织

二. 聚簇文件组织

三. 数据词典的存储

四. 对象到文件的映射

五. 持久性指针的管理

六. 磁盘的结构与特性

七. 基础回顾-计算机系统的存储体系

八. DBMS 数据存储与查询实现的基本思想

九. 数据库之表-记录与磁盘块的映射

十. 数据库之表-记录与磁盘块的映射

十一.Oracle DB 物理存储简介

十二.索引和散列

 

五. 持久性指针的管理

简单说就是物理的 OID 可以是唯一标志符。对象是存储在外存的,在外存地址叫持久指针,在内存叫内存指针,这里是需要转化的。转化的最大原因就是外存的空间比内存要大,因此它的地址的编码长度要比内存的编码长度要长,这个时候就涉及到两个指针的转化问题。另外悬挂指针是什么意思?第一个对象调进来以后,它的位置被别的对象占用,指针就会失效,问题在于要怎么处理。

image.png

关于指针的管理,给出一些具体的方法。

把一个比较长的持久指针转化成内存当中相对较短的一个指针,这个过程称指针混写,来解决相关问题。它实际上涉及到内存管理、页面管理、页表的转换问题。这个具体过程不详细讲了,第三章后面有一个补充的内容,会在补充的内容中来说一下这个事情。


六. 磁盘的结构与特性

(1) 磁盘及磁盘的容量

第三章第四章都会有些补充的内容。磁盘物理上的读写单位叫磁道,磁道就是磁的圆圈连续的一段。若干磁道连起来称为块或簇。Sector 是扇区,cluster 是簇。磁盘上的每个磁道被等分为若干个弧段,这些弧段便是硬盘的扇区。这里有一些物理参数,磁盘根据基本信息就可以估算出磁盘的效果容量。比如

image.png

2^10是1KB, 2^20是1MB, 2^30是1GB2^40是1TB

实际的磁盘能用到容量的百分之七八十,在出厂的时候参数就已经定好了根据这个信息就可以算出来磁盘的容量

(2)磁盘数据的访问

-寻道时间(约在1-20ms) 寻道时间是把磁头移到数据所在磁道所需要的时间。

-旋转时间(约0-10ms) 旋转时间,如果通过盘片的旋转,使得要读取的扇区刚好转到读写头的下方,就直接完成。如果不是刚好转到读写头的下方他可能就需要转一圈,平均下来要0-10ms

-传输时间(每4KB页<1ms) 

示例:一个磁盘的基本信息

l 磁盘以7200转/min旋转,则:8.33ms  内旋转一周

l 柱面之间移动磁头组合从启动到停止花费1ms,每移动4000个

柱面另加1ms 即磁头在0.00025ms 内移动一个磁道,则:从最内圈移动到最外圈,移动65536个磁道大约用17.38ms.

l 一个磁道中扇区间的空隙大约占10%的空间

l 一个磁盘块=4个扇区=16384个字节

读一个磁盘块(=4个扇区16384个字节):

最小时间=传输时间大约是0.13ms

最长时间=寻道时间+旋转时间+传输时间

=17.38+8.33+0.13=25.84ms

平均时间=6.36+4.17+0.13=10.76ms

image.png

物理存取算法考虑的关键:

-降低1/O次数

-降低排队等待时间

-降低寻道/旋转延迟时间

前几年有另外一种存储类型 SSD它跟磁盘的很多特性不一样因为它是半导体而半导体是随机存储的。SSD有个特点擦写就像在黑板上写字重新写之前必须把它擦除掉才能写它是有寿命的写的次数是有限的

例如三星做 SSD他们的团队是利用这些物理特性把这些特性涉及到更上层的数据库的相关算法利用这个就可以去优化。这个就是软硬界的协同创新。

把物理硬件上的一些新的特性应用起来,因为这个分为两层,一层是应用层面,应用提出新的选择,新的要求,新的问题,把问题解决是一种方式。这是应用系统。还有一种是软件的另外一个驱动力,来自于底层的这个物理层面,设备发生了一些新的变化,比如有新的器件使原来的一些特性变化,变化以后带来了算法上面的数据结构,很多设计的相应的调整。

l 同一磁道连续块存储

l 同一柱面不同磁道并行块存储

因为一个磁盘有八个盘面,堆叠起来,两边总共16个道,16个同心圆在同样编号的道,可以想到这个柱面,因为每个磁头移动都是一起移动的,且都移动到最下方同时移动就有了并行这种并行上层是感觉不到的,但是可以利用这个信息分开放在不同的渠道来实现并行,这叫物理并行

l 多个磁盘并行块存储

(2) 提高磁盘数据读写时间与存储可靠性的方法

RAID 技术

l 并行处理并行读取多个磁盘

独立磁盘冗余阵列,它可以来支持并行处理,并行访问多个磁盘。把许多磁盘捆绑在一起,感觉像一个磁盘,这样存储空间就大了,另外,还可以潜在地实现并行,通过冗余还可以在存储层面上进行容错。

l 可靠性奇偶校验与纠错

例如找个空间存一个校验码,发现校验不对的时候可以不去纠错,而是把错误的信息改过来。

(a)块级拆分但无冗余

(b)镜像处理:每一个磁盘有一个镜像磁盘 C

(c)位交叉纠错处理:4个磁盘存储4位+3个校验盘 P 存储3校验位

(d)位交叉校验:4个磁盘存储4位+1个校验盘存储1校验位,位拆分存储(借助于扇区读写校验判断出错磁盘,再依据校验盘进行纠错)

(e)块交叉校验:块拆分存储,其他同。

(f)块交叉分布式校验:块拆分存储,互为校验盘(g)更为复杂的冗余处理(略)

image.png

 

七. 基础回顾-计算机系统的存储体系

(1) 数据库的存储与检索问题

image.png

计算机的发展实际上就是数据量越来越多,给存储带来了很多的问题。大概有两个基本问题:

-如何高效率的存储?--数据组织与索引

-如何快速的检索?--查询实现与查询优化

面向大规模用户,又如何解决?

image.png

这个问题涉及到几个方面,一个是基础研究方面,也就是各种算法设计,算法实现;第二个是对性能的评估,性能的改变。作为数据库管理员的一个职责是借助于软件管理与维护,同时从计算机学科出发需要研究、解决和提出很多问题。

(2) 什么是存储体系

l 数据组织的基础——存储体系

l 将不同性价比的存储器组织在一起,满足高速度、大容量、低价格 需求

之前已经讲过的具体细节就不展开讲解了。

(3) 不同层次存储的访问时间上的差异

这个问题大概有一个类比,叫 Jim Gary。他是数据库界获得图灵奖的一个大佬级人物,数据库界有几位获得图灵奖的,最早获得的查尔斯 • 巴赫曼是网状数据库模型,另外几位是关系树状数据库的埃德加 • 科德,还有迈克尔.斯通布雷克是数据库系统一系列奠基性基本概念和实际技术。

Jim Gary 的主要工作是在数据库处理方面。存储的延迟做了一个类比按照存储从高速缓存储存闪存到磁盘光盘,磁带,如果在寄存器寄存器在cpu里)上,就相当于拿手边上的东西。

假定访问这样一个数据的时间要用一个单位的时间也就是1分钟,那么在片子上的存储或主板上的缓存去访问,就相当于在房间里拿东西,这个时间大概是它的十倍,10分钟。如果要放在储存里,储存的容量是它的100倍这个就相当于1.5个小时。

如果要在磁盘的话,距离就相当于跑到土星去了。所以后面的容量越大,延迟的时间就会越来越长。

image.png

(4) 操作系统如何管理磁盘和数据

存储组织当中的操作系统怎么连起来呢?

操作系统对文件的组织:FAT文件的分配表

磁盘是以数据块的形式的存储的,文件存储是存放在一个目录底下。目录下面还有子目录,最后是一个个数据到一个文件,每一个节点就是一个具体文件文件再分成一个磁盘块,若干个连续的磁盘块称为簇或者区间。

它的结构有一个文件分配表,这个过程在操作系统下,用户访问文件信息的时候的数据和程序都是放在文件里的。请求发给操作系统,从操作系统把这个逻辑的东西转换成外存,也就是磁盘。文件放在硬盘、软盘或者光盘里。光盘是只读的,一般是不能写的,磁盘是可读可写的。

image.png

每个文件有文件目录或者文件夹,比如文件 ABCD它有一个相当于指针的位置,相当于对应哪个,块之间又通过拉链的方式起来。每一个文件都可以通过文件目录的数据结构查到在分配表里的位置,再逐个寻找。

(5)操作系统堆内存-缓冲区的管理

它的编码方式前面已经讲过,这个过程就不详细讲了。

 

八. DBMS 数据存储与查询实现的基本思想

怎么把一大堆看起来很碎的东西拢到一起,这是研究生阶段学习的一个非常重要的技能。平常学习的时候会遇到很多碎片化的东西,这时我们需要把这个碎片化的东西装起来,连在一起,变成一个完整的东西。

因为碎片化会增加记忆负担,如果把它组装成完整的记忆记在脑子里,就会更持久的记住。把大量的碎片化拼接组合,有的人拼接的出来是对的,有的人是错的。如果整天拼接的东西大部分都是错的,效率就会很低,时间久了跟别人差距就会越来越大。这是最基本的一个素质能力,

(1) 数据存储的映射关系示意

image.png

数据库是一个逻辑空间。逻辑空间可以看到的是一个表,表里是一个个的行,行也叫记录,记录里有一个个的字段,这是国际逻辑层面。

image.png

数据存储在物理层面是存在磁盘里,磁盘是以一个个块来存储的,每个块的大小都是一样的,块里有盘号,磁道号,这是一个物理的图解。

数据库的查询处理,五六两章讲的是怎么把上面两个图连起来。

在这个表的记录,实际上可以想象有一个内部的数据结构,叫表的索引,表的记录号对应的块号。索引逻辑上就对应到磁盘里的块,这个怎么来实现呢?

如果用文件系统的话,它是通过操作系统的文件分配表,所以这个用虚线,因为这是逻辑的虚线实现的。但是这个是在逻辑上的描述,实际上存储是在内存里,处理也在内存里,所以要把它搬到内存里,页就放到数据库缓冲区里。缓冲区里叫页,磁盘里叫块。软件大小完全等同,等于把内容拷贝到内存里。

它有一个缓冲池里头的页号到块号的映射表。这个映射表在访问的时候用的是页号,然后到映射表一查,用到的是块号。这样就知道已经调到内存了。

如果发现它不在就要到外存里再把页调进来,有缺页处理,操作系统叫缺页中断。

image.png

映射到这里有记录的 ID 指标,这是逻辑的,这是物理的这个转换底下还有磁盘的空间管理磁盘首先就是可以跨单位进行 io 操作,无线操作。然后使用内存的缓冲区,上面是文件管理索引,管理数据的逻辑结构进行这样一个转换。数据库的作用就是把逻辑地址空间最后正确的映射到物理空间,中间有个过渡,通过内存缓冲区管理,数据在外存上都是以块为单位或业务单位进行存储,进行访问并组织,以上是它的基本的原理图。 

(2) 数据存储与查询实现的基本框架示意

包括存储单位之间的基本单位量,服务管理器控制对磁盘的读写,以及存储空间的分配;

内存当中是缓冲区管理这个模块,来对缓冲区进行管理;由它再向存储管理器发出读写请求,它控制内存分配,内存块、磁盘块的交换是由缓冲区管理器管理的;

索引文件管理器和记录管理器,它负责控制逻辑映射与物理映射,就是把原来逻辑的空间、逻辑的数据格式加数据控制信息,转化为缓冲区对磁盘块的操作;

从逻辑空间到物理空间是关系操作实现的基本的一些算法,数据的所有的查询语句,比如筛选投影的连接基本操作集合的并集和操作,这个操作对应算法结合;

作为管理员,比如要建表,通过数据定义语句发出命令语句,由数据定义语言的编辑器呢,编译产生出对数据库操作的相关的执行的命令,这个命令序列要交给DDL执行引擎执行,他主要是来生成数据的格式信息,模式定义或者对模式进行更改;

数据管理员发出数据控制语言的语句,主要就涉及到数据的权限管理,权限防控,这个语句由 DCL 编译器编译成相应的并列,DCL 执行器来执行;

普通客户还有的应用程序发出的数据操作,这个操作实际上就是对一些基本关系操作的组合,组合变成查询计划,之后交给 DML 执行引擎来执行他执行时调用相应的算法结合基本算法然后再转化为实际执行对索引文件和记录的请求。这个请求由记录管理器在完成通过控制逻辑和物理映射转化为对底层的页面的需求,不能直接通过缓冲区管理器,需要进一步到存储管理器。

整张图从上到下连起来实际数据库可以追踪一下,比如一个 SQL 语句最后是怎么执行的,只要通过这条线索知道这个语句,想清楚这个语句图是怎么执行的,就可以把原来碎片化的东西有机地连在一起,以上是基本的框架示意图。

相关文章
|
存储 SQL Oracle
第六课(三)|学习笔记
快速学习第六课(三)
109 0
第六课(三)|学习笔记
|
存储 Oracle 关系型数据库
第六课(一)|学习笔记
快速学习第六课(一)
105 0
第六课(一)|学习笔记
|
关系型数据库 数据库 开发者
第五课(二)|学习笔记
快速学习第五课(二)
第五课(二)|学习笔记
|
存储 数据库 开发者
第五课(三)|学习笔记
快速学习第五课(三)
131 0
第五课(三)|学习笔记
|
存储 数据库 开发者
第七课(二)|学习笔记
快速学习第七课(二)
140 0
第七课(二)|学习笔记
|
存储 数据采集 人工智能
第七课(三)|学习笔记
快速学习第七课(三)
125 0
第七课(三)|学习笔记
|
存储 缓存 移动开发
第四课(三)|学习笔记
快速学习第四课(三)
第四课(三)|学习笔记
|
搜索推荐 网络协议 Java
第四课(二)|学习笔记
快速学习第四课(二)
第四课(二)|学习笔记
|
存储 机器学习/深度学习 数据库
第七课(一)|学习笔记
快速学习第七课(一)
159 0
第七课(一)|学习笔记
|
算法 架构师 数据管理
第四课(一)|学习笔记
快速学习第四课(一)
第四课(一)|学习笔记