重要
Lakebase 自动缩放在以下区域处于 Beta 版本:eastus2,westeurope,westus。
Lakebase 自动缩放是最新版本的 Lakebase,可自动缩放计算、缩放到零、分支和即时还原。 有关 与 Lakebase 预配的功能比较,请参阅 在版本之间进行选择。
pg_stat_statements 是一个 Postgres 扩展,提供 Lakebase Postgres 数据库中 SQL 语句执行的详细统计视图。 它跟踪执行计数、总执行时间和平均执行时间等信息,帮助你分析和优化 SQL 查询性能。
何时使用pg_stat_statements
在需要时使用 pg_stat_statements :
- 详细的查询执行统计信息和性能指标
- 识别缓慢或频繁执行的查询
- 查询性能分析和优化见解
- 数据库工作负荷分析和容量规划
- 与自定义监视工具和仪表板集成
启用pg_stat_statements
该 pg_stat_statements 扩展在 Lakebase Postgres 中可用。 若要启用:
使用 SQL 编辑器或 Postgres 客户端连接到数据库。
运行以下 SQL 命令以创建扩展:
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;该扩展在创建后立即开始收集统计信息。
数据持久性
扩展收集的 pg_stat_statements 统计信息存储在内存中,在 Lakebase 计算暂停或重启时不会保留。 例如,如果计算资源因为不活动而缩减,则任何现有的统计信息都将丢失。 计算重启后会收集新的统计信息。
此行为意味着:
- 计算重启或挂起后重置统计信息
- 长时间运行的性能分析需要一致的计算可用性
- 在计划内维护或重启之前,可能需要导出重要统计信息
注释
如果需要跨计算生命周期事件的历史性能数据,请考虑定期运行监视查询并在外部存储结果。
了解详细信息: Postgres 扩展
查询执行统计信息
启用扩展后,您可以使用 pg_stat_statements 视图查询执行统计信息。 此视图包含每个不同数据库查询的一行,其中显示了各种统计信息:
SELECT * FROM pg_stat_statements LIMIT 10;
该视图包含详细信息,例如:
| 用户ID | dbid | queryid | 查询 | calls |
|---|---|---|---|---|
| 16391 | 16384 | -9047282044438606287 | SELECT * FROM 用户; | 10 |
有关列和说明的完整列表,请参阅 PostgreSQL 文档。
关键监视查询
使用这些查询分析数据库性能:
查找最慢的查询
此查询标识平均执行时间最高的查询,这可能指示需要优化的低效查询:
SELECT
query,
calls,
total_exec_time,
mean_exec_time,
(total_exec_time / calls) AS avg_time_ms
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;
查找最常执行的查询
最常执行的查询通常是关键路径和优化候选项。 此查询包括缓存命中率,以帮助识别可能受益于更好的索引的查询:
SELECT
query,
calls,
total_exec_time,
rows,
100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;
查找具有最高 I/O 的查询
此查询识别进行最多磁盘 I/O 操作的查询,这可能会影响数据库的整体性能。
SELECT
query,
calls,
shared_blks_read + shared_blks_written AS total_io,
shared_blks_read,
shared_blks_written
FROM pg_stat_statements
ORDER BY (shared_blks_read + shared_blks_written) DESC
LIMIT 20;
查找最耗时的查询
此查询标识在所有运行中消耗最多总执行时间的查询:
SELECT
query,
calls,
total_exec_time,
mean_exec_time,
rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;
查找返回多行的查询
此查询识别了会返回大型结果集的查询,这些结果集可能受益于分页或筛选:
SELECT
query,
calls,
rows,
(rows / calls) AS avg_rows_per_call
FROM pg_stat_statements
ORDER BY rows DESC
LIMIT 10;
重置统计信息
重置由pg_stat_statements收集的统计信息:
注释
只有 databricks_superuser 角色具有执行此函数所需的权限。 使用 Lakebase 项目创建的默认角色和在 Lakebase App 中创建的角色被授予 databricks_superuser 角色的成员身份。
SELECT pg_stat_statements_reset();
此函数清除所有累积的统计数据,例如 SQL 语句的执行时间和计数,并开始收集新的数据。 当你希望重新开始收集性能统计信息时,它特别有用。
资源
了解详细信息: PostgreSQL 文档