关于磁盘和内存的常识以及磁盘I/O进化史

将数据存储在磁盘(IO读写)--进化-->将数据存储在数据库中

磁盘:

①寻址--毫秒ms级别的。

②带宽--单位时间内能传输的字节流能有多少,几个G或几M。

内存:

①寻址--纳秒ns级别的。秒=1000毫秒=1000*1000微妙=1000*1000*1000纳秒。在寻址上,磁盘比内存慢了10万倍。

②带宽--很大

I/O Buffer:

磁盘中的磁道和扇区,一扇区512字节byte,如果磁盘容量很大,而扇区很小,势必会增大索引成本。

操作系统无论从磁盘读取多少数据都是以4K为单位。

随着文件变大,速度会越慢,磁盘IO会成为瓶颈。

数据库:

数据库的出现是为了改善磁盘IO的瓶颈。但整体而言,磁盘IO和数据库的IO总量是相等的,因此就有了索引的概念,如果没有索引,仅仅只是建了数据库和表,不会有太大帮助,依旧很慢。

数据库中最小的单位为page页,以4k为单位。

关系型数据库建表,必须先给出schema,数据类型(字节宽度),存数据时倾向于行级存储。先给出字节宽度的好处时,保留了位置,在插入或更新数据时直接进行覆写而不用进行数据移动。

索引也是数据,和表数据一样都存储在硬盘中。在内存中创建一棵B+树用于将索引的区间和偏移存储起来,索引和数据存在磁盘,因为内存有限,存不下这么多的数据,利用索引提高遍历查找的速度,减少磁盘IO和寻址的过程,但数据还是从磁盘获取。

发布了755 篇原创文章 · 获赞 343 · 访问量 77万+

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/103965651
今日推荐