有几个关于磁盘IO的问题需要大家的帮助,请大家不吝赐教。
在mysql的学习中和查看相关的资料中,经常听到IO瓶颈之类的问题。我想知道的问题有:
1、什么叫IO单元
2、什么叫一次IO
3、IO怎么计算,比如我的一个sql语句需要读取多少个磁盘IO,是查询的数据多IO多,数据少IO就少吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
IO单元,因为磁盘IO比较慢,OS不会一次就读那么64bit一丁点,而会把一大块读到内存里边。这一大块的体积,应该就是这个IO单元。Windows下这个叫做簇,NTFS一般是4K,最多貌似可以设成64K。
一次IO,顾名思义,把内存里一个IO单元写到磁盘上或者从磁盘读一个IO单元。
IO怎么算,这个就太复杂了,数据库会对SQL生成执行计划,然后根据执行计划执行。执行计划可以作为一个参考,但实际上的执行IO还取决于数据库的存储方法,MySQL本身就有多种存储引擎,像Oracle这种甚至可以直接用磁盘分区,这都会对IO次数产生很大的影响。