数据库性能故障排除

本指南介绍如何处理作为数据源连接到 Metabase 的数据库或数据仓库。

要解决 Metabase 应用程序数据库的问题,请查看这些故障排除指南

识别瓶颈

  1. 可选:使用 Metabase 的使用分析来查看您的 Metabase 使用情况统计信息。*
  2. 前往您的数据库服务器日志,检查是否
    • 您的表正在增长,
    • 更多人使用 Metabase 访问您的数据库,
    • 人们更频繁地访问您的数据库,或者
    • 脚本或应用程序(非 Metabase)正在频繁访问数据库。
  3. 如果特定表被频繁查询,请尝试优化您的表模式
  4. 从 Metabase 运行一个问题,然后直接在数据库中运行相同的查询
    • 如果查询时间大致相同,您的数据或使用量可能超出了数据库的承受能力。您可以为数据库提供更多资源,或考虑升级您的硬件
    • 如果 Metabase 中的查询比直接对数据库执行的查询花费更长时间,您可能需要调整 Metabase 应用程序的部署。请查看大规模 Metabase 部署中的一些选项。
  5. 如果脚本或第三方应用程序一次性向您的数据库发送大量查询
    • 停止您的脚本或应用程序,并清除任何排队的查询
    • 建议:为您的脚本添加超时,安排脚本或应用程序在非高峰时段运行,或者复制您的数据库(并将您的工具指向那里)。

* 适用于专业版和企业版。

重置数据库连接

  1. 前往设置 > 管理设置 > 数据库 > 您的数据库。
  2. 点击保存更改(无需进行任何更改)以重置 Metabase 与数据库的连接。
  3. 或者:直接从您的数据库终止连接。

说明

通过断开并重新连接您的数据库来“关闭再打开”——这是一个简单的健全性检查,可以为您节省大量时间。

通常,Metabase 会在 10 分钟后尝试关闭到数据库的挂起连接,然后在 20 分钟后再次尝试。但如果您的数据库没有响应,您可能需要从数据库端关闭与 Metabase 的连接。

清除排队的查询

  1. 停止该进程(例如,一个脚本,或一个包含过多卡片的仪表盘,它一次性启动了大量查询)。
  2. 前往您的数据库服务器,停止所有正在进行的 Metabase 查询。
  3. 可选:增加到数据库的连接数

说明

如果有人或某个东西同时创建 100 个查询,这种查询的“踩踏”将占用 Metabase 和数据库之间所有可用的连接,从而阻止任何新查询的运行。如果其他人在前 100 个查询仍在进行时继续运行问题和仪表盘,查询队列的增长速度将超过数据库的处理能力。

管理资源密集型查询

  1. 重新安排或禁用 Metabase 同步和扫描.

说明

默认情况下,Metabase 会定期对您的数据库进行同步和扫描查询,以保持表格最新,获取筛选下拉菜单的新值,并提供有用的建议。如果您的数据库非常大,您可以选择手动触发这些查询,而不是按计划进行。

使用数字、日期或时间戳列的问题

  1. 更新您的数据库模式,使列类型正确。
  2. 同步更新的列以将更改导入 Metabase。

说明

如果某个问题使用的数据在您的数据库中以错误的数据类型存储(最常见的是将数字、日期或时间戳值存储为字符串),Metabase 将生成一个查询,要求您的数据库即时转换这些值。在模式级别正确设置列类型将有助于您的数据库避免这一额外步骤,从而在 Metabase 中更快地返回结果。

您还遇到问题吗?

如果您无法使用故障排除指南解决问题

阅读其他Metabase 版本的文档。

© . All rights reserved.