Prévia do material em texto
1. Para manter a integridade dos dados mesmo com possíveis falhas do sistema, o SGBD precisa garantir quatro propriedades específicas das transações, chamadas de propriedades ACID. Assinale a alternativa em que uma das propriedades ACID é descrita corretamente: A. Durabilidade: os efeitos da transação devem persistir, mesmo que existam falhas. Por que esta resposta é a correta? Quando o SGBD informar ao usuário que uma transação foi concluída com sucesso, seus efeitos devem persistir, mesmo que o sistema passe por falhas. Essa propriedade chama-se durabilidade. Cada transação deve ser vista pelo usuário como atômica, o que quer dizer que todas serão executadas ou nenhuma será executada. Assim, não há preocupação com transações incompletas, que podem ser interrompidas por falhas do sistema. As transações, sem nenhuma execução concorrente, devem preservar a consistência do banco de dados. Os usuários precisam entender uma transação sem ter que considerar o efeito de outras transações em execução concorrente. Essa propriedade é chamada de isolamento, pois as transações são protegidas (isoladas) dos efeitos do plano de execução concorrente. 2. As operações de transação são responsáveis por descrever, dentro de um código SQL, uma transação. Assinale a alternativa que descreve corretamente uma das operações de transação. D. SAVEPOINT: definição de ponto de recuperação temporário. Por que esta resposta é a correta? Entre os operadores de transação estão: o comando SAVEPOINT, que é uma forma de salvar etapas de uma transação, por meio da definição de pontos intermediários de salvamento temporário; BEGIN_TRANSACTION, que marca o momento do início da execução da transação; READ, que especifica a ação de leitura em itens do banco de dados durante uma transação; COMMIT_TRANSACTION, que sinaliza um final bem-sucedido da transação e que as mudanças ou atualizações em banco de dados resultantes da transação podem ser confirmadas; e ROLLBACK, que aponta que a transação foi encerrada, porém sem sucesso, e por isso mudanças ou atualizações em banco de dados resultantes da transação devem ser desfeitas. 3. As transações podem ser consideradas, além de unidades de trabalho do banco de dados, unidades de recuperação. Nesse sentido, observe a expressão abaixo: BEGIN TRANSACTION SELECT * FROM Produto; INSERT INTO Produto (id-produto, nome, quantidade), VALUES (12345, ‘Caneta’, 150); COMMIT; SELECT * FROM Produto; END TRANSACTION; Na instrução acima, o operador de transação COMMIT foi utilizado para: E. Confirmar as inserções na tabela ‘Produto’. Por que esta resposta é a correta? Na instrução oferecida, o operador de transação COMMIT foi utilizado para confirmar as inserções na tabela ‘Produto’. O operador de transação COMMIT_TRANSACTION sinaliza um final bem-sucedido da transação, e as mudanças ou atualizações em banco de dados resultantes da transação podem ser confirmadas (committed). Nessa questão, portanto, confirma a inserção realizada por meio do INSERT. Assim, o operador de transação COMMIT não foi utilizado para desfazer o INSERT, nem para selecionar todos os atributos, inserir valor para os atributos ‘id-produto’, ‘nome’ e ‘quantidade’, ou iniciar a transação de inserção da tabela 'Produto', pois é empregado para confirmar as inserções na referida tabela. 4. Com o uso do SAVEPOINT, é possível criar pontos de recuperação dentro de transações, geralmente ligados a condições ou correções de erros. Nesse sentido, entre as opções a seguir, assinale a instrução na qual o nome do cliente ‘Fausto Gomes’ seria salvo após a execução e finalização da transação. B. Confira a alternativa B. Clique aqui Por que esta resposta é a correta? O SAVEPOINT é útil para casos em que seja necessário retornar a um ponto anterior por alguma falha, mas sem cancelar a transação desde o seu início. Os exemplos dessa questão apresentaram expressões sem condições de erro, para deixar claro que, ao utilizar o ROLLBACK para um determinado SAVEPOINT, as alterações posteriores no banco de dados serão desfeitas. A resposta correta se refere à instrução onde o nome do cliente ‘Fausto Gomes’ é salvo, pois sua inserção não foi desfeita pelo ROLLBACK nem pelo SAVEPOINT B que foi executado. BEGIN TRANSACTION INSERT INTO Clientes (CPF, nome, telefone), VALUES (11111111121, ‘Paula Silveira’, 47999999997); SAVEPOINT A; INSERT INTO Clientes (CPF, nome, telefone), VALUES (22222222232, ‘Fausto Gomes’, 61999999991); SAVEPOINT B; INSERT INTO Clientes (CPF, nome, telefone), VALUES (33333333343, ‘Sara Lagos’, 47999999998); SAVEPOINT C; ROOLBACK TO SAVEPOINT B; COMMIT; 5. 5. A fim de realizar o controle de transações, o SGBD pode definir tanto bloqueios quanto níveis de isolamento para cada parte da transação. Nesse sentido, verifique a instrução a seguir: SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; Assinale a alternativa que descreve corretamente a função da expressão acima: E. Garantir que os valores dos dados acessados não sejam alterados por outras transações. Por que esta resposta é a correta? Entre as configurações de nível de isolamento possíveis em SQL estão: REPEATABLE READ, que utiliza bloqueio dos dados até o final da transação, garantindo que os valores dos dados acessados não sejam modificados por outras transações; READ UNCOMMITTED, que não utiliza bloqueio e pode ter como resultado dados ainda sendo escritos; e SERIALIZABLE, que bloqueia os dados até o final da transação e impede tanto a inserção de dados quanto a criação de novas tuplas nas tabelas utilizadas durante a execução da transação. Portanto, garantir que os valores dos dados acessados não sejam alterados por outras transações descreve corretamente a função da expressão "SET TRANSACTION ISOLATION LEVEL REPEATABLE READ"