关系型数据库依赖于《大型共享数据库的数据关系模型》建立了数据模型,而为了能够在现在计算机系统上能够正确、高效的运行,关系型数据库做了大量的工作。本章将会结合之前的《I/O的5分钟法则》和《存储器系统》进行介绍。
现代商业数据库应用中,主要有两种基本类型的DBMS存储管理器:
- DBMS直接与底层的面向磁盘的块模式设备驱动程序进行交互(通常称为原始模式访问);
- DBMS使用标准的OS文件系统设施。在这里又可以分为大文件和小文件两种形式。
根据《存储器系统》的学习,我们能够知道程序的局部性原理。而数据库管理系统更需要充分考虑局部性原理,来提高其性能。
而根据《存储器系统》的学习,我们能够知道存储器的层次模型,这里主要使用到硬盘以及主存两层存储结构:
下面将通过对磁盘和主存的空间局部性以及时间局部性进行介绍。
硬盘的局部性应用
数据库的数据存储方式和块设备的存储方式是不相同的。能够更好的利用数据库中的数据逻辑组织方式进行存储,这将会大大提高数据库的性能。而对于DBMS来说,控制数据空间局部性的最好的方式就是直接存储到“原始”磁盘设备中,也就是裸设备,从而绕过文件系统。裸设备地址通常对应于存储位置的物理临近性,可以使数据库到达性能峰值。大多数商业数据库支持裸设备,例如Oracle和DB2。
这样做虽然有最优的性能,但带来了一些问题:
- 它需要将整个磁盘分区分配给DBMS,也就会造成一些需要使用文件系统接口的工具无法使用;
- 裸设备访问接口往往是与特定操作系统相关的,这就使得DBMS的可移植性变差,不过随着现在的技术发展,大多数商业厂商已经解决了这个问题;
- 最后,随着存储行业的快速发展,诸如RAID、存储区域网络和逻辑卷管理器,已经非常普及,而裸设备接口被很多硬件和软件拦截,所以也会造成问题。
裸设备访问的一种替代方式是,由DBMS在