Mantenimiento y planes de mantenimiento de computadores daniela
mantenimiento
-
Upload
utnvirtualcuicyt -
Category
Documents
-
view
417 -
download
0
description
Transcript of mantenimiento
MantenimientoJaime Casanova
Soporte Libre Curso de administracion de PostgreSQL 14 de diciembre de 2009
Jaime Casanova
Mantenimiento
Pero Postgres requiere mantencin
Es cierto
Jaime Casanova
Mantenimiento
Pero Postgres requiere mantencin
Es cierto En todo caso, con un solo encargado es suciente No necesitas un ejrcito de DBAs para mantenerlo funcionando
Jaime Casanova
Mantenimiento
Con el tiempo se ha hecho ms fcil
postgresql.conf: autovacuum = on requiere stats_row_level = on
Jaime Casanova
Mantenimiento
Con el tiempo se ha hecho ms fcil
postgresql.conf: autovacuum = on requiere stats_row_level = on Antes (< 8.1), no hacer mantencin era suicida
Jaime Casanova
Mantenimiento
Con el tiempo se ha hecho ms fcil
postgresql.conf: autovacuum = on requiere stats_row_level = on Antes (< 8.1), no hacer mantencin era suicida Podas perder datos ...
Jaime Casanova
Mantenimiento
Con el tiempo se ha hecho ms fcil
postgresql.conf: autovacuum = on requiere stats_row_level = on Antes (< 8.1), no hacer mantencin era suicida Podas perder datos ... ... o pagar consultoras carsimas Ahora es meramente irresponsable
Jaime Casanova
Mantenimiento
Por qu se necesita vacuum? Curso de choque de MVCC
En Postgres, los DELETE y UPDATE no sobreescriben el registro modicado Ms bien, crean uno nuevo y marcan el anterior como obsoleto Esto permite que alguien que estaba leyendo antes del DELETE pueda todava ver el registro antiguo y saltarse el nuevo Un lector nuevo puede saltarse el antiguo y leer el nuevo Una vez que todos los lectores antiguos terminan, el registro viejo ya no es necesario hay que eliminarlo para reutilizar el espacio A este modelo se le llama MVCC
Jaime Casanova
Mantenimiento
MVCC
Hay otras implementaciones posibles Oracle: rollback segment
Jaime Casanova
Mantenimiento
MVCC
Hay otras implementaciones posibles Oracle: rollback segment la nuestra es mejor porque no exige que los backend tengan que hacer trabajo extra este trabajo extra lo hace un proceso aparte que no causa retardo para los clientes
Jaime Casanova
Mantenimiento
VACUUM
VACUUM es la implementacin del recolector de basura Hay dos formas de VACUUMlazy vacuum vacuum full
Jaime Casanova
Mantenimiento
Lazy vacuum
Pgina por pgina No requiere bloquear la tabla INSERT, UPDATE, DELETE pueden continuar operando concurrentemente
Jaime Casanova
Mantenimiento
El algoritmo de LAZY VACUUMEn cada pgina:Elimina registros obsoletos Compacta el espacio disponible Registra cunto espacio libre hay en esa pgina en el FSM Lleva en memoria las direcciones de las tuplas que se eliminaron
Limpieza de ndices: recorrer todos y cada uno de los ndices de la tabla Para cada tupla:examinar si est en la lista de tuplas eliminadas En caso de estar, se elimina
Esto ocurre cada vez que al algoritmo de limpieza de pginas se le acaba el espacio de memoria para llevar la lista de tuplas eliminadas maintenance_work_mem
Jaime Casanova
Mantenimiento
Free Space Map
El espacio libre en cada pgina de la tabla se guarda en el FSM Cuando un INSERT necesita registrar una nueva tupla, pregunta al FSM dnde ponerla Si el FSM no tiene informacin, se extiende la tabla Problema tpico: el FSM queda chico Si una pgina no cabe en el FSM, se olvida INSERT necesita extender la tabla ... ... an cuando puede quedar mucho espacio libre todava (pero el FSM no lo sabe) max_fsm_pages, max_fsm_relations
Jaime Casanova
Mantenimiento
VACUUM FULL
Forma ms antigua de VACUUM Requiere bloquear totalmente la tabla No deja ningn espacio libre en las pginas Operacin posterior necesita extender la tabla Desventajaslos ndices quedan en mal estado es muy lento
No es muy recomendable, salvo casos de extrema desesperacinPor ejemplo, cuando uno ha estado usando la BD mucho tiempo con el FSM mal congurado
Jaime Casanova
Mantenimiento
Alternativas a VACUUM FULL
CLUSTER
Reordena una tabla segn un ndice especicado Reescribe toda la tabla y todos sus ndices Elimina todo el espacio muerto Desventaja: es muy lento si los datos no estn ordenados por el ndice
Jaime Casanova
Mantenimiento
Alternativas a VACUUM FULL
CLUSTER
Reordena una tabla segn un ndice especicado Reescribe toda la tabla y todos sus ndices Elimina todo el espacio muerto Desventaja: es muy lento si los datos no estn ordenados por el ndice
ALTER TABLE / SET TYPE ... y hacer algn cambio que no haga nada por ej.. ALTER TABLE mitabla ALTER micolumna SET TYPE int (asumiendo que la mitabla.micolumna ya es de tipo int) Idem a CLUSTER slo que no reordena
Jaime Casanova
Mantenimiento
Alternativas a VACUUM FULL (2)
Ambos requieren candados exclusivos ... igual que VACUUM FULL ... ... pero son ms rpidos
Jaime Casanova
Mantenimiento
AnalyzePostgres tiene un optimizador de consultas basado en costo Para cada consulta se busca el mecanismo de ejecucin ms eciente El costo total de cada posible plan de ejecucin se estima usando ecuaciones de costo y estadsticas recolectadas de los datos presentes en las tablas Las estadsticas se obtienen usando el comando ANALYZEA veces usado como opcin en VACUUM ej. VACUUM ANALYZE
Si las estadsticas no estn ajustadas a la realidad, pueden pasar cosas raras Sobre todo, que los planes de ejecucin sean subptimos (consultas lentas)
Jaime Casanova
Mantenimiento
Analyze (2)
Es crucial ejecutar ANALYZE sobre todas las tablas en algn momento dem cada vez que las tablas cambian mucho Por ej. despus de restaurar un respaldo
Jaime Casanova
Mantenimiento
Analyze Tamao de muestreo
A veces, con el tamao de muestreo por omisin de ANALYZE, las estimaciones no son buenas Se hace necesario aumentar el tamao de muestreo para que las estimaciones sean ms precisas A veces es conveniente disminuirlo DesventajasAnalyze tarda un poco ms El clculo del plan ms ptimo es ms lento
ALTER TABLE mitabla ALTER micolumna SET STATISTICS 42
Jaime Casanova
Mantenimiento
Autovacuum
Autovacuum automatiza LAZY VACUUM y ANALYZE Desde Postgres 8.1 es un daemon manejado internamente por postmaster postgresql.conf Es importante congurarlo adecuadamente para que entre en accin a tiempo Nunca ejecuta tareas bloqueantes
Jaime Casanova
Mantenimiento
Autovacuum
Autovacuum automatiza LAZY VACUUM y ANALYZE Desde Postgres 8.1 es un daemon manejado internamente por postmaster postgresql.conf Es importante congurarlo adecuadamente para que entre en accin a tiempo Nunca ejecuta tareas bloqueantes 8.3: se suicida para prevenir bloqueos
Jaime Casanova
Mantenimiento
Ecuacin para VACUUM
umbral
=
umbral base + factor de escala * nm. de registros
Valores por omisin en 8.1:umbral base = 1000 factor de escala = 0.2
Valores por omisin en 8.3:umbral base = 50 factor de escala = 0.2
Jaime Casanova
Mantenimiento
Conguracin na de autovacuum
autovacuum_vacuum_cost_delay(en 8.3 por omisin ya viene en 20)
Cambiar valores para tablas con caractersticas de uso especialestablas con mucho trco tablas muy grandes
8.1 ... 8.2: algunas tablas se deben trabajar manualmente a partir de 8.3 hay mltiples trabajos autovacuum concurrentes sin embargo casos patolgicos sigue siendo conveniente procesarlas por separado
Jaime Casanova
Mantenimiento
Conguracin de autovacuum por tablas
8.1 8.3 INSERT INTO pg_autovacuum VALUES (nombre_tabla::regclass, f, -1, -1, -1, ...); los -1 son importantes no usar 0! 8.4 ... ALTER TABLE ... SET (autovacuum_enable = false, autovacuum_vacuum_scale_factor = 0.05);
Jaime Casanova
Mantenimiento
REINDEX
Reescribe los ndices de una tabla til cuando los ndices se salen de manos No debera usarse con periodicidadslo para casos patolgicos
REINDEX INDEX ix_categoria_id REINDEX TABLE categorias REINDEX DATABASE energia
Jaime Casanova
Mantenimiento