有人能解释一下这两种等待类型的主要区别吗?
发布于 2020-09-25 12:16:46
我认为您首先应该理解Sync和异步IO之间的区别。有关这两个I/O的基本性质的信息可以在鲍勃·多尔的I/O演示博客中找到,请参阅异步与同步IO一节。
在非常简单的意义上,异步IO是指在输入/输出请求之后,程序或调用代码不会等待I/O操作完成,而是会忙于其他任务,稍后它可以来检查I/O请求是否已经完成。类似地,对于Sync,调用代码将等待确认I/O请求已经完成。引用鲍勃·多尔的博客
在Windows中,I/ APIs允许同步和异步请求。同步请求是对API (如WriteFile )的调用,在操作完成之前不会返回对调用代码的控制。异步将请求传递给操作系统和相关驱动程序,并将控制返回给调用代码。调用代码可以自由地执行其他逻辑,稍后再回来查看I/O是否完成。Server主要使用异步I/O模式。这允许Server读写页,然后继续有效地使用CPU和其他资源。以大型排序操作为例。Server可以使用其预读逻辑发布(异步请求)多个页面,然后开始处理请求返回的第一个页面。这允许Server使用CPU资源对页面上的行进行排序,而I/O子系统同时在其他页面中获取(读取)。最大限度地利用I/O带宽,更有效地利用其他资源(如CPU )。
现在,这里的等待时间表示等待异步/同步IO请求完成所花费的时间。
https://dba.stackexchange.com/questions/276074
复制相似问题