Aulas, exercícios e resumos sobre banco de dados
Transação em banco de dados é uma coleção de várias operações ex: SELECT
, UPDATE
, DELETE
ou INSERT
como uma única unidade de trabalho.
Podemos definir onde a transação começará e quando terminará. Para iniciar a transação, usamos a sintaxe BEGIN
.
Se as consultas em uma transação foram executadas com sucesso, salvamos as alterações usando a sintaxe COMMIT
. Se as consultas em uma transação falharem na execução, então reverteremos as alterações antes da execução da transação usando a sintaxe ROLLBACK
.
Ex:
SELECT BALANCE FROM ACCOUNT WHERE ID = 1
UPDATE ACCOUNT SET BALANCE = BALANCE - 100 WHERE ID = 1
UPDATE ACCOUNT SET BALANCE = BALANCE + 100 WHERE ID = 2
Todo banco de dados RELACIONAL deve possuir as propriedades ACID:
Controle de transações serve para garantir as caracteristicas fundamentais de uma transação (ACID).
Lock é quando uma ação está sendo tomada em um banco de dados e para evitar a concorrência de 2 comandos em cima do mesmo registro ou tabela, um lock (travamento) é executado. Quando um lock é ativo a transação por sua vez aguarda o unlock (destravamento) da tarefa que estava a sua frente para assim poder ser executada.
Já o DeadLock, é um caso que ocorre nos bancos de dados quando são feitos muitos lock’s que dependem de outros lock’s para prosseguirem, causando uma fila eterna de bloqueio.
Isso causa um ciclo de dependências (dependência cíclica) e assim impedindo que qualquer tarefa possa ser executada. Geralmente em casos assim, os SGBD’s cancelam ambas as transações para que as próximas possam ser realizadas.
É sempre necessário levar em conta:
Um dado ou relação será fragmentado e armazenado em diferentes nodos.
A fragmentação pode ser de 2 formas: