如何可靠地比较查询运行时间



我试图比较同一数据库上不同查询的运行时间,但我面临的问题是结果被缓存,缓存存储在不同的地方,因此运行时间不能反映查询的效率。

如何避免这个问题,以便比较这些查询?

您可以控制两个缓存。查询结果缓存可以通过以下方式禁用:

ALTER SESSION SET USE_CACHED_RESULT = FALSE ;

您可以控制的另一个缓存是数据缓存,有时也称为仓库缓存。这可以通过暂停和恢复仓库来清除:

ALTER WAREHOUSE MY_WAREHOUSE SUSPEND ;
ALTER WAREHOUSE MY_WAREHOUSE RESUME ;

最后是元数据缓存,然而,它保存在全局服务层中,据我所知,没有办法清除它或指示Snowflake不要使用它。

为了比较应该做同样事情的查询,检查查询执行计划通常是个好主意,因为数据库通常都很智能,您可能会发现它们编译到完全相同的计划。

最新更新