Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — VUNESP 2025

Banco de DadosPostgreSQL
Código
vu222885
Banca
VUNESP
Órgão
TJM SP
Ano
2025
Cargo
Ana BDJ ( )
Visando a manutenção de bases de dados criadas e processadas por meio do sistema gerenciador de base de dados PostgreSQL 14.4, há um comando que executa a liberação do espaço ocupado por registros excluídos das tabelas da base de dados.   Tal comando é:
  1. AABORT
  2. BVACUUM
  3. CCHECKPOINT
  4. DCOMMIT
  5. EDISCARD
Revelar gabarito e comentário

GabaritoB — VACUUM

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”.

PostgreSQL: VACUUM e a liberação de espaço

Gabarito: letra B. O comando VACUUM é o utilitário do PostgreSQL responsável por recuperar o espaço ocupado por registros excluídos (tuplas mortas) das tabelas, liberando-o para reutilização. Os demais comandos (ABORT, CHECKPOINT, COMMIT e DISCARD) têm funções distintas no gerenciamento do banco, como veremos a seguir.

O PostgreSQL, como um SGBD objeto-relacional, utiliza um mecanismo de controle de concorrência multiversão (MVCC). Isso significa que, quando um registro é excluído ou atualizado, a versão antiga da linha (a "tupla morta") não é fisicamente removida da tabela naquele momento. Ela permanece no arquivo de dados para que transações concorrentes que ainda estejam lendo essa versão possam continuar operando de forma consistente. Com o tempo, essas tuplas mortas se acumulam, ocupando espaço em disco e degradando o desempenho das consultas, pois o banco precisa varrer mais páginas para encontrar os dados válidos.

É exatamente nesse cenário que o comando VACUUM atua. Ele varre as tabelas, identifica as tuplas mortas e marca o espaço por elas ocupado como disponível para reutilização. Em outras palavras, o VACUUM não apenas "limpa" o banco, mas também libera o armazenamento que estava sendo desperdiçado. A documentação oficial do PostgreSQL descreve essa função de forma clara: "O VACUUM recupera o armazenamento ocupado por tuplas mortas". Além disso, o comando pode ser combinado com a opção ANALYZE (VACUUM ANALYZE), que, além de limpar, atualiza as estatísticas usadas pelo planejador de consultas para otimizar a execução dos comandos SQL.

É importante destacar que o VACUUM é uma operação de manutenção essencial em bancos de dados com alta taxa de atualização e exclusão de registros. Sem ele, o banco pode crescer indefinidamente, mesmo que os dados lógicos estejam sendo removidos. Por isso, é uma prática recomendada executar o VACUUM periodicamente, seja manualmente ou por meio do autovacuum, um processo em segundo plano que o PostgreSQL executa automaticamente.

A banca explora aqui um conhecimento específico de administração do PostgreSQL, que vai além do SQL padrão. Enquanto comandos como COMMIT e ROLLBACK são parte do padrão SQL (DTL/TCL), o VACUUM é um comando proprietário do PostgreSQL, essencial para quem administra esse SGBD. A pegadinha está em confundir o VACUUM com outros comandos de gerenciamento de transações ou de sessão, que têm propósitos completamente diferentes. Guarde a função central de cada um: VACUUM = limpeza/liberação de espaço; CHECKPOINT = sincronização de dados em disco; COMMIT = confirmação de transação; ABORT = cancelamento de transação; DISCARD = limpeza de estado da sessão.

1VACUUM
Libera espaço de tuplas mortas
Pode combinar com ANALYZE
2CHECKPOINT
Grava buffers em disco
3COMMIT
Confirma transação
4ABORT
Cancela transação
5DISCARD
Limpa estado da sessão
Comandos PostgreSQL
LEVELsoulevel.com.br
Comandos PostgreSQL: VACUUM (Libera espaço de tuplas mortas, Pode combinar com ANALYZE); CHECKPOINT (Grava buffers em disco); COMMIT (Confirma transação); ABORT (Cancela transação); DISCARD (Limpa estado da sessão)

Alternativa A — ❌ Incorreta

O comando ABORT é um sinônimo do comando ROLLBACK no PostgreSQL. Ele é utilizado para cancelar uma transação em andamento, revertendo todas as alterações feitas desde o início da transação (ou desde o último SAVEPOINT). Ele não tem relação com a liberação de espaço de registros excluídos. A confusão pode ocorrer porque ambos os comandos lidam com o ciclo de vida de uma transação, mas suas funções são opostas: ABORT desfaz, VACUUM limpa.

Alternativa B — ✅ Correta ⟵ GABARITO

O comando VACUUM é exatamente o utilitário do PostgreSQL que executa a liberação do espaço ocupado por registros excluídos das tabelas. Conforme a documentação oficial, "O VACUUM recupera o armazenamento ocupado por tuplas mortas". Ele é essencial para a manutenção do banco, evitando o crescimento desnecessário dos arquivos de dados e melhorando o desempenho das consultas.

Alternativa C — ❌ Incorreta

O comando CHECKPOINT é responsável por forçar a gravação dos dados que estão em memória (buffers) para os arquivos de dados no disco. Ele é um mecanismo de recuperação e durabilidade, garantindo que as alterações confirmadas sejam persistidas. Ele não tem relação com a liberação de espaço de registros excluídos. A confusão pode ocorrer porque ambos são comandos de manutenção, mas atuam em aspectos diferentes do sistema.

Alternativa D — ❌ Incorreta

O comando COMMIT é um comando da DTL (Data Transaction Language) que confirma uma transação, tornando permanentes todas as alterações feitas dentro dela. Ele é essencial para a integridade transacional, mas não tem relação com a liberação de espaço de registros excluídos. A confusão pode ocorrer porque ambos estão relacionados ao ciclo de vida dos dados, mas COMMIT finaliza uma transação, enquanto VACUUM limpa o armazenamento.

Alternativa E — ❌ Incorreta

O comando DISCARD é utilizado para limpar o estado da sessão atual no PostgreSQL. Ele pode liberar recursos como buffers, planos de execução, sequências e até mesmo a conexão com o banco (DISCARD ALL). Ele não tem relação com a liberação de espaço de registros excluídos das tabelas. A confusão pode ocorrer porque ambos os comandos "limpam" algo, mas DISCARD limpa o estado da sessão, enquanto VACUUM limpa o armazenamento físico das tabelas.

Gabarito: letra B

Link permanente: /questoes/vu222885