Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — AJURI 2018

Banco de DadosPostgreSQL
Código
qq311618
Banca
AJURI
Órgão
Desenvolve - RR
Ano
2018
Nível
Superior
Cargo
Analista de Sistemas
PostgreSQL é um sistema gerenciador de banco de dados objeto-relacional baseado em código aberto. Considerando as rotinas de atividades de manutenção desse Banco de Dados, é correto afirmar acerca do comando VACUUM:
  1. Asua variante VACUUM FULL requer bloqueio exclusivo na tabela em que estiver trabalhando.
  2. Bo parâmetro FULL possibilita recuperação de maior espaço de disco, contudo toma pouco tempo para sua execução.
  3. Cnão cria uma substancial quantidade de tráfego de Entrada e Saída (I/O), não afetando a performance de outras sessões ativas.
  4. Dé possível visualizar um relatório de atividade detalhado e indexar cada linha de registro para cada tabela, utilizando o parâmetro VERBOSE.
  5. Eos comandos SELECT, INSERT, UPDATE e DELETE não podem ser executados em paralelo quando o comando VACUUM estiver em execução.
Revelar gabarito e comentário

GabaritoA — sua variante VACUUM FULL requer bloqueio exclusivo na tabela em que estiver trabalhando.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Comando VACUUM no PostgreSQL

A questão aborda o comando VACUUM do PostgreSQL, uma ferramenta de manutenção que recupera espaço ocupado por tuplas mortas e atualiza estatísticas. A banca testa o conhecimento sobre as variantes do comando e seus efeitos no banco de dados.

Alternativa A — ✅ Correta

A variante VACUUM FULL realmente requer bloqueio exclusivo (ACCESS EXCLUSIVE) na tabela, impedindo qualquer outra operação concorrente. Isso ocorre porque o VACUUM FULL reescreve a tabela em um novo arquivo, liberando espaço para o sistema operacional, mas exigindo isolamento total.

Documentação do PostgreSQL:

"VACUUM FULL reescreve todo o conteúdo da tabela em um novo arquivo de disco, sem espaço morto, o que permite que o espaço não utilizado seja retornado ao sistema operacional. Esta forma é muito mais lenta e requer um bloqueio ACCESS EXCLUSIVE em cada tabela enquanto está sendo processada."

Alternativa B — ❌ Incorreta

Afirma que o VACUUM FULL recupera maior espaço e "toma pouco tempo para sua execução". Na verdade, o VACUUM FULL é a variante mais demorada, pois reescreve a tabela inteira. O ganho de espaço é maior, mas o tempo de execução é significativamente maior que o VACUUM comum.

Alternativa C — ❌ Incorreta

Diz que o VACUUM "não cria uma substancial quantidade de tráfego de I/O, não afetando a performance de outras sessões ativas". Na prática, o VACUUM (especialmente o FULL) gera intensa atividade de I/O ao ler e reescrever páginas, podendo impactar o desempenho de outras sessões. Mesmo o VACUUM comum consome recursos.

Alternativa D — ❌ Incorreta

Afirma que é possível "visualizar um relatório de atividade detalhado e indexar cada linha de registro para cada tabela, utilizando o parâmetro VERBOSE". O parâmetro VERBOSE realmente exibe um relatório detalhado das atividades do VACUUM, mas a parte "indexar cada linha de registro para cada tabela" não é função do VACUUM. O VACUUM não realiza indexação; ele apenas remove tuplas mortas e atualiza estatísticas.

Alternativa E — ❌ Incorreta

Diz que "os comandos SELECT, INSERT, UPDATE e DELETE não podem ser executados em paralelo quando o comando VACUUM estiver em execução". Isso é falso para o VACUUM comum (não FULL), que permite operações concorrentes de leitura e escrita (apenas bloqueia operações que exigem bloqueio exclusivo, como DDL). Apenas o VACUUM FULL bloqueia tudo.

PEGA ESSA DICA!

A principal diferença entre VACUUM e VACUUM FULL é o nível de bloqueio e o tempo de execução. O VACUUM comum é mais leve e permite concorrência; o FULL é pesado e exclusivo. Decore: VACUUM = concorrente; VACUUM FULL = exclusivo.

Gabarito: letra A

Link permanente: /questoes/qq311618