MySQL数据文件的组织
1 字段的表示
Name | Address | Gender | Birthday |
---|---|---|---|
Bob | previlige | M | 19/06/1992 |
Mary | malloand | F | 20/02/2003 |
每个字段均被SQL定义成具体的数据类型,表示成一定长度的字节序列。
字段名 | 类型 | 长度 |
---|---|---|
Name | Char(30) | 30个字节 |
Address | Varchar(256) | 0到256个字节 |
Gender | Char(1) | 1个字节 |
Birthday | date | 3个字节 |
2 记录的表示
定长记录:它所包含的所有字段均为定长。
其中:字段前面保存的是记录的头信息。
注:由于数据需要经常移动到内存中进行处理,而内存的寻址方式是以4的倍数进行的,因此,定长记录中每个字段长度都需要被拓展成4的倍数。
变长记录:允许它包含变长字段有多种表示方法。
注:头信息中的指针指向每一个变长字段的存储地址
3 记录集合的存储结构
- 物理邻接存储
- 利用指针连接存储
4 数据文件的组织形式
因应用不同而有多种组织形式:堆文件,顺序文件,散列文件,聚簇文件,按列存储。
组织形式 | 存储方式 | 优点 | 缺点 |
---|---|---|---|
顺序文件 | 记录按某个搜索码的值的顺序进行存储 | 按搜索码进行检索,效率非常高 | 当频繁插入和删除元组时,文件的维护困难 |
散列文件 | 直接存取文件或哈希文件,利用哈希函数,将具有相同搜索码值的记录散列到外存(通常是磁盘上)的同地址范围中 | 记录随机存放,不需进行排序,所以插入、删除方便,存取速度快,不需要索引区,节省存储空间 | 支持按搜索码的随机查询;哈希函数的选择不是一件容易的事情,选择不当就会造成桶的偏斜 |
聚簇文件 | 每块可存贮多个有关联的关系 | 支持高效率的多表连接查询 | 降低单表查询的效率 |
按列存储 | 适应统计查询及OLAP应用的存储方式 | 减少无用数据的读入量;利用数据压缩减少访问被盘的次数。 | - |
按列存储用于数据仓库,记录数据仓库的数据,不再进行数据的增删改操作,而且基于数据仓库的数据分析基本上是基于维度的,因此将数据仓库中的大表拆分成若干个独立的小表,每个小表单独存储,这就意味着每个磁盘块只存储一列数据,这对于按维度进行数据检索非常有利。