Dasha 是一个面向 PostgreSQL 的开源性能分析与健康诊断平台,可以帮助 PostgreSQL DBA 定位性能瓶颈、发现架构问题并且给出优化建议。
Dasha 主要采用 Go + TypeScript 语言开发,遵循 GPLv3 开源协议,代码托管在 GitHub:
https://github.com/dbulashev/dasha
功能特性
- 查询分析:基于 pg_stat_statements 和实时会话视图,从执行时间、调用频率、WAL 生成量、等待状态、阻塞情况等多个维度分析 SQL 负载,帮助 DBA 快速识别最耗资源、增长最快或存在异常的查询;同时支持查看正在运行和被阻塞的 SQL、保存和对比查询快照,从而定位性能回退、发布影响和周期性问题,为 SQL 优化提供直接依据。
索引分析:用于评估索引设计质量和使用效率的诊断模块,可以综合分析索引使用统计、索引膨胀、重复索引、无效索引、不合理索引设计以及潜在的可删除索引等问题。
表分析:提供以表为中心的全方位诊断能力,包括表容量分析(TOAST、FSM、VM 结构拆分)、顺序扫描与索引扫描比例、缓存命中率、分区表信息、自定义存储参数以及表膨胀情况等;同时支持查看表的详细结构信息(列、索引、约束、Vacuum 统计等),并且通过热点表帮助 DBA 快速定位存储、访问模式和性能瓶颈问题。
外键分析:检查外键约束是否缺少配套索引、识别可能导致更新或删除操作性能下降的外键关系,帮助发现因外键设计不合理而产生的锁竞争和维护开销问题。
维护与清理:从事务老化、Autovacuum 效率、表维护状态和任务执行进度等维度评估 PostgreSQL 的可维护性与健康状况,帮助提前发现膨胀、统计信息失真和 XID Wraparound 等风险。
连接与锁定:通过分析连接状态、客户端来源、活跃会话(pg_stat_activity)、等待事件以及锁依赖关系,帮助 DBA 快速识别连接耗尽、长事务、锁竞争和阻塞链等问题
维护进度监控:对维护与管理任务进行实时进度监控,帮助 DBA 了解 VACUUM、ANALYZE、索引创建和备份等操作的执行状态,快速识别长时间运行或异常任务。
配置分析:通过分析 PostgreSQL 核心配置参数,识别性能、安全性和运维层面的配置风险。
模式检查:通过自动化规则对 PostgreSQL 数据库模式进行全面健康检查,发现影响数据质量、性能和可维护性的结构性问题,包括无效约束、外键列类型不匹配、可为空的外键字段、重复或相似外键定义等设计缺陷。
健康评分:通过对查询性能、索引质量、表状态、维护情况、配置合理性以及 Schema 设计等多个维度进行综合评估,将 PostgreSQL 集群的整体健康状况量化为统一分值。
认证与授权:Dasha 提供包括 OIDC 单点登录、Token 认证和 RBAC 权限控制在内的企业级安全机制,实现用户身份认证、权限隔离和安全访问管理,保障数据库运维与诊断数据的安全性。
MCP 服务器:可以将 PostgreSQL 的运行状态、性能指标和诊断结果封装为标准 MCP 服务,使的 AI 助手能够直接访问数据库健康信息并执行智能诊断,实现用自然语言管理和分析数据库。
下载安装
安装 Dasha 最简单的方式是使用官方提供的 Docker Compose 部署。
首先,克隆代码:
gitclone https://github.com/dbulashev/dasha.gitcddasha然后,配置需要监控的 PostgreSQL 信息(deploy/compose/dasha.yaml):
clusters:-name:productionusername:monitoring_userpassword:secretport:5432databases:-myapphosts:-pg-master.example.com-pg-replica-1.example.com其中:
- hosts:PostgreSQL 主库和备库地址;
- username:监控账号,需要提前创建,授予 pg_monitor 权限;
- password:监控账号密码;
- databases:需要监控的数据库列表。
然后启动服务:
dockercompose up-d在浏览器中使用以下地址进行访问:
http://localhost:3000