对于从磁盘中读取和写入数据的操作,叫做磁盘IO,分两种情况:
随机IO就是读写的内容分散在磁盘的不同位置,需要来回查找所以效率低;
顺序IO就是读写的内容集中存储在磁盘的一块,从前到后依次读取,免去了查找的过程,所以效率高。
机械磁盘的顺序IO和随机IO的性能差异巨大。
顺序IO时缓存命中率高,节省寻道时间。
随机IO不停寻址,缓存失效。
应用:
复制文件夹:复制文件夹的时候,如果包含许多小文件,复制速度很慢。为了提高复制速度,可以先打一个包,打包把文件夹变成一个大文件。再复制的时候,变成顺序IO
数据库事务:数据库事务在实现的时候,要保证数据落盘成功才能返回。落盘是指落盘到自己的事务日志文件里就返回成功,而不是直接写入到数据库表文件里。原因还是磁盘读写性能问题,事务只要落盘成功就可以,写到哪里不重要。写到数据文件就变成随机IO了。如果写到一个日志文件中,就是顺序IO
MySql的B+树:无论是顺序IO还是随机IO,增加每次IO的单位,性能都会上涨。B+树节点更大,IO起来磁盘工作更舒服。