0Pricing
SQL Academy · Lección

Planificación de capacidad y auditorías de fragmentación

Pronostique el crecimiento del disco y de las IOPS, audite periódicamente la fragmentación de tablas e índices y planifique las ampliaciones antes de quedarse sin recursos.

Planificación de capacidad y auditorías de fragmentación es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

Qué debe predecir

Para dimensionar la base de datos para los próximos 6 a 12 meses, debe proyectar:

  • Uso del disco (datos + WAL + índices)
  • Demanda de IOPS
  • Conjunto de trabajo en RAM
  • Número de conexiones

Crecimiento del disco

Analice la tendencia del crecimiento reciente:

SELECT pg_size_pretty(pg_database_size(current_database()));
SELECT pg_size_pretty(pg_total_relation_size(t.oid)) AS total,
       relname
FROM pg_class t
WHERE relkind = 'r'
ORDER BY pg_total_relation_size(t.oid) DESC LIMIT 20;

Seguimiento del crecimiento por tabla

Programe una tarea que registre métricas y represéntelas gráficamente:

INSERT INTO size_history (ts, tablename, size_bytes)
SELECT NOW(), relname, pg_total_relation_size(oid)
FROM pg_class WHERE relkind = 'r';

Estimación de IOPS

Las tablas con mayor actividad de lectura de E/S aparecen en pg_stat_user_tables:

SELECT relname, seq_tup_read, idx_tup_fetch,
       seq_tup_read + idx_tup_fetch AS total_reads
FROM pg_stat_user_tables
ORDER BY total_reads DESC LIMIT 20;

Dimensionamiento de la RAM

shared_buffers ≈ 25 % de la RAM. effective_cache_size ≈ 75 % (es una indicación para el planificador, no una asignación). work_mem por conexión × conexiones no debe superar la RAM disponible.

Auditoría de bloat

Encuentre las tablas con más filas muertas:

SELECT relname,
       n_live_tup,
       n_dead_tup,
       round(n_dead_tup::numeric / NULLIF(n_live_tup, 0), 2) AS dead_ratio,
       last_autovacuum
FROM pg_stat_user_tables
ORDER BY n_dead_tup DESC
LIMIT 20;

Bloat de índices

Utilice pgstattuple o las herramientas integradas:

CREATE EXTENSION pgstattuple;

SELECT relname,
       pg_size_pretty(pg_relation_size(indexrelid)) AS size,
       (pgstatindex(indexrelid::regclass)).leaf_fragmentation
FROM pg_stat_user_indexes
ORDER BY pg_relation_size(indexrelid) DESC LIMIT 20;

Índices sin uso

Encuéntrelos y elimínelos: tienen un coste de escritura:

SELECT schemaname, relname, indexrelname,
       pg_size_pretty(pg_relation_size(indexrelid))
FROM pg_stat_user_indexes
WHERE idx_scan = 0
  AND indexrelname NOT LIKE '%_pkey'
ORDER BY pg_relation_size(indexrelid) DESC;

Auditoría de conexiones

Cuántos clientes están conectados y en qué estado:

SELECT datname, usename, application_name, state, COUNT(*)
FROM pg_stat_activity
GROUP BY 1,2,3,4 ORDER BY 5 DESC;

Transacciones largas

La causa del bloqueo de vacuum:

SELECT pid, state, xact_start, NOW() - xact_start AS xact_age, query
FROM pg_stat_activity
WHERE xact_start IS NOT NULL
ORDER BY xact_age DESC NULLS LAST LIMIT 20;

WAL y archivos de archivado

Supervise la tasa de generación de WAL para dimensionar el almacenamiento de archivado:

SELECT pg_size_pretty(pg_wal_lsn_diff(pg_current_wal_lsn(), '0/0')) AS total_wal_generated;

Planificar la conmutación por error

El disco de la réplica debe tener el mismo tamaño que el de la principal. Verifique que la tasa de puesta al día de la réplica sea ≥ a la tasa de escritura de la principal.

Resumen

Planificar la capacidad consiste en representar gráficamente las métricas adecuadas.

  • Crecimiento del tamaño por tabla
  • Proporción de filas muertas
  • Índices sin uso
  • Transacciones largas que bloquean vacuum
  • Número de conexiones

Comprobación rápida

¿Qué vista debe consultar para encontrar las tablas con más filas muertas al planificar vacuum?

Preguntas frecuentes

¿La lección «Planificación de capacidad y auditorías de fragmentación» es gratis?

Sí — el texto completo de «Planificación de capacidad y auditorías de fragmentación» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Planificación de capacidad y auditorías de fragmentación»?

Pronostique el crecimiento del disco y de las IOPS, audite periódicamente la fragmentación de tablas e índices y planifique las ampliaciones antes de quedarse sin recursos. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Planificación de capacidad y auditorías de fragmentación»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. pg_stat_statements: consultas principales
  2. pgBadger para analizar registros
  3. Agrupación de conexiones: PgBouncer
  4. Planificación de capacidad y auditorías de fragmentación
← Volver a SQL Academy