存储设备
这里主要介绍下硬盘,因为DBMS的许多设计思想都是基于硬盘的特性的。
1.硬盘的结构
2.接口
3.碎片问题
总结:
硬盘作为块设备,每次最小的读取单位为块。
T读取的数据 = 寻道时间+旋转延迟。
寻道:由磁头完成,机械运动比较慢,所以随机读写的效率相对于内存的性能相差很大。
旋转延迟: 硬盘的旋转速度决定。
磁盘阵列:
RAID0:串行
RAID1:冗余备份
RAID5:舆模式 A 于 (A+B) = B
RAID1+0:结合0,1模式
对应的Oracle的存储结构
Tablesapce -> segment -> extent -> oracle block
块结构:
|——————|
| Header |
|——————|
|Free Space |
|——————|
| Data |
|——————|
数据库的类型设计
定长字段:
变长字段:
超大字段:
- 字段组成为记录
- 定长记录在块中的位置
- 块地址与行地址
- 变长字段和记录
-
-
- 字段记录方法:eg: varchar(200) : card => 4card
- 变长字段写在记录的末尾,有指针指向这个字段(指向address),如果有多个变长字段,就有多个指针
-
行链:
//todo:
增删改查的设计
- insert
- update
- delete
-
- 标记删除,原因 如果做真实的数据删除,会修改很多其他的信息,如记录头的指针,索引,所以如果空间可用的情况下,在记录头部标记删除。
ORACLE 的number类型的设计: