排查数据库性能问题
本指南涉及已连接到 Metabase 的数据库或数据仓库作为数据源。
要解决 Metabase 应用数据库的问题,请参阅这些排查指南。
识别瓶颈
- 可选:使用 Metabase 的使用分析来查看 Metabase 使用统计信息。*
- 查看数据库服务器日志,并检查是否
- 表的大小在增长,
- 更多用户使用 Metabase 访问数据库,
- 用户更频繁地访问数据库,或
- 除了 Metabase 之外,某个脚本或应用程序正在频繁访问数据库。
- 如果特定表被大量查询,尝试优化表架构。
- 从 Metabase 运行一个问题,然后直接在数据库中运行相同的查询。
- 如果查询花费的时间大致相同,您的数据或使用量可能已超出数据库的承载能力。您可以为数据库分配更多资源,或考虑升级硬件。
- 如果 Metabase 中的查询比直接在数据库中查询花费的时间更长,您可能需要调整 Metabase 应用的部署。查看“Metabase 规模化”中的一些选项。
- 如果脚本或第三方应用程序同时向数据库发送大量查询
- 停止您的脚本或应用程序,并清除任何排队的查询。
- 建议:为您的脚本添加超时,安排脚本或应用程序在非高峰时段运行,或复制您的数据库(并将您的工具指向那里)。
* 适用于 Pro 和 Enterprise 套餐。
重置数据库连接
- 转到设置 > 管理员设置 > 数据库 > 您的数据库。
- 点击保存更改(不进行任何更改)以重置 Metabase 到数据库的连接。
- 或者:直接从数据库中终止连接。
解释
通过断开和重新连接数据库来“关闭再打开”——这是一个简单的检查,可以节省您大量时间。
通常,Metabase 会尝试在 10 分钟后关闭挂起的数据库连接,然后在 20 分钟后再次尝试。但如果您的数据库没有响应,您可能需要从数据库端关闭与 Metabase 的连接。
清除排队的查询
- 停止进程(例如,脚本,或包含过多卡片的仪表板,一次性启动大量查询)。
- 转到您的数据库服务器并停止所有正在进行的(来自 Metabase 的)查询。
- 可选:增加到数据库的连接数。
解释
如果有人或某物同时创建 100 个查询,这种查询的“踩踏”将占用 Metabase 和数据库之间所有可用的连接,阻止任何新查询运行。如果其他人在前 100 个查询仍在进行时继续运行问题和仪表板,队列的增长速度将快于数据库的处理速度。
管理资源密集型查询
解释
默认情况下,Metabase 会定期对数据库进行同步和扫描查询,以保持表更新、获取筛选器下拉菜单的新值以及提供有用的建议。如果您的数据库很大,您可以选择手动触发这些查询而不是按计划执行。
使用数字、日期或时间戳列的问题
- 更新您的数据库架构,使列被正确键入。
- 同步更新的列,将更改引入 Metabase。
解释
如果一个问题使用的数据在数据库中存储为错误的数据类型(最常见的是数字、日期或时间戳值存储为字符串),Metabase 将生成一个查询,要求数据库即时转换这些值。在架构级别正确键入您的列将帮助您的数据库避免额外的步骤,从而更快地在 Metabase 中返回结果。
相关问题
您还卡住了吗?
如果您无法使用故障排除指南解决问题
- 搜索或咨询 Metabase 社区。
- 搜索已知错误或限制。
阅读其他版本的 Metabase 的文档。