Em 28 de junho de 2017 21:49, Euler Taveira <eu...@timbira.com.br> escreveu:
> > O pg_dump faz um bloqueio (AccessShareLock) para cada tabela que irá > copiar. Como ele faz isso numa única transação, o parâmetro > max_locks_per_transaction deve ser no mínimo igual ao número de tabelas a > serem copiadas. > Essa sentença ficou incorreta (possivelmente por falta de cafeína?). Quis dizer que o valor de max_locks_per_transaction deve ser suficiente para que o cálculo max_locks_per_transaction * (max_connections + max_prepared_transactions) seja no mínimo igual ao número de tabelas a serem copiadas. (Foi exatamente o que o Fabrizio disse no outro email). Quanto ao cálculo correto: max_locks_per_transaction * (max_connections + max_prepared_transactions) = objetos_atuais aumentando x locks para satisfazer o pg_dump teríamos: max_locks_per_transaction' * (max_connections + max_prepared_transactions) = objetos_atuais + x max_locks_per_transaction' = (objetos_atuais + x) / (max_connections + max_prepared_transactions) Considerando os valores padrão (max_connections = 100; max_prepared_transactions = 0 ; max_locks_per_transaction = 64), objetos_atuais seria 6400. x = 181 esquemas x 233 tabelas = 42173. max_locks_per_transaction' = (6400 + 42173) / (100 + 0) ~ 486 É sempre bom deixar uma margem de segurança porque max_locks_per_transaction precisa de um reinício do serviço. -- Euler Taveira Timbira - http://www.timbira.com.br/ PostgreSQL: Consultoria, Desenvolvimento, Suporte 24x7 e Treinamento <http://www.timbira.com.br>
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral