查看源代码 配置 Ecto 存储库统计信息

本指南介绍如何配置 LiveDashboard 以显示来自底层数据库的统计信息。目前,这些统计信息只能显示在运行在 Ecto.Adapters.PostgresEcto.Adapters.MyXQL 上的 Ecto 存储库上。

安装 Ecto 统计信息

PostgreSQL

要为 PostgreSQL 启用仪表板中的“Ecto 统计信息”功能,您需要执行以下三个步骤

  1. 添加 ecto_psql_extras 依赖项
  2. (可选) 配置仪表板
  3. (可选) 安装自定义 PostgreSQL 扩展

添加 ecto_psql_extras 依赖项

在您的 mix.exs 中,将以下内容添加到您的 deps

  {:ecto_psql_extras, "~> 0.6"},

MySQL/MariaDB

要为 MySQL 或 MariaDB 启用仪表板中的“Ecto 统计信息”功能,您需要执行以下三个步骤

  1. 添加 ecto_mysql_extras 依赖项
  2. (可选) 配置仪表板
  3. (可选) MySQL/MariaDB 配置

添加 ecto_mysql_extras 依赖项

在您的 mix.exs 中,将以下内容添加到您的 deps

  {:ecto_mysql_extras, "~> 0.3"},

SQLite

要为 SQLite 启用仪表板中的“Ecto 统计信息”功能,您需要执行以下三个步骤

  1. 添加 ecto_sqlite3_extras 依赖项
  2. (可选) 配置仪表板

添加 ecto_sqlite3_extras 依赖项

在您的 mix.exs 中,将以下内容添加到您的 deps

  {:ecto_sqlite3_extras, "~> 1.2.0"},

配置仪表板

此步骤 **仅在您要限制仪表板中列出的存储库时才需要**,因为默认情况下将列出所有 *repos*。

转到路由器中的 live_dashboard 调用并列出您的存储库

live_dashboard "/dashboard", ecto_repos: [MyApp.Repo]

您需要列出所有连接到不同数据库的存储库。例如,如果您同时拥有 MyApp.RepoMyApp.RepoAnother,但它们连接到同一个数据库,则列出两者没有任何意义。请记住,目前仅支持在 Ecto.Adapters.PostgresEcto.Adapters.MyXQL 上运行的 Ecto 存储库。

如果您想完全禁用“Ecto 统计信息”选项,请设置 ecto_repos: []

一些查询,例如 long_running_queries,可以通过传递额外的 ecto_psql_extras_options(对于 PostgreSQL)或 ecto_mysql_extras_options(对于 MySQL/MariaDB)来配置,它是一个关键字,其中

  • 每个键都是查询的名称
  • 每个值本身都是一个关键字,将作为 args 传递

例如,如果您想配置 long_running_queries 的阈值

PostgreSQL 示例

live_dashboard "/dashboard",
  ecto_repos: [MyApp.Repo],
  ecto_psql_extras_options: [long_running_queries: [threshold: "200 milliseconds"]]

有关可用选项,请参阅 ecto_psql_extras 文档

MySQL/MariaDB 示例

live_dashboard "/dashboard",
  ecto_repos: [MyApp.Repo],
  ecto_mysql_extras_options: [long_running_queries: [threshold: 200]]

有关可用选项,请参阅 ecto_mysql_extras 文档

SQLite 示例

live_dashboard "/dashboard",
  ecto_repos: [MyApp.Repo],
  ecto_sqlite3_extras_options: []

有关可用选项,请参阅 ecto_sqlite3_extras 文档

安装自定义 PostgreSQL 扩展

启用存储库页面后,一些查询(调用和异常值)需要安装 pg_stat_statements 扩展。如果您希望访问上述功能,则必须先安装扩展,否则将不会显示该功能。

MySQL/MariaDB 配置

访问存储库的用户应具有访问某些系统级数据库的权限。有关正在使用的模式的更多详细信息,请参阅 ecto_mysql_extras 文档

对于 MariaDB,performance_schema 默认情况下未启用。要启用它,请在 my.cnf 中添加 performance_schema=ON。这些更改将在重新启动后生效。有关更多详细信息,请参阅 ecto_mysql_extras 文档