【问题标题】:What is the difference between local disk and remote disk in the Profile Overview?Profile Overview 中的本地磁盘和远程磁盘有什么区别?
【发布时间】:2021-04-17 16:44:12
【问题描述】:

我执行了一个雪花查询,配置文件输出如下所示:

本地磁盘 IO 和远程磁盘 IO 有什么区别?每个级别发生了什么?

【问题讨论】:

    标签: snowflake-cloud-data-platform


    【解决方案1】:

    远程磁盘正在从数据库中读取数据,而不是“溢出”。本地磁盘 I/O 是本地磁盘使用,是正常处理的一部分。当仓库无法将所有数据放入内存和本地磁盘缓存时,就会发生溢出。 在您的示例中,“溢出”都不是。远程磁盘 I/O 正在从数据库中读取数据。 您可以通过使用下一个更大的仓库大小来提高此查询的性能;数据将很可能适合内存,从而消除大部分本地存储。 “Spilling”将显示在配置文件中,并带有“Spilling”一词。

    【讨论】:

    • 感谢您的澄清。您很好地解释了为什么从远程 IO 读取数据,这是有道理的,因为那是数据物理存储的地方。为什么要从本地IO读取数据?尤其是数量大到足以消耗 29% 的查询时间?
    【解决方案2】:

    'Local Disk' IO 是指被本地磁盘访问(即虚拟仓库的工作节点本地)阻塞的处理,而“Remote Disk IO”是指被远程磁盘访问阻塞的处理时间。 本质上,当运行每个虚拟仓库节点的下划线 EC2 实例上的可用内存量不足时,如果本地磁盘不足,查询处理引擎就会开始将数据溢出到本地磁盘或远程磁盘。

    Snowflake 文档一目了然:

    【讨论】:

    • 谢谢弗朗西斯科。如果我正确解释了您的答案,我的查询导致 Snowflake 将数据溢出到本地磁盘和远程磁盘,而 28% 和 29% 是创建和检索这些溢出数据所花费的时间?
    • 是的@RandyMinder 这也是我从文档中理解的。您可以在这篇 Snowflake 社区文章中找到更多信息:community.snowflake.com/s/article/…
    【解决方案3】:

    因为所有数据不一定都适合内存。你可以把它想象成服务器上的虚拟内存,由于内存限制,页面交换到本地磁盘。如果你增加仓库的大小,你应该看到本地磁盘 I/0 下降了大约 50%。

    【讨论】:

      【解决方案4】:

      我同意 #3,从屏幕截图中,我们无法确定溢出是否真的发生,因为它在查询配置文件中显示为单独的部分。所以,我认为本地 I/O 是已经从远程存储读取的数据,而远程 I/O 是直接从存储层读取数据,因此需要更长的时间。在第二次执行同一查询/针对同一表时,查询应显示本地 I/O。

      【讨论】:

        猜你喜欢
        • 2015-02-02
        • 2011-01-21
        • 1970-01-01
        • 1970-01-01
        • 2018-11-26
        • 2020-04-28
        • 2021-07-12
        • 2016-05-09
        • 2022-01-17
        相关资源
        最近更新 更多