Questão nº 49
Questão de Tecnologias da Informação · FCC SEFAZ-SC 2018 - Conhecimentos Específicos (P3) (nº 49)
A troca de contexto é a ocorrência de chaveamento entre a engine SQL e a engine PL/SQL durante a execução de queries ou blocos PL/SQL. Essa troca é invocada sempre que, dentro de um bloco PL/SQL, executa-se uma query ou um comando DML. Se executados isoladamente, os comandos INSERT, DELETE ou UPDATE, por exemplo, costumam ter pouco ou mesmo nenhum impacto na performance, mas quando executados em loops, o efeito das trocas de contexto se torna cumulativo e o prejuízo na performance do procedimento se torna bem evidente.
Para evitar esse prejuízo, o Oracle 11g implementa um comando cujo objetivo é enviar ao servidor um lote de comandos DML de uma única vez, utilizando apenas uma troca de contexto. Trata-se do
- AFORNEXT.
- BFETCH FIRST.
- CFORALL. (alternativa correta)
- DMAXLOOP.
- ELOOPALL.
Resposta comentada
Gabarito Alternativa C
A troca de contexto acontece quando o Oracle alterna entre o motor PL/SQL (para a lógica do programa) e o motor SQL (para executar comandos no banco de dados), e fazer isso muitas vezes em um loop causa lentidão.
- (A) Incorreta:
FORNEXTnão é um comando PL/SQL válido para essa finalidade. - (B) Incorreta:
FETCH FIRSTé uma cláusula usada comSELECTpara limitar o número de linhas retornadas, não para enviar um lote de comandos DML. A armadilha aqui é que "FETCH" se relaciona com dados, mas não resolve o problema de performance de DMLs em loops por meio de lote. - (C) Correta: O comando
FORALLé a solução em PL/SQL para enviar um lote de comandos DML (INSERT, UPDATE, DELETE) de uma só vez para o motor SQL, usando coleções, minimizando as trocas de contexto e melhorando a performance. - (D) Incorreta:
MAXLOOPnão é um comando PL/SQL válido. - (E) Incorreta:
LOOPALLnão é um comando PL/SQL válido.
Fonte: FCC SEFAZ-SC 2018 - Conhecimentos Específicos (P3) Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.