数据库-实现篇 第十三讲(含习题)

存储体系
DBMS读取、存取磁盘上的数据
磁盘结构特性

宏观实现查询、微观算法
数据库以表、记录访问数据,内存以磁盘块存储数据

存储体系回顾

  1. 如何高效率存储?——数据组织与索引
    如何快速检索?——查询实现和查询优化

  2. 数据库存储体系
    数据库-实现篇 第十三讲(含习题)
    大多数情况下,数据库保存在磁盘上,讲内容读入到缓冲区被CPU处理

  3. 磁盘块的组织:
    数据库-实现篇 第十三讲(含习题)
    第一个磁盘块在目录中保存;
    操作系统 把文件按照文件块存储在磁盘块上;

  4. 内存管理(主存)
    (1)一条记录的地址=存储单元地址=内存地址=页面:页面内偏移量
    (2)页面=块
    数据库-实现篇 第十三讲(含习题)

磁盘结构与特性

数据库-实现篇 第十三讲(含习题)
磁盘块:由若干个连续的扇区构成
磁盘块的读取:旋转+移动

数据库-实现篇 第十三讲(含习题)
数据库-实现篇 第十三讲(含习题)

  1. RAID技术:
    A——并行读取多个磁盘????数据拆分
    (1)比特级拆分
    (2)(文件)块级拆分
    B——可靠性:奇偶校验与纠错
    (1)扇区/块读写校验
    (2)磁盘间读写校验

数据库-实现篇 第十三讲(含习题)

查询实现的基本思想

数据库-实现篇 第十三讲(含习题)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200704073418931.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMzAxMTk2,size_16,color_FFFFFF ,t_70#pic_center)

记录与表在磁盘上的存储

数据库-实现篇 第十三讲(含习题)

  1. 记录是跨块存储还是非跨块存储,采用指针实现

数据库-实现篇 第十三讲(含习题)

四种文件组织方法

  1. 无序记录文件(增删改)
    数据库-实现篇 第十三讲(含习题)
  2. 有序记录文件(查询):
    排序字段通常为关系中的主码,所以又称排序码

插入/删除时可能会造成大规模移动——
采用溢出文件,新插入的内容存储进溢出文件(无序)。

当溢出文件过大时,将溢出文件插入到主文件中,恢复文件的有序性

  1. 散列文件(增删改):
    根据记录的某属性或属性(散列字段,大多数情况下为关系的主码)的值,根据散列函数得到的值来计算存储位置:桶号

检索效率和更新效率都有一定性的提高

问题:
(1)桶满溢出:溢出桶,通过指针不断扩展

  1. 聚簇文件
    聚簇:将具有相同或相似属性值的记录 存放于连续的磁盘簇块中
    多表聚簇:将相互关联的TABLE存储于一个文件中

有时可大幅度提高查询速度

Oracle 数据库物理存储简介

逻辑层:
数据库-实现篇 第十三讲(含习题)

  1. 所有表空间的组合存储容量就是数据库的存储容量
  2. 表空间:
    (1)系统表空间——数据字典信息
    (2) 用户表空间
  3. 一个表空间由一个或多个操作文件构成,操作系统文件仅起到占位作用
  4. 操作系统下看数据库,可以看到文件,看不到表空间,只有进入到Oracle系统才能看到
  5. 操作系统文件:占位磁盘块
  6. 一个文件可以存储一个表或多个表,一个表可以存储在一个文件或多个文件中
    文件和表没有直接作用

物理存储层:
7. 数据块是最小的IO单位,相当于页(扇区)
8. 盘区是特定数量的连续数据块,相当于簇。这里的盘区可以动态变化
9. 段是由特定数据结构的盘区:数据段、索引段、临时段