关于磁盘随机IO和顺序IO疑问?

数据随机IO问题:
1. 当数据量超过内存大小的时候, 随机IO的问题出现.
2. 页级缓存在大量全随机IO的情况下内存利用率低,同时页级缓存还带来了大量额外连续IO的问题.
3. B+树当索引大于内存量, 每次随机的索引搜索,插入和删除都将有至少一次随机IO.
4. 索引组织表(HashTable)占用内存太大, 同时每次随机的索引搜索,插入和删除都将有一次随机

在网上查到以上资料,可是不理解!例如:
1,为什么数据量大于内存大小就会出现随机IO?
3,B+树索引大于内存量,“每次随机的索引搜索”这句话如何理解??

求指教!

阅读 11k
2 个回答

为什么数据量大于内存大小就会出现随机IO?

小于内存的话,可以先放在内存里,然后直接从内存读写

B+树索引大于内存量,“每次随机的索引搜索”这句话如何理解??

B+树的查找运算有两种:从最小关键字起顺序查找,从根结点开始进行随机查找。

随机访问的特点是每次IO请求的数据在磁盘上的位置跨度很大(如:分布在不同的扇区),因此N个非常小的IO请求(如:1K),必须以N次IO请求才能获取到相应的数据。

顺序访问的特点跟随机访问相反,它请求的数据在磁盘的位置是连续的。当系统发起N个非常小的IO请求(如:1K)时,因为一次IO是有代价的,系统会取完整的一块数据(如4K、8K),所以当第一次IO完成时,后续IO请求的数据可能已经有了。这样可以减少IO请求的次数。这也就是所谓的预取。

随机访问和顺序访问同样是有应用决定的。如数据库、小文件的存储的业务,大多是随机IO。而视频类业务、大文件存取,则大多为顺序IO。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题