磁盘、内存、IO
数据存在磁盘 秒的单位 秒>毫秒>微妙>纳秒 磁盘的两个指标: 1.寻址:寻址的速度是ms级别的 2.带宽:单位时间内有多少字节流。
内存的指标 1.寻址:速度是ns,磁盘比内存在寻址上满了10w倍 2.带宽:很大,走的是cpu的前总线
I/O buffer:成本问题 磁盘中的磁道和扇区,一扇区512字节byte,如果磁盘容量很大,而扇区很小,势必会增大索引成本。 操作系统无论从磁盘读取多少数据都是以4K为单位。 随着文件变大,速度会越慢,磁盘IO会成为瓶颈。
磁盘和磁道、扇区的关系
1.硬盘“4K”和4k对齐:
4k对齐指的是“4kB扇区对齐”,硬盘读写的单位是扇区,大小是4kB,计算机读写单位是簇,大小一般默认为4kB,4k对齐了,也就意味着某个簇对应着某个扇区,计算机读簇的时候硬盘只要读一个扇区就行了,如果没4k对齐,硬盘就要读两个扇区。
2011年后的硬盘物理扇区大小为4k,磁头在磁盘盘片上读写数据的最小单位是4k。磁头无法向扇区内写入512b大小的数据,一次最少写入4k。下图是我2014年买的希捷移动硬盘,用diskgenius测出的信息,注意上边写的扇区大小512b指的是逻辑扇区,硬盘实际的物理扇区是4k。
2.为什么是4k,而不是8KB,16KB,
这是一个折衷的过程,切的太小,管理号多,查找效率就慢;
切的大,管理号少,但是即使1bytes的文件也要占用对齐大小的容量,容易造成存储空间的浪费。
如果一个区域足够小,会再来一个更大的成本,区域过多,查找变慢。
一个扇区大概有512byte,如果数据过大,带来成本变大:索引
所以在格式化磁盘的时候,会有4k对齐,即基本单位,最小为4k,所以在操作系统中,无论你读多少,最少都是4k从磁盘中拿。在MySQL中,innodb引擎,每次读取,最小单位为16k。
|