No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Curso de PostgreSQL

Curso de PostgreSQL

Oswaldo Rodríguez González

Oswaldo Rodríguez González

Mantenimiento

28/32
Recursos

Aportes 31

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

  • Vacuum: La más importante, con tres opciones, Vacuum, Freeze y Analyze.
    Full: la tabla quedará limpia en su totalidad
    Freeze: durante el proceso la tabla se congela y no permite modificaciones hasta que no termina la limpieza
    Analyze: solo revisa la tabla

  • Analyze: No hace cambios en la tabla. Solo hace una revisión y la muestra.

  • Reindex: Aplica para tablas con numerosos registros con indices, como por ejemplo las llaves primarias.

  • Cluster: Especificamos al motor de base de datos que reorganice la información en el disco.

Postgres maneja una serie de funciones que trabajan en segundo plano mientras que trabajamos directamente en la base de datos, y esto es a lo que le llamamos mantenimiento.
El nombre más común de esto es Vaccum, ya que esto quita todas las filas y columnas e items del disco duro que no están funcionando, ya que postgres al percatarse de esto, las marca como “para borrar después”.
Tiene 2 niveles de limpieza.
Liviano, se ejecuta todo el tiempo en la DB en segundo plano.
Full o completo, que es capaz de bloquear las tablas para hacer la limpieza y luego la desbloquea.
Full es importante porque puede que una tabla tenga problemas de indexación y se demore mucho en hacer las consultas.
Hacer mantenimiento en DB no es lo mismo que hacerlo directamente en las tablas.
Para ejecutar el mantenimiento se da clic derecho sobre la DB o la tabla, y luego a la opción “Maintenance”.
En tablas, aparecen 3 opciones
full: Revisa toda la información de la tabla, si hay información que no es aplicable limpiará/eliminará la fila con la información del índice y demás. Activar o desactivar full puede tumbar totalmente la DB.
freeze: durante el proceso se va a congelar. Ningún usuario va a tener acceso a esta tabla hasta que no termine el proceso de limpieza.
analyze: El más suave, el programa ejecutará una revisión y mostrará qué tan bien o mal está la tabla.
Es importante siempre hacer el mantenimiento en el horario en donde menos es utilizada la DB, ¿por qué? porque si hay menos tráfico los usuarios no van a sentir tanto la ausencia del servicio. Igualmente, en la medida de las posibilidades se puede usar una DB de respaldo para que el servicio no se vea ofuscado durante el mantenimiento, luego, una vez hecho el mantenimiento se puede actualizar la DB con los datos generados en la DB de respaldo.

  • Mantenimiento

    Se refiere a quitar todas las filas, columnas e items del disco duro que no están funcionando.

    Se puede realizar a la db o a una tabla en especifica.

    • VACUUM
      • FULL: Se realizara un mantenimiento full, y se realiza una consulta durante el proceso la tabla se congelara y no permitirá ninguna otra modificación.
      • FREEZE: Se congelara durante el proceso y no permitirá ninguna otra modificación.
      • ANALYZE: Realiza una revision pero no ejecuta cambios.
    • ANALYZE
      • No permite realizar cambios, únicamente realiza la revisión y te muestra el estado de la tabla o db.
    • REINDEX
      • Aplica para indices. En el momento que los indices sean demasiado extensos.
    • CLUSTER
      • Organiza la información en el disco duro.

    Recomendación: No realizar mantenimiento a la db a menos que se presente problemas de indexación o eliminado.

Super importante esta informacion, una base de datos debe contar con un rendimiento optimo en todas las transacciones que se ejecutan.

Suerte a todos. Ya casi somos Data Tree Gardeners 😂

Les recomiendo que lean la lectura que están el los archivos de enlaces, que buena información

En la pestaña VACUUM hay tres opciones para hacer mantenimiento, FULL se eliminará todos los indices y filas que ya no son aplicables, FREEZE, incluye que durante ese proceso se congelará la tabla o la bases de datos mientras se hace este proceso. ANALYZE solo analiza la bd.

En pgAdmin, el “maintenance” (mantenimiento) en una tabla se refiere a las operaciones de mantenimiento de rutina que ayudan a optimizar y mantener el rendimiento y la integridad de las tablas en una base de datos de PostgreSQL. Estas operaciones se pueden realizar utilizando la funcionalidad de “Maintenance” en pgAdmin.

VACUUM: Esta operación recupera el espacio de almacenamiento y optimiza el rendimiento de la tabla. Elimina las filas muertas y actualiza las estadísticas del sistema para que el planificador de consultas pueda tomar decisiones más informadas sobre cómo ejecutar las consultas. El VACUUM no bloquea la tabla, lo que significa que se puede seguir accediendo a ella durante la operación.

FULL: Si activas la opción FULL, VACUUM realizará una operación más agresiva y exhaustiva de limpieza. Reclama más espacio en disco y compacta la tabla para 	reducir su tamaño. Sin embargo, esta operación es más lenta y bloquea la tabla durante su ejecución, lo que significa que no se puede acceder a ella mientras se realiza el VACUUM FULL.
	
FREEZE: La opción FREEZE se utiliza para marcar las filas de la tabla como "congeladas". Cuando una fila está congelada, su información de transacción se elimina, lo que permite a PostgreSQL gestionar mejor el espacio en disco y las transacciones futuras. Además, las filas congeladas no necesitan ser revisadas por las operaciones VACUUM posteriores, lo que puede mejorar el rendimiento del VACUUM. Activar la opción FREEZE en una operación VACUUM puede ser útil en casos donde hay muchas filas antiguas que no cambian con frecuencia.
	
ANALYZE: La opción ANALYZE, cuando se activa junto con VACUUM, actualiza las estadísticas de la tabla y sus columnas después de realizar la operación VACUUM. Estas estadísticas son utilizadas por el planificador de consultas para optimizar la ejecución de las consultas. Combinar VACUUM y ANALYZE puede ser útil si deseas asegurarte de que las estadísticas del sistema estén actualizadas después de recuperar espacio en disco y optimizar la tabla.

REINDEX: Esta operación recrea los índices de la tabla para mejorar su rendimiento. Puede ser útil si los índices se han vuelto ineficientes debido a la inserción o eliminación de filas. Durante el proceso de REINDEX, la tabla puede quedar bloqueada temporalmente, lo que impide el acceso a la misma.

CLUSTER: Esta operación reorganiza la estructura de almacenamiento de la tabla y sus índices de acuerdo con un índice agrupado previamente definido. El resultado es una tabla ordenada y optimizada para mejorar la eficiencia en la recuperación de datos. La operación CLUSTER bloquea la tabla durante su ejecución.

Compañeros les recomiendo el curso de bases de datos con SQL SERVER que trata sobre optimización

Información resumida de esta clase
#EstudiantesDePlatzi

  • Postgre tiene funciones trabajando sin que nos demos cuenta y busca optimizar la base de datos

  • Existen dos niveles de limpieza. El liviano que se está ejecutando continuamente limpiando la base de datos y el otro nivel llamado full el cual bloquea las tablas para limpiar y luego las desbloquea

-Podemos hacer la limpieza en la base de datos, donde se verán afectadas todas las tablas o podemos hacer en la tabla que seleccionemos

Postgre de manera automática optimiza la BD. Puedes dar mantenimiento toda la BD o a una tabla específica.

  • Vacuum -> Vaciar
  • Analyze -> No hace cambios, solamente te indica cómo se encuentra la tabla o BD
  • Reindex -> Modifica las PK
  • Cluster -> Reorganiza la información en el disco

No se recomienda hacer esto de forma manual, es mucho mejor hacerlo con la interfaz gráfica porque Postgres lo lleva optimizando desde hace años.

Checkee la pagina de mantenimiento de postgres
https://www.postgresql.org/docs/9.0/maintenance.html

También conocido como vaciado, es un procedimiento que postgres realiza sin nuestro consentimiento, se encarga de limpiar toda información que no se está utilizando. Existen 2 tipos de mantenimiento el **liviano**, que constantemente postgres lo está ejecutando en segundo plano mientras trabajamos en nuestra base de datos. y el **completo** el cual bloquea la tabla o base de datos y hace la limpieza en todo lo demás. Esto postgres lo realiza para optimizar su funcionamiento * Para realizar el mantenimiento desde postgres, se hace clic derecho en el esquema, ya sea sobre el nombre de la base de datos o sobre el nombre de la tabla (se lo puede hacer en ambos, pero su procedimiento es diferente), luego se hace clic sobre **Maintenance** se abre una nueva ventana y se puede escoger 4 opciones (es para las tablas): * **VACUUM:** O vaciado, igual muestra algunas opciones para realizar este procedimiento, FULL, dice que limpia todo, FREZZE congela la tabla (no permite modificación de esta, hasta terminar la limpieza, si se intenta agregar datos, entra en un loop, (no lo permite hasta terminar el proceso de limpieza)). Luego está el ANALYZE que solo analiza, pero no hace nada (no limpia, solo muestra posibles errores). Y finalmente esta VERBOSE MESSAGES, que cuando está activo, nos da un mensaje del mantenimiento que hizo postgres, y si no psss no nos informa de lo que hizo. * **ANALYZE:** No hace gran cosa, solo hace la revisión y luego te informa como está la tabla. * **RENDEX:** Este es útil para índices (las llaves primarias), con este se puede encontrar problemas cuando se tiene tablas en donde los índices son más grandes que la propia tabla (sucede cuando hay cientos de miles de datos) * **CLUSTER:** Hace que se reorganice toda la información en el disco. * Al final nos recomienda que no realicemos este mantenimiento, ya que postgres lo hace automáticamente y lleva más de 20 años optimizando este proceso, dice que solo cuando veamos que ejecutar consultas se demore demasiado, y existan problemas de indexación, si hacerlo manualmente mediante PgAdmin.

Mantenimiento de una base de datos PostgreSQL:

Actualizaciones y Parches:

  • Mantén PostgreSQL actualizado con las últimas versiones y parches de seguridad, previa realización de pruebas en un entorno de desarrollo.

Índices y Estadísticas:

  • Ajusta y analiza los índices según las consultas frecuentes. Utiliza estadísticas para mejorar la toma de decisiones del planificador de consultas.

Vacío y Análisis:

  • Programa tareas regulares de vaciado y análisis para optimizar el espacio en disco y mejorar el rendimiento de las consultas.

Monitoreo de Rendimiento:

  • Utiliza herramientas de monitoreo para identificar cuellos de botella y ajustar la configuración según sea necesario.

Respaldos y Restauración:

  • Realiza respaldos periódicos y prueba la restauración para garantizar la recuperabilidad.

Logs y Auditoría:

  • Configura registros para eventos importantes y examina regularmente para identificar problemas potenciales.

Seguridad:

  • Gestiona roles y privilegios cuidadosamente, ajustando las políticas de seguridad según las necesidades.

Configuración del Sistema:

  • Ajusta la configuración de PostgreSQL según los recursos y requisitos de la aplicación.

Particionamiento de Tablas:

  • Considera el particionamiento para mejorar el mantenimiento y rendimiento en conjuntos de datos grandes.

Pruebas de Estrés y Carga:

  • Realiza pruebas para evaluar el rendimiento bajo condiciones extremas y ajusta la configuración en consecuencia.

Documentación:

  • Mantén documentación actualizada sobre la arquitectura, esquemas, roles y configuración.

Mantenimiento Físico:

  • Asegúrate de suficiente espacio en disco y programa mantenimientos físicos si es necesario.

Respuesta a Incidentes:

  • Establece procedimientos para responder a incidentes y contingencias, incluyendo un plan de recuperación ante desastres.

Seguimiento de Novedades:

  • Mantente informado sobre novedades y mejores prácticas en PostgreSQL.

Formación Continua:

  • Capacita al equipo de administración para que esté al tanto de las mejores prácticas y características nuevas de PostgreSQL.

postgresql realiza limpieza automáticamente, mientras se está utilizando la aplicación, con la opciones ; vacuum ,freeze y analizer , Full: la tabla quedará limpia en su totalidad Freeze: durante el proceso la tabla se congela y no permite modificaciones hasta que no termina la limpieza Analyze: solo revisa la tabla Analyze: No hace cambios en la tabla. Solo hace una revisión y la muestra. Reindex: Aplica para tablas con numerosos registros con índices, como por ejemplo las llaves primarias. Cluster: Específica

No sabía lo del apagón de Platzi en ese momento aún no tenía la suscripción, que bien que siempre Platzi está aplicanco cambios para ofrecer un mejor servicio!

-No nos debemos involucrar en el mantenimiento de la DB a menos de que sea necesario.

  • Se tienen dos niveles de limpieza:
  1. Liviano --> Se ejecuta constantemente
  2. Full o completo --> Bloquea la tabla para hacer limpieza y luego se desbloquea. (Esté es importante cuando se tenga una tabla grande y este teniendo problemas de indexación)
  • Es diferente realizar mantenimiento sobre toda la base de datos a una tabla específica.

Explicacion de vacuum en postgresql

El mantenimiento se puede para la DB (todas las tablas) o para una tabla en particular.
VACUUM FULL: la tabla a limpiar quedará limpia en su totalidad. Se hará revisión de todo el espacio de memoria para que todas las filas e índices que ya no son aplicables se eliminen. Entonces: activarlo o desactivarlo puede tumbar la DB.
VACUUM FREEZE: incluye que durante ese proceso se va a congelar. De todas maneras cuando VACUUM FULL no termina antes de que llegue una consulta nueva. Esa tabla literalmente se congela y va a generar un log. Ningún proceso va a acceder a la tabla hasta que no termine el proceso de limpieza. Indicación explícita.
VACUUM ANALYZE: es el más suave. Ejecuta una revisión pero no hace cambios. Te informa la condición de la tabla (te da un índice de rendimiento).
Verbose Messages: para ver la metadata de la revisión o mantenimiento.
ANALYZE: no hace ningún cambio en la tabla. Se hace la revisión y nos informa la condición de la tabla.
REINDEX: aplica para tabla que tiene índices. Entre ellos las llaves primarias (los motores crean índices para búsquedas). Esta operación es importante en tablas grandes. Donde puede pasar que los índices son más grandes que las tablas (millones de registros).
CLUSTER: En un servidor la información se guarda en discos reales. Reorganiza la información en el disco.

Postgres desarrolla el mantenimiento de manera activa y sin consentimiento del usuario. El mantenimiento consiste en quitar todas las filas, items y columnas que no están funcionando correctamente y postgres lo hace para optimizar todos los servicios ya por trabajar rápido ocurre

Postgres tiene dos niveles de limpieza son: 1-Liviano que se ejecuta en segundo plano y lo hace constantemente. 2-Full el cual es capaz de bloquear las tablas para hacer la limpieza y luego la desbloquea. En estas actividades no debemos involucrarnos al menos que sea necesario

Una limpieza full es necesario cuando tengamos una tabla grande y tengamos problema de indexación, esto se refiere a que, En el momento de hacer la consulta se demore mucho tiempo.

Importante: Tener un respaldo para recibir peticiones en caso se tenga que hacer una limpieza de la base de datos.

Siempre tendré un respaldo cada vez que haga mantenimiento FULL

Vacumm

vacumm full

Mantenimiento en PostgreSQL

Dos niveles de limpieza

Maintenance: Para realizar mantenimiento con pgAdmin.

Opciones de Maintenance

Importante la clase para mejorar la performance de la BD