V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
luosuosile
V2EX  ›  问与答

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

  •  
  •   luosuosile · Nov 30, 2018 · 2119 views
    This topic created in 2715 days ago, the information mentioned may be changed or developed.

    最近在设计数据库,了解这些知识所以产生了疑问。 磁盘的随机 IO 定义为磁盘磁头的寻道时间,和光盘的旋转时间。 磁盘的顺序 IO 定义为磁盘进行一次磁头寻道,旋转然后因为数据排列是顺序的,所以只需要进行一次。

    那么我的问题就来了,为什么我们对增加了索引,就变成了顺序 io。按道理说,索引不会使得磁盘数据重新排列才是。 还是上面的解释错了?顺序 IO 是大量减少寻道和旋转次数。而随机 IO 是进行大量的寻道和旋转(实际上旋转应该没那么多?因为资源虽然不连续但是位置应该是比较近的)

    百思不得其解,所以希望得到指导或者讨论。后续如果得到解答我也会放出来的,谢谢大家。

    2 replies    2018-12-04 09:47:16 +08:00
    JuliaKen
        1
    JuliaKen  
       Nov 30, 2018 via Android
    对于你说的 "索引不会使得磁盘数据重新排列才是" ,我对使用索引的理解,是把索引读到内存然后找到符合条件的,磁盘就有了目的可以在顺序 IO 下完成工作。
    luosuosile
        2
    luosuosile  
    OP
       Dec 4, 2018
    @JuliaKen 索引好像是在磁盘块里面的,因为索引应该是加在表数据(也可以说是 schema ?)前面(这句话是我按照解释索引的图理解的,但是好像没有明说)。
    所以我认为 mysql 是每次读取一页磁盘块,然后扫描磁盘块然后根据里面的表数据索引进行顺序 IO。也就是根据索引移动磁头读取需要的磁盘块。
    所以我觉得可能是上面的解释为了解释方便易懂省略了。。当然也可能是我错了。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4710 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 04:08 · PVG 12:08 · LAX 21:08 · JFK 00:08
    ♥ Do have faith in what you're doing.