数据库的起源:它是为了解决什么问题而诞生的?

发表时间: 2023-12-03 14:37

计算机小知识分享:磁盘的4K读取是什么呢?

磁盘有磁道和扇区,一个扇区是512个字节,我们去读取数据的时候,都是按照一个扇区一个扇区的这样找数据。

那么如果一个硬盘有1t,2t这样的容量呢,就会有很多的512的单位值,如果要寻找数据,计算机中就会有索引,大容量的话,这个索引值就很很多,所以就有了我们格式化磁盘的时候,有了4K对齐,也就是说无论读取数据的时候不是以512一次为读取量,而是以4K的数据量返回。

所以一般的磁盘都是默认格式化4K的操作系统,无论读取多少都是最少以4K的读取量返回,索引的体量也会跟着下降很多,但是基于其特性,I/O读取数据磁盘的时候,硬盘也常常是其瓶颈,毕竟文件会越来越多,查询也会越来越慢,怎么解决呢,你要知道在程序的世界里,如果一个问题出现了,那么解决它的问题也会出现,数据库就是这样应运而生.

数据库的诞生,解决了几个问题:

第一:data page,一个data page的大小是4K,是的,你没理解错,它的大小正好是读取硬盘的最少的一次返回量,它的优点在于,他将之前分散的4k数据,以软件的方式进行了编号。

第二:上述只是基本,但并不能提高访问速度,它的真正提速在于可以建表,单纯的建表没有意义,它的意义在于建索引,它建立了指向关系,将少量的数据与对应的4k数据关系建立了起来,这也是速度提升的关键。

第三:就是schema,为什么这也是关键,建表的时候给出schema,给出了每一个列的类型也就给出了字节宽度,未来你定义的这些字节宽度,其实每一行的数据宽度也就已经确定了,它在磁盘中的位置也提前占了出来,即使你在其中的一些字段中有值,也不影响其整体的空间,没错,你的增删改查,也就不用了移动数据,直接将新的数据直接写在你提前占的那个位置就可以了。这也是为什么数据库关系型数据库表是行级存储了。

第四:B+Tree,B+tree是在内存中的,大家都知道,内存的读取速度很快,每一个B+tree的树叶都是存储的4K数据,当年查询命中了索引的时候,那么查询就会从B+tree中树干中找到存储4K树叶中,我们不能将所有的索引数据都存储到内存中,所以内存中只是存储一个树干和区间,其他的索引和数据还是要放在磁盘中的,这样我们就充分的发挥了各自的有点,磁盘存大量数据,而我们利用一种数据结构加快你的查找速度,解决了I/O的访问量,减少了寻址的过程。