O meu MaximumUsedTransactionIDs
parece continuar crescendo indefinidamente, mas tenho essas evidências me sugerindo que talvez não devesse estar acontecendo dessa maneira:
$ PGPASSWORD=$MY_USER_LAND_RDS_SUPER_USER_PASSWORD psql -h $MY_RDS_INSTANCE -d
my_main_data_base -U $MY_USER_LAND_RDS_SUPER_USER
psql (9.5.8, server 9.5.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits:
256, compression: off)
Type "help" for help.
my_main_data_base=> SELECT datname FROM pg_database;
datname
-------------------
template0
rdsadmin
template1
postgres
my_main_data_base
another_data_base
(6 rows)
my_main_data_base=> VACUUM FREEZE; SELECT relname, age(relfrozenxid) AS xid_ag
e FROM pg_class JOIN pg_stat_all_tables USING (relname) ORDER BY xid_age DESC
LIMIT 5;
VACUUM
relname | xid_age
----------------------+---------
pg_toast_1150794 | 63707
a_user_table | 63707
another_user_table | 63707
pg_toast_1223948 | 63707
pg_toast_1223998 | 63707
(5 rows)
my_main_data_base=> \q
$ PGPASSWORD=$MY_USER_LAND_RDS_SUPER_USER_PASSWORD psql -h $MY_RDS_INSTANCE -d
another_data_base -U $MY_USER_LAND_RDS_SUPER_USER
psql (9.5.8, server 9.5.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits:
256, compression: off)
Type "help" for help.
another_data_base=> VACUUM FREEZE; SELECT relname, age(relfrozenxid) AS xid_ag
e FROM pg_class JOIN pg_stat_all_tables USING (relname) ORDER BY xid_age DESC
LIMIT 5;
VACUUM
relname | xid_age
--------------------+---------
pg_toast_2964 | 12350
pg_toast_3592 | 12350
pg_toast_2396 | 12350
pg_db_role_setting | 12350
pg_authid | 12350
(5 rows)
another_data_base=> \q
$ _
$MY_USER_LAND_RDS_SUPER_USER
é o que o AWS RDS me oferece como superusuário . É um superusuário do ponto de vista do RDS, mas não é um superusuário do ponto de vista do PostgreSQL.
Eu esperaria que agora tivesse MaximumUsedTransactionIDs
diminuído, mas isso não acontece. Ainda está por volta de ~80.000.000
.
Eu planejei que, depois que ele chegar, 100.000.000
eu fork uma versão de desenvolvimento da instância do RDS, onde a farei para que a AWS inicialize o autovacuum
processo nela.
Perguntas
O que está acontecendo com
MaximumUsedTransactionIDs
? Por que não encolhe?Vai
autovacuum
cuidar deMaximumUsedTransactionIDs
uma vez inicializado?É
autovacuum
irrelevante no meu cenário porque executo manualmenteVACUUM FREEZE
s não qualificados de tempos em tempos em todos os meus bancos de dados de terras do usuário?Devo simplesmente ignorar
MaximumUsedTransactionIDs
?Posso de alguma forma me conectar ao banco de dados
rdsadmin
paraSELECT
age(relfrozenxid)
lá?
EDIT , atendendo sua primeira solicitação, adicionando...
$ PGPASSWORD=$MY_USER_LAND_RDS_SUPER_USER_PASSWORD psql -h $MY_RDS_INSTANCE -d
my_main_data_base -U $MY_USER_LAND_RDS_SUPER_USER
psql (9.6.6, server 9.5.10)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits:
256, compression: off)
Type "help" for help.
postgresql=> SELECT datname, datfrozenxid FROM pg_database;
datname | datfrozenxid
-------------------+--------------
template0 | 1822
rdsadmin | 1822
template1 | 1822
postgres | 1822
my_main_data_base | 76628948
another_data_base | 76681257
(6 rows)
postgresql=> \q
$ _
Ative o autovacuum no grupo de parâmetros e quando atingir o nível configurado (min 100.000.000) iniciará e
MaximumUsedTransactionIDs
diminuirá drasticamente.