PgAssistant:PostgreSQL 数据库性能优化助手
PgAssistant 是一款开源工具,旨在帮助开发者理解和优化 PostgreSQL 数据库的性能。它提供对数据库行为的深入分析,识别与模式相关的问题,并协助纠正这些问题。此外,PgAssistant 通过一个简单的 JSON 文件,可以轻松管理项目中常用的特定 SQL 查询库。

主要功能:
•数据库行为分析: 通过详细的分析了解 PostgreSQL 数据库的性能表现。•模式优化: 识别并纠正与数据库模式相关的问题。•查询库管理: 使用 JSON 文件轻松管理特定 SQL 查询库。•用户友好的界面: 简单直观的界面,易于使用。•SQL 代码检查: PgAssistant 使用 Python Sqlfluff 来检查你的 SQL 代码。•OpenAI 助手: 如果你有 OpenAI 帐户,界面可以查询 OpenAI 以帮助你理解查询计划并优化 SQL 查询。•本地 LLM 助手: 如果你运行像 ollama 这样的本地 LLM,你也可以将其与 pgAssistant 一起使用。•LLM 助手: 如果你使用 OpenAI 或 ollama 以外的其他 LLM,PgAssistant 将帮助你正确制定查询以提示你首选的 LLM 引擎。•获取 DDL: 获取顶级查询的 DDL - pgAssistant 使用 pg_dump 来实现这一点。•PGTune: PGTune 已加入。连接到你的数据库后,pgAssistant 可以帮助你修改 ALTER SYSTEM 参数!•Docker: 基于 pgTune 的建议,pgAssistant 可以帮助你编写 docker-compose 文件。•在顶级查询中,pgAssistant 帮助你提供参数值并注释 EXPLAIN ANALYZE 输出的结果。
关于 LLM 的使用:
虽然现有的工具在优化查询方面具有确定性优势,但它们无法告知列是否符合 RFC,也无法提供性能指标之外的查询优化建议。我们相信 LLM 可以完成确定性工具无法完成的任务,提供更深入的见解、合规性检查和智能查询优化。
LLM 可能会犯错,因此选择合适的模型、进行广泛的测试并始终牢记准确率并非 100% 至关重要。但是,通过使用像 OpenAI、Claude 或 Codestral 这样的模型(我们已经在许多数据库上进行了测试),我们相信 pgAssistant 可以有效地帮助开发人员改进他们的模式并优化他们的查询。
重要提示:
请在非生产环境中使用 pgAssistant。此工具的目的是帮助你在数据库投入生产之前修复它。
pgAssistant 的设计目的是帮助开发人员设计和理解他们的 PostgreSQL 数据库,使开发人员尽可能自主,教育他们,并减少对 DBA 专业知识的需求。
依赖:
pgAssistant 需要 pg_stat_statements
PostgreSQL 模块才能运行。
如何启用 pg_stat_statements
模块:
激活此模块非常简单。以下是在 Docker 环境中激活它的示例,以及 PostgreSQL 文档。
•Docker 环境示例:https://github.com/nexsol-technologies/pgassistant-postgres-sample/tree/main•PostgreSQL 文档:https://www.postgresql.org/docs/current/pgstatstatements.html
理解 myqueries.json
文件:
myqueries.json
文件用于存储你常用的查询。添加到 JSON 文件中的每个查询都可以被 pgAssistant 搜索和执行。
JSON 格式非常简单:
{
"id": "db_version",
"description": "Database version",
"category": "Database",
"sql": "SHOW server_version;",
"type": "select"
"reference": "https://www.postgresql.org/docs/current/sql-show.html"
}
•id
: 查询的唯一 ID。•description
: SQL 查询的描述。•categorie
: SQL 类别,例如 Database、Issue、Table、Index 等。•sql
: SQL 查询,以“;”结尾。•reference
: 查询文档或项目文档的 URL。•type
: 允许 2 种 SQL 类型:
•select
: 执行 select 查询。•param_query
: 带有参数的 select 查询。每个参数必须采用 $1
、$2
等格式。
快速开始:
•使用 Docker 启动并使用 Nexsol technologies 镜像:
使用此 docker-compose.yml
并运行:
访问 http://localhost:8080/database.html
。应用程序应该已启动并运行。