Este proyecto permite realizar un análisis comparativo del rendimiento de una base de datos PostgreSQL antes y después de implementar mejoras. Está diseñado para:
- Medir el impacto de las optimizaciones en consultas críticas
- Identificar cuellos de botella en el rendimiento
- Validar la efectividad de los cambios realizados
- Generar informes detallados para la toma de decisiones
El proyecto utiliza Python, psycopg2, pandas y matplotlib para:
- Ejecutar consultas SQL almacenadas en archivos
- Medir tiempos de ejecución y uso de recursos
- Analizar índices utilizados en cada consulta
- Generar informes comparativos con visualizaciones
- Seguir tendencias de rendimiento a lo largo del tiempo
👉 El resultado es un informe detallado que cuantifica la mejora de rendimiento y proporciona información valiosa para optimizaciones futuras.
- Ejecución de consultas SQL almacenadas en archivos
- Medición precisa de tiempos de ejecución
- Conteo de filas procesadas
- Identificación de índices utilizados
- Comparación lado a lado de métricas antes/después
- Cálculo de porcentajes de mejora
- Generación de gráficos comparativos
- Seguimiento de tendencias temporales
- Informe detallado en formato Markdown
- Gráficos de rendimiento comparativo
- Análisis de uso de índices
- Tendencias de rendimiento a lo largo del tiempo
- Configuración centralizada
- Estructura de proyecto clara
- Código modular y documentado
- Fácil integración con flujos de trabajo existentes
El directorio output/ contiene todos los resultados generados por las pruebas de rendimiento:
before_results.csv: Resultados de las pruebas ejecutadas antes de las mejorasafter_results.csv: Resultados después de implementar las optimizacioneshistorical_results.csv: Historial completo de todas las ejecuciones para análisis de tendenciasperformance_comparison.png: Gráfico comparativo visual de los resultados
Cada vez que ejecutes las pruebas, estos archivos se actualizarán automáticamente, permitiéndote hacer un seguimiento del rendimiento a lo largo del tiempo.
/proyecto_db_performance
├── requirements.txt # Dependencias de Python
├── scripts/
│ ├── config.py # Configuración de conexión a la BD
│ ├── performance_test.py # Script principal de medición
│ └── report_generator.py # Generador de informes
├── queries/ # Consultas SQL organizadas
│ ├── antes/ # Consultas originales (antes de mejoras)
│ └── despues/ # Consultas optimizadas (después de mejoras)
├── data/
│ └── query_map.json # Mapeo de consultas para comparativa
└── output/ # Resultados e informes
├── before_results.csv # Resultados iniciales
├── after_results.csv # Resultados posteriores
├── historical_results.csv # Historial de ejecuciones
└── performance_comparison.png # Gráfico comparativo
-
scripts/performance_test.py:- Ejecuta las consultas SQL y mide su rendimiento
- Registra métricas de tiempo, filas procesadas y uso de índices
- Almacena resultados en archivos CSV
-
scripts/report_generator.py:- Genera informes comparativos en formato Markdown
- Crea visualizaciones de rendimiento
- Analiza tendencias a lo largo del tiempo
-
data/query_map.json:- Define las consultas a ejecutar y sus metadatos
- Mapea consultas "antes" con sus equivalentes "después"
- Python 3.8 o superior
- PostgreSQL 10 o superior
- Dependencias del proyecto:
pip install -r requirements.txt
# Ejecutar pruebas en el estado actual (antes de mejoras)
python -m scripts.performance_test antes- Implementar mejoras en la base de datos
- Optimizar consultas, índices y configuración
- Documentar cambios realizados
# Ejecutar pruebas después de las mejoras
python -m scripts.performance_test despues# Generar informe comparativo
python -m scripts.report_generatorLos archivos generados en el directorio output/ te permitirán analizar:
-
Resultados Detallados (
before_results.csvyafter_results.csv):- Tiempos de ejecución de cada consulta
- Número de filas procesadas
- Índices utilizados
- Tendencias de rendimiento
-
Análisis Histórico (
historical_results.csv):- Evolución del rendimiento a lo largo del tiempo
- Identificación de patrones o regresiones
- Comparativa entre múltiples ciclos de optimización
-
Visualización Gráfica (
performance_comparison.png):- Comparación visual entre el estado inicial y el optimizado
- Identificación rápida de mejoras o problemas
- Gráfico generado automáticamente con cada ejecución
El informe generado incluirá:
- Comparación de tiempos de ejecución
- Análisis de uso de índices
- Tendencias de rendimiento
- Recomendaciones de optimización
Cada vez que ejecutes las pruebas, los resultados se agregarán al historial, permitiendo:
- Seguimiento de tendencias a largo plazo
- Análisis del impacto de optimizaciones incrementales
- Identificación de regresiones de rendimiento
