数据库-实现篇 第十三讲(含习题)
存储体系
DBMS读取、存取磁盘上的数据
磁盘结构特性
宏观实现查询、微观算法
数据库以表、记录访问数据,内存以磁盘块存储数据
存储体系回顾
-
如何高效率存储?——数据组织与索引
如何快速检索?——查询实现和查询优化 -
数据库存储体系
大多数情况下,数据库保存在磁盘上,讲内容读入到缓冲区被CPU处理 -
磁盘块的组织:
第一个磁盘块在目录中保存;
操作系统 把文件按照文件块存储在磁盘块上; -
内存管理(主存)
(1)一条记录的地址=存储单元地址=内存地址=页面:页面内偏移量
(2)页面=块
磁盘结构与特性
磁盘块:由若干个连续的扇区构成
磁盘块的读取:旋转+移动
- RAID技术:
A——并行读取多个磁盘????数据拆分
(1)比特级拆分
(2)(文件)块级拆分
B——可靠性:奇偶校验与纠错
(1)扇区/块读写校验
(2)磁盘间读写校验
查询实现的基本思想

记录与表在磁盘上的存储
- 记录是跨块存储还是非跨块存储,采用指针实现
四种文件组织方法
- 无序记录文件(增删改)
- 有序记录文件(查询):
排序字段通常为关系中的主码,所以又称排序码
插入/删除时可能会造成大规模移动——
采用溢出文件,新插入的内容存储进溢出文件(无序)。
当溢出文件过大时,将溢出文件插入到主文件中,恢复文件的有序性
- 散列文件(增删改):
根据记录的某属性或属性(散列字段,大多数情况下为关系的主码)的值,根据散列函数得到的值来计算存储位置:桶号
检索效率和更新效率都有一定性的提高
问题:
(1)桶满溢出:溢出桶,通过指针不断扩展
- 聚簇文件
聚簇:将具有相同或相似属性值的记录 存放于连续的磁盘簇块中
多表聚簇:将相互关联的TABLE存储于一个文件中
有时可大幅度提高查询速度
Oracle 数据库物理存储简介
逻辑层:
- 所有表空间的组合存储容量就是数据库的存储容量
- 表空间:
(1)系统表空间——数据字典信息
(2) 用户表空间 - 一个表空间由一个或多个操作文件构成,操作系统文件仅起到占位作用
- 操作系统下看数据库,可以看到文件,看不到表空间,只有进入到Oracle系统才能看到
- 操作系统文件:占位磁盘块
- 一个文件可以存储一个表或多个表,一个表可以存储在一个文件或多个文件中
文件和表没有直接作用
物理存储层:
7. 数据块是最小的IO单位,相当于页(扇区)
8. 盘区是特定数量的连续数据块,相当于簇。这里的盘区可以动态变化
9. 段是由特定数据结构的盘区:数据段、索引段、临时段