AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 323444
Accepted
ConanTheGerbil
ConanTheGerbil
Asked: 2023-02-14 06:27:53 +0800 CST2023-02-14 06:27:53 +0800 CST 2023-02-14 06:27:53 +0800 CST

Postgres - O que é um atraso de vácuo?

  • 772

Estou executando o Postgres 14.6 e tenho várias sessões com um wait eventdescrito como Timeout: VacuumDelay. O SQL sendo executado pela sessão é....

autovacuum: VACUUM public.mytable_202110 (to prevent wraparound)

(essas informações são obtidas no painel do pgAdmin4)

eu tenho uma série de perguntas

  1. Essas sessões estão destacadas em vermelho, isso significa que há um problema?
  2. A consulta começou há muitas horas e o estado não mudou recentemente. Isso é significativo?
  3. Esta sessão está realmente me dizendo? está aspirando ativamente agora? ou está esperando a oportunidade de começar a aspirar? Ou é uma sessão não relacionada dizendo que não pode fazer nada até que o VACUUMing termine?
  4. A(s) tabela(s) que está(ão) sendo aspirada(s) são muito antigas, muito grandes e raramente mudam. Eles precisam ser aspirados?

Não há PIDS de bloqueio listados e todos os bloqueios foram concedidos. O banco de dados está funcionando (embora lentamente)

ATUALIZAÇÃO - isso pode ser relevante, este banco de dados acabou de ser transferido de um servidor antigo e lento para uma máquina mais nova e melhor. Eu esperava ver um desempenho significativamente melhor, mas estou supondo que as estatísticas e os dados de análise nas tabelas NÃO são transferidos com os dados originais, então o novo banco de dados está gastando muitos recursos analisando dados antigos e arquivados.

postgresql
  • 2 2 respostas
  • 34 Views

2 respostas

  • Voted
  1. jjanes
    2023-02-14T08:01:21+08:002023-02-14T08:01:21+08:00

    O autovacuum se autolimita, para evitar o uso de toda (ou mais do que você deseja) da capacidade de E/S do sistema. Isso é o que você está vendo. Faz sentido que, se estiver usando limitação, passe a maior parte do tempo na limitação. Afinal, seria meio inútil implementar o estrangulamento apenas para reduzi-lo em 2%. Espiar pg_stat_activity pode mostrar que está esperando no acelerador na maior parte do tempo, mas é uma chamada de suspensão diferente a cada vez, não uma chamada longa.

    Talvez suas configurações de aceleração não sejam ideais para sua configuração. Você pode tornar essa execução mais rápida diminuindo autovacuum_vacuum_cost_delay ou aumentando autovacuum_vacuum_cost_limit. Infelizmente, alterar essas configurações não alterará os valores usados ​​pelos aspiradores em execução no momento, portanto, você precisará cancelá-los para que eles possam escolher as novas configurações. E você diz que seu banco de dados já está rodando devagar, então fazer com que os aspiradores usem ainda mais recursos pode ser a direção errada a seguir.

    Um vácuo "(para evitar o wraparound)" precisa acontecer uma vez a cada 2 bilhões de transações, mesmo que a tabela seja grande, antiga e raramente mude. Se quase todas as páginas estiverem marcadas como congeladas, fazer esse vácuo deve ser muito rápido - mas isso não ajuda na primeira vez que essas tabelas são limpas para congelar tuplas.

    • 2
  2. Best Answer
    Melkij
    2023-02-14T08:03:31+08:002023-02-14T08:03:31+08:00

    A(s) tabela(s) que está(ão) sendo aspirada(s) são muito antigas, muito grandes e raramente mudam. Eles precisam ser aspirados?

    Sim. Este não é um vácuo regular, mas um vácuo para evitar enrolamento . De vez em quando, esse vácuo processa cada mesa, bem, para evitar o enrolamento.

    Esta sessão está realmente me dizendo? está aspirando ativamente agora? ou está esperando a oportunidade de começar a aspirar?

    Ambos. Este é um aspirador funcionando ativamente que desacelera deliberadamente (na quantidade de autovacuum_vacuum_cost_delaytempo) para reduzir a carga no sistema.

    Ou é uma sessão não relacionada dizendo que não pode fazer nada até que o VACUUMing termine?

    Você pode continuar trabalhando, este é um processo regular em segundo plano. No entanto, "para evitar vácuo envolvente" impedirá que você altere a estrutura da mesa devido ao bloqueio conflitante.

    A consulta começou há muitas horas e o estado não mudou recentemente. Isso é significativo?

    A exibição do sistema pg_stat_progress_vacuum pode fornecer informações mais detalhadas sobre o progresso do vácuo. Tabelas grandes, especialmente com um grande autovacuum_vacuum_cost_delay, podem levar vários dias para serem processadas.

    PS: Não faço ideia de por que o pgAdmin4 pode destacar o processo em vermelho.

    • 2

relate perguntas

  • Posso ativar o PITR depois que o banco de dados foi usado

  • Práticas recomendadas para executar a replicação atrasada do deslocamento de tempo

  • Os procedimentos armazenados impedem a injeção de SQL?

  • Sequências Biológicas do UniProt no PostgreSQL

  • Qual é a diferença entre a replicação do PostgreSQL 9.0 e o Slony-I?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve