目录
数据库存储背景知识
数据库最基本的功能即是put和get,put即存储,get即查询。如果只是存储起来,直接写成日志就行。但因为后续还要快速的查询,所以需要考虑存储的结构。对于树型结构,理论上来说,二叉树查找速度和比较次数都是最小的,为什么不使用二叉树呢?
因为我们要考虑磁盘IO的影响,它相对于内存来说是很慢的。
什么是磁盘I/O?
以读I/O为例,即为控制器发出指令,要求从磁盘读取某些扇区的内容,指令一般通知磁盘开始的扇区位置,然后给出给出需要从该初始扇区往后读取的连续扇区个数。指明读/写,控制器发出的这种指令+数据即为一次I/O。
而磁盘I/O必然会产生磁盘访问时间,磁盘访问时间由三部分组成,寻道时间Ts,旋转时间Tr,传输时间Tt。Ts的时间消耗占大头。
- Ts:启动磁臂时间s与磁头移动n条磁道到I/O数据对应磁道的时间和。Ts=m*n + s。
- Tr:初始扇区移动(旋转)到磁头所用的时间。
- Tt:真正数据写入写出的时间。