缓存查询结果

如果您的查询结果不经常变化,您可能希望存储这些结果,以便下次有人访问该问题,Metabase可以检索缓存的而不是再次查询数据库的结果。

例如,如果您的数据每天只更新一次,就没有必要每天查询数据库多次,因为数据不会改变。返回缓存的结果可以更快,因为您的数据库不需要重新计算结果来加载您的问题。

您可以设置缓存失效策略,用于问题仪表板数据库

Metabase中缓存的工作原理

假设您为特定问题设置了一个缓存策略。您设置了持续时间策略,表示在一小时后使结果失效(并清除缓存)。

当您首次查看问题时,Metabase会检查存储的结果。如果找不到任何结果,它将对您的数据库进行查询,返回结果,并将结果存储(缓存)。这些结果将在下一小时(根据您设置的1小时持续时间策略)内有效。

如果您在半小时后运行该问题,Metabase将返回这些存储的结果。

如果您在首次运行后超过一小时运行该问题,Metabase会注意到存储的结果比您的缓存策略允许的要旧。Metabase将删除存储的结果,针对数据库运行查询,返回结果,并为未来的查询存储它们。根据您设置的持续时间策略,此缓存将在下一小时内有效。

看看不同的缓存策略如何交互

缓存失效策略

这些策略决定了缓存结果将保持有效的时间。

持续时间缓存策略

持续时间缓存策略仅在Pro企业计划(自托管和Metabase云上)上可用。

在指定的小时数后使缓存失效并清除缓存。当有人运行查询时,Metabase首先会检查它是否已缓存结果以及这些结果是否仍然有效。如果不是,Metabase将对数据库运行查询并缓存结果。这些缓存结果将保持有效,直到您设置的持续时间。

计划缓存策略

计划缓存策略仅在Pro企业计划(自托管和Metabase云上)上可用。

选择定期使缓存失效的时间。Metabase仅在有人运行查询时存储结果,并根据您在此处设置的计划清除缓存结果。

您可以安排缓存失效

  • 每小时
  • 每日
  • 每周
  • 每月

我们目前不支持农历周期。

自适应缓存策略

使用查询的平均执行时间来确定查询结果的缓存时间。

  • 最小查询持续时间:如果该问题的平均查询执行时间大于此秒数,Metabase将缓存该问题。
  • 乘数:为了确定每个缓存结果应保持多长时间,我们取该查询的平均执行时间并将其乘以您在此处输入的值。结果是缓存应保持有效的秒数。例如,如果一个问题平均需要10秒来返回结果,并且您设置了乘数为100,Metabase将存储缓存10 x 100秒:10,000秒(约16分钟)。

每当Metabase在数据库上运行查询以刷新缓存结果时,它都会重新计算查询的平均执行时间。所以如果Metabase第一次在数据库上运行查询,它需要5分钟来返回结果,平均执行时间将是5分钟。如果下一次对数据库的查询需要7分钟来返回,Metabase将更新平均值为6分钟(5和7的平均值是6)。

Pro企业计划上,您可以在使用分析集合中查看查询和缓存统计信息。

不缓存结果

如果您为问题、仪表板或数据库选择“不缓存结果”,Metabase将不会缓存其结果;它将始终对数据库运行查询以刷新结果。

为仪表板、问题和数据库设置缓存策略

您可以针对不同实体设置缓存策略。

星号表示 Pro企业版 功能。

默认缓存策略

要为您的 Metabase 设置默认缓存策略:按住 Cmd/Ctrl + k 打开命令面板并搜索 性能。或者,点击 齿轮 设置图标 > 管理员设置 > 性能 > 数据库缓存

点击 默认策略 旁边的按钮,并选择一个 缓存失效策略

数据库缓存策略

数据库缓存仅适用于 Pro企业版 计划(无论是自托管还是 Metabase 云服务)。

Database caching settings in the Admin settings under the Performance tab

与默认缓存策略相同,尽管您可以针对特定数据库设置缓存策略。

如果您连接到 Metabase 的数据库已设置为 使用默认 策略,Metabase 将更新显示以反映默认策略设置的值。例如,如果您将默认策略设置为“自适应”,则 Metabase 将显示“自适应”作为设置为“使用默认”的数据库的当前策略。

仪表板缓存策略

仪表板缓存仅适用于 Pro企业版 计划(无论是自托管还是 Metabase 云服务)。

要为仪表板设置缓存策略,您必须具有仪表板集合的 编审访问权限

  1. 前往您的仪表板。
  2. 点击 信息 图标。
  3. 点击 缓存策略
  4. 选择 缓存失效策略
  5. 保存您的更改。

问题缓存策略

问题缓存仅适用于 Pro企业版 计划(无论是自托管还是 Metabase 云服务)。

要为问题设置缓存策略,您必须具有问题集合的 编审访问权限

  1. 前往您的问题。
  2. 点击 信息 图标。
  3. 点击 缓存策略
  4. 选择 缓存失效策略
  5. 保存您的更改。

仪表板、问题、数据库和默认缓存策略的交互

如果多个缓存策略影响相同的问题,Metabase 将按照此顺序使用第一个可用的策略

  1. 问题
  2. 仪表板
  3. 数据库
  4. 默认(全局)

问题策略会覆盖仪表板策略,仪表板策略会覆盖数据库策略,数据库策略会覆盖默认策略。

清除缓存

要清除缓存并刷新结果

  • 问题和仪表板:访问项目并点击 信息 > 缓存策略 > 清除缓存(“清除缓存”按钮位于侧边栏底部)。
  • 数据库:点击 齿轮 图标,然后点击 管理员设置 > 性能 > 数据库缓存。选择您的数据库,然后点击页面底部的 清除缓存 按钮。

缓存位置

如果您自托管 Metabase,则缓存的查询结果将保存到您的 应用程序数据库

如果您使用 Metabase 云服务,则缓存的查询结果将保存到位于美国的 Metabase 服务器上(因为我们的云服务为您管理应用程序数据库)。

进一步阅读

阅读关于其他 Metabase 版本 的文档。

想要改进这些文档? 提出更改建议。