Dasha 1.8:索引建议、I/O 分析、模式检查与日志洞察
发布于 2026-09-29,Dasha
相关开源软件
Dasha 是一款面向 PostgreSQL 集群群组的开源性能仪表盘。它通过只读角色连接集群,展示数据库当前的运行情况,并解释可以采取哪些措施。数据库主机上无需安装任何组件:没有代理,也不需要在已有扩展之外再安装额外扩展。
一个实例可以服务多个集群及其全部副本。大多数 PostgreSQL 统计数据都属于实例级数据,不会通过复制传递,因此 Dasha 会读取集群中的每台主机,再综合分析。一个在主库上看起来未被使用的索引,可能正承载着备库的全部读取负载。
自上次公告以来的新增功能
- 索引建议。 Dasha 读取集群中每台主机上的
pg_stat_statements,建议补充缺失的 B-tree 索引。每项候选建议都附有列顺序、可直接使用的 CREATE INDEX CONCURRENTLY 语句、覆盖的 SQL 语句及其执行时间占比,同时考虑写入计数与分区表(ATTACH PARTITION)。候选建议还可以结合日志中的 auto_explain 计划,展示对该表的顺序扫描、开销及被过滤掉的行数。如果行数估算不准,会提示先运行 ANALYZE。
- I/O 页面。 基于
pg_stat_io 构建,需要 PostgreSQL 16 或更新版本。按后端类型、对象和上下文(normal、vacuum、bulkread、bulkwrite)拆分服务器 I/O,并在 PostgreSQL 18 上展示 WAL。支持实时模式与快照历史,另有展示 shared_buffers 效率、清理开销及批量操作的卡片。
- 模式检查。 提供 17 项检查,发现那些平时难以察觉、直到出问题才暴露的结构性缺陷,包括接近耗尽的序列、没有主键或唯一键的表、遗忘的
UNLOGGED 关系、允许任何人创建对象的 public 模式(CVE-2018-1058)、用 varchar 存储的 UUID、可为空的外键、始终未验证的 NOT VALID 约束,以及用保留关键字命名的对象。每项发现都附有严重程度和修复 SQL。
- 日志分析。 日志搜索现支持 OpenSearch、Elasticsearch、VictoriaLogs 以及 Yandex Managed PostgreSQL。可将时间窗口内的日志按事件类别分组,包括死锁、锁等待、取消、检查点、自动清理、临时文件和错误,并展示常见消息模板。
auto_explain 计划按语句和计划形态分组;计划树会标出大表顺序扫描、相差几个数量级的行数估算和溢写到磁盘的排序。比较两个时间窗口时,会列出执行计划变差的语句。
- 按数据库分析查询。 查询报告和 Top 10 面板可在当前数据库与整个实例之间切换。
- Postgres Pro 支持。 当
pg_stat_statements 不可用时,Dasha 会读取 pgpro_stats,无需额外配置。
- 自动发现数据库。 Dasha 向集群查询数据库列表,并持续保持更新。
功能
- 健康评分: 按八类指标为每个实例计算 0–100 的综合评分,提供与具体数据库关联、按优先级排列的建议。也可使用 Prometheus/VictoriaMetrics 时间序列计算评分,并展示趋势与季节性基线。
- 查询分析: 按执行时间和 WAL 量排名的查询、运行中和被阻塞查询及其等待事件,以及
pg_stat_statements 快照。快照可保存到存储数据库,通过 URL 分享,并与另一份快照或实时数据比较。
- 自动快照: 独立守护进程在活动突增或主备角色变化时,捕获查询及实例级锁争用快照。这样在第二天追问凌晨 03:00 发生了什么时,便有证据可查。
- 索引分析: 检查膨胀、重复索引、无效索引和数组上的 B-tree 索引。判断索引能否删除时,会考虑统计重置、各主机计数及分区索引,而不是只相信
idx_scan = 0。
- 表与维护: 展示含 TOAST 明细的大小、逐表描述,以及按照 PostgreSQL 自身公式计算的自动清理和事务 ID 回卷阈值;还包括清理进度,以及通过定期增量快照识别出的热点表和索引。
- 锁、等待与连接: 展示锁树、按类型分组的等待事件、连接状态与来源,以及活动会话详情。
- 访问控制: 提供开放访问、静态 API 密钥或 OIDC 三种认证模式,其中 OIDC 使用加密会话 Cookie;支持 Casbin RBAC、个人访问令牌与按身份限流。
- MCP 连接器: 只读 MCP 服务器向 AI 助手提供集群群组诊断信息。包含 31 个工具,覆盖索引建议、模式检查、I/O、日志搜索及计划回退;另有 5 个提示模板、逐用户令牌透传和内置评分规则知识库。
界面提供英语、俄语和德语。
要求
- 被监控集群使用 PostgreSQL 14 或更新版本(已在 14–18 上测试),连接角色须具有
pg_monitor 权限,以及对每个被监控数据库的 CONNECT 权限。
- 查询统计需要
pg_stat_statements(Postgres Pro 上也可使用 pgpro_stats);pgstattuple 为可选扩展。
- I/O 页面需要 PostgreSQL 16 或更新版本。
- 可选:日志搜索与计划分析需要日志源(OpenSearch、Elasticsearch、VictoriaLogs 或 Yandex Managed PostgreSQL);计划分析还需启用
auto_explain。
- 可选:使用独立 PostgreSQL 数据库存储快照、热点对象历史和个人访问令牌。其余功能无需该数据库即可运行。
文档