Se me olvido incluir otra cosa.
si quieres pruebes instalar este programa. ( yo lo uso ).
https://github.com/ankane/dexter
Es para crear indices, sin el flag --create simplemente te sugiere crear
indice A o B.. no pilla todos los indices en una base pero es mejor que
nada.
On 16/02/2019 3:05 PM, Carlos T. Groero Carmona wrote:
Horacio, hay algo con lo que pueda ayudar para seguir mas de serca el
comportamiento de esta situacion especificamente en mi base de datos?
Aprovecho para comentarle que hoy tuve que detener nuevamente mi
autovacuum deamon, al rededor de las 8 empezaron a ver ciertos picos
en New Relic en el tiempo de respuesta del sistema, alrededor de las
9am fue constante y el sistema no se recuperaba asi que tuve que deter
el autovacuum por unas 4 horas y despues lo volvi a poner, paso lo
mismo el sabado pasado.
Adjunto algunas imagenes de NewRelic y el resultado de sar en ese
horario...
CPU %user %nice %system %iowait%steal %idle
08:20:01 AM all 55.990.00 24.232.630.00 17.15
08:30:01 AM all 54.520.00 23.453.030.00 19.00
08:40:01 AM all 53.410.00 23.182.910.00 20.51
08:50:01 AM all 49.470.00 22.113.280.00 25.14
09:00:01 AM all 51.370.00 23.932.760.00 21.93
09:10:01 AM all 54.620.00 23.473.110.00 18.80
09:20:01 AM all 59.900.00 24.902.220.00 12.98
09:30:01 AM all 56.020.00 24.092.870.00 17.02
09:40:01 AM all 51.980.00 22.743.220.00 22.06
09:50:01 AM all 46.690.00 20.663.030.00 29.62
10:00:01 AM all 46.020.00 20.512.790.00 30.69
Sobre el vacuumdb -F -a le comento que antes de ejecutarlo modifique
pg_database para que template0 aceptara coneciones que se realizo el
vacuum en todas las base de datos incluyendo template0.
en el entorno de pre-produccion no fui tan agresivo, solo me conecte a
template0 y realice un vacuum freeze analyze verbose; y se realizo
satisfacotoriamente, no puso el XID en cero, pero si lo llevo a un
valor casi cero.
Asi es como tengo pensado ejecutarlo en produccion porque la base de
datos es de 2TB y he autovacuum no ha podido realizar su trabajo
correctamente por lo que hay mucho trabajo que realizar ahi por vacuum
asi que solo voy a realizar vacuum freeze analyze verborse; en todas
las base de datos menos en la de produccion.
El XID de mi base de datos principal crece cada 30min aproximadamente
en 1.7millones, tengo un cron job ejecutando la consulta y guardandolo
en un log. El crecimiento diario de mi base de datos es de
aproximadamente 5GB diarios, aunque al final del mes eliminamos las
tablas particionadas por meses que han estado salvadas por mas de 13
meses, recuperando alrededor de 40GB, entonces mi base de datos crece
aproximadamente en 110GB al mes, ah...solo manejamos texto.
Actualmente solo uso pgBadger para analyzar los logs y me encuentro en
la face inicial de instalar los plugings de NewRelic para monitoriar
las base de datos, aunque eso sera un procesolargo, ues primero sera
probado en 3 o 4 servidores diferentes antes de llegar a produccion.
Digame si hay algo mas que quiera saber o quiera probar para llegar a
un entorno mas sercano sobre lo que esta sucediendo.
On Fri, Feb 15, 2019 at 4:12 PM Alvaro Herrera
<alvhe...@alvh.no-ip.org <mailto:alvhe...@alvh.no-ip.org>> wrote:
On 2019-Feb-16, Horacio Miranda wrote:
> Creo que es cosa de ejecutar la consulta:
> SELECT
> datname,
> max(age(datfrozenxid)),
> round(max(age(datfrozenxid)) / 2100000000.0 * 100.0, 3) AS
percentage_transaction_ids_used
> FROM pg_database
> -- where datallowconn = true
> group by datname
> order by 2 desc;
>
> y Luego el vacuumdb -F -a ( -F es freeze y -a en todas las
bases de datos ), el template0 no debe liberarse y las demás en mi
caso el valor no cambio ) solo cuando abro el template0 es que el
numero se va a cero.
No recomiendo esto en una instancia con 7 TB de datos en total. Es
mejor dejar que autovacuum haga su trabajo.
--
Álvaro Herrera Niebla, Chile