Juliana necessita preparar o banco de dados BD_APOIO criado no PostgreSQL para o primeiro uso. De modo a executar a tarefa de popular o BD_APOIO com celeridade, Juliana deve:
- A)efetuar a carga de cada tabela usando o comando COPY, com índices habilitados para facilitar a criação de foreign keys na carga de outras tabelas;
Errada: índices ativos tendem a deixar a carga mais lenta, porque cada inserção também precisa atualizar os índices, e isso não facilita a criação de foreign keys.
- B)efetuar a carga de cada tabela reduzindo o valor da variável de configuração maintenance_work_mem para não ultrapassar o valor da variável work_mem;
Errada: reduzir maintenance_work_mem não acelera carga; essa variável é ligada a operações de manutenção, e diminuir seu valor pode piorar o desempenho.
- C)criar mais de um tablespace no sistema de arquivos lógico, de modo a garantir que haja espaço de swapping para carga de dados de todas as tabelas;
Errada: tablespace não serve para garantir espaço de swapping, e a proposta mistura conceitos de armazenamento com memória virtual de forma incorreta.
- D)executar a inserção de dados de todas as tabelas no modo autocommit desligado;
Certa: com autocommit desligado, as inserções podem ser feitas em uma única transação, reduzindo o custo de commits sucessivos e acelerando a carga.
- E)executar o comando ANALYZE antes, para que o processo de carga utilize estatísticas atualizadas.
Errada: ANALYZE serve para atualizar estatísticas do otimizador, não para acelerar a inserção dos dados; antes da carga, isso não traz ganho relevante.
Gabarito: D
Para popular um banco no PostgreSQL com rapidez, a ideia central é reduzir o custo de cada operação individual. Em carga inicial, o que costuma atrasar muito é confirmar transação a cada comando, porque cada commit força o banco a registrar e sincronizar mudanças no disco. Quando voce desliga o autocommit, as inserções passam a ocorrer dentro de uma única transação, o que diminui bastante esse overhead. Na prática, isso é um truque clássico de carga em massa: menos confirmações, menos trabalho de controle transacional e, portanto, mais velocidade. Depois da carga, voce faz o commit ao final. Em bases relacionais, isso costuma ser muito mais eficiente do que ficar confirmando linha por linha ou comando por comando. As outras alternativas misturam conceitos que não ajudam na tarefa ou até atrapalham. Índices, estatísticas e ajustes de memória não são o atalho certo para esse cenário, e algumas sugestões nem fazem sentido técnico no PostgreSQL. Por isso, o gabarito é a letra D: executar a inserção de dados de todas as tabelas com o autocommit desligado, permitindo carga mais célere.