数据库管理系统的存储引擎要在一个多高的层面上操作呢?

具体点说就是数据库管理系统的存储引擎是否会涉及到磁盘上的一些操作,比如将要一起访问的数据块放在同一柱面上,或将数据分隔存储在几个相对较小的磁盘上而不是放在一个大磁盘上等等这些较低层的操作,如果DBMS涉及到这些操作,请问是如何实现的呢

1个回答

这些都是文件系统考虑的问题,而不是dbms,实际上,在固态硬盘的时代,数据的物理存储连操作系统都不管了,具体存在固态芯片的什么位置,是固态硬盘的主控芯片决定的。固态硬盘的扇区地址和物理芯片单元的位置是无关的。

为什么这些底层的操作要交给底层而不是高层软件去处理呢,道理很简单,首先,不同的存储设备差异很大,越高层的设计,越难以得到一个在多数硬件,甚至未来硬件上都高性能的方案,甚至,连兼容性都很困难。
我举一个例子,一个硬盘如果有一个地方出现了一个坏道,怎么办?文件系统层面,可以把这个位置标记为坏簇(相当于用一个文件占住这个位置,只是这个文件我们不会读取它的内容)

你要是在数据库层面设计,你怎么处理这个硬盘?
另外,不同的操作系统,用的文件系统都不同,windows下是ntfs,linux下是ext4,你的数据库怎么才能兼容不同的文件系统,就算你支持了,那么你编写好的数据库还能支持未来新的文件系统么?

你知道数据库软件的一个使用场景是服务器,而随着云计算的兴起,虚拟机占服务器的比重现在有多高么?你一个数据库,要绕过操作系统直接写物理磁盘,那么还能在虚拟机环境里运行么?

smallnine9
或归止 感谢回答,我还有一个疑问,就是DBMS如果不涉及(或很少涉及)物理存储,那么它如何实现提高存储的效率呢?在逻辑层面上进行操作能带来多大的效率提升?
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐