Você está na página 1de 27

Fundamentos de Banco de Dados

SQL-DML Comandos INSERT, DELETE, UPDATE Conceitos sobre Transaes

Prof. Luiz Antnio Vivacqua C. Meyer (la.vivacqua@gmail.com)

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

SQL - DML
Inserindo Dados: INSERT - Sintaxe: Insert into nome_tabela [( campo, ... , campo ) ] values ( valor1, ... , valorN ); Insert into nome_tabela [ ( campo, ... , campo ) ] Select ... From ... Where ... ;

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

SQL - DML
Inserindo uma nova pea 1. Insert into Peca (id, Cidade, Peso) Values ('P7, 'RJ', 24); 2. Insert into Peca Values ('P8', 'tecla', 'branca', 300, 'SP'); Inserindo um conjunto de peas Insert into Peca_sp (id, nome) Select id, nome From Peca Where cidade = 'SP';

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

SQL - DML
DELETE - Sintaxe: Delete From nome_tabela [ Where predicado ] ; Exemplos: Excluindo uma pea Delete from fornecedor Where id = S1; Excluindo um conjunto de peas 1. Delete from Peca; 2. Delete From fornecimento Where id_forn IN ( Select id From fornecedor) ;

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

SQL - DML
UPDATE - Sintaxe: Update nome_tabela Set campo1 = valor ..., [ campoN = valor ] [ Where predicado ] ; Exemplos:
1. Update Peca Set cor = 'preta', Cidade = null Where id = P2; Update fornecedor Set status = status * 2 Where Cidade = 'RJ' ; Update fornecimento Set Qtde = 0 Where id_forn in ( Select id From fornecedor Where cidade = 'RJ' ) ;

2.

3.

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Transao
Introduo a processamento de transaes
Uma transao uma unidade da execuo de programa que acessa e possivelmente atualiza vrios itens de dados. Normalmente iniciada por um programa escrito em uma linguagem de manipulao de dados (C, C++, Java, Perl, etc) Delimitada pelas instrues BEGIN TRANSACTION e COMMIT Consiste de todas as operaes executadas entre o BEGIN e o COMMIT Para garantir a integridade dos dados o SGBD deve manter as propriedades ACID:
Atomicidade Consistncia Isolamento Durabilidade
Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Transao
PROPRIEDADES ACID Atomicidade
Ou todas as operaes da transao so refletidas corretamente no banco de dados ou nenhuma delas .

Consistncia
A execuo de uma transao isolada preserva a consistncia do banco de dados.

Isolamento
Embora vrias transaes possam ser executadas simultaneamente, cada transao precisa estar desinformada das outras transaes que esto sendo executadas ao mesmo tempo. Os resultados intermedirios da transao precisam estar ocultos das outras transaes sendo executadas simultaneamente.

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Transao
Durabilidade
Depois que uma transao for completada com sucesso, as mudanas que ela fez no banco de dados persistem, mesmo que ocorram falhas no sistema.

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Propriedades ACID
Transaes acessam os dados usando duas operaes:
Read(X) transfere o item de dados X do banco de dados (disco) para o buffer da transao (memoria) Write(X) transfere o item de dados X do buffer da transao para o banco de dados OBS: Em muitos SGBS, a operao Write no resulta na atualizao imediata dos dados no disco

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Propriedades ACID
Exemplo : Transferncia de fundos de R$50 da conta A para conta B. Saldo inicial de A R$1.000 e de B R$2.000
Ti : (1)Read(A) (2)A:= A 50 (3)Write(A) (4)Read(B) (5)B:= B + 50 (6)Write(B)

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Propriedades ACID
Atomicidade
Se a transao falhar aps a etapa 3 e antes da etapa 6, o sistema deve garantir que suas atualizaes no sejam refletidas no banco de dados, ou uma inconsistncia ir resultar.

Consistncia
A soma de A e B inalterada pela execuo da transao. Sem este requisito, o dinheiro poderia ser criado ou destrudo pela transao. Pode existir uma inconsistncia temporria durante a execuo da transao (A=950 e B=2000), porm devido ao requisito de atomicidade este estado nunca ser visvel

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Propriedades ACID
Isolamento
Mesmo estando presente os requisitos de atomicidade e consistncia, se vrias transaes estiverem executando simultaneamente suas operaes podem intercalar de alguma maneira indesejvel, resultando em um estado inconsistente. Por exemplo, Se entre as etapas 3 e 6, outra transao receber permisso de acessar o banco de dados parcialmente atualizado, ele ver um banco de dados inconsistente (a soma A + B ser menor do que deveria ser). Isso pode ser assegurado executando transaes serialmente, ou seja, uma aps outra. Entretanto, executar mltiplas transaes simultaneamente oferece vantagens significativas de desempenho. O requisito de isolamento garante que a execuo simultnea de transaes resulte em um estado do sistema equivalente ao estado que poderia ter sido obtido se as transaes fossem executadas uma de cada vez em alguma ordem.

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Propriedades ACID
Durabilidade
Quando o usurio notificado de que a transao est concluda (ou seja, a transao dos R$ 50 ocorreu), as atualizaes no banco de dados pela transao precisam persistir apesar de falhas (perda de dados na memria principal). A durabilidade pode ser garantida se:
1. As atualizaes executadas pela transao forem gravadas em disco antes que a transao termine,

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Estado da Transao
Ativa O estado inicial; a transao permanece nesse estado enquanto est executando Parcialmente confirmada Depois que a instruo final foi executada. Falha Depois da descoberta de que a execuo normal no pode mais prosseguir Abortada Depois que a transao foi revertida e o banco de dados foi restaurado ao seu estado anterior ao incio da transao. Duas opes aps ter sido abortada:
Reiniciar a transao; pode ser feito apenas se no houver qualquer erro lgico interno Excluir a transao

Confirmada Aps o trmino bem sucedido

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Estado da Transao

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Execues simultneas
Vrias transaes podem ser executadas simultaneamente no sistema. As vantagens so:
Melhor utilizao do processador e do disco, levando a um melhor throughput de transao: uma transao pode estar usando a CPU enquanto outra est lendo ou escrevendo no disco Tempo de mdio de resposta reduzido para transaes: as transaes curtas no precisam esperar atrs das longas

Esquemas de controle de concorrncia mecanismos para obter isolamento; ou seja, para controlar a interao entre as transaes concorrentes a fim de evitar que elas destruam a consistncia do banco de dados

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Execues simultneas
Consistncia do banco de dados pode ser destruda apesar da exatido de cada transao individual. Schedule Seqncias de instrues que especificam a ordem cronolgica em que as instrues das transaes simultneas so executadas
Um schedule para um conjunto de transaes precisa consistir em todas as instrues dessas transaes Precisam preservar a ordem em que as instrues aparecem em cada transao individual

Exemplo: Supor duas transaes T1 e T2


T1 transfere R$50 da conta A para a conta B T2 transfere 10% do saldo da conta A para a B

Valores iniciais : A=R$1.000 e B=R$2.000

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Execues simultneas
Schedule 1(serial) T1 executa primeiro que T2 Valores finais: A=R$855 e B=R$2145

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Execues simultneas
Schedule 2 (serial) T2 executa primeiro que T1 Valores finais: A=R$850 e B=R$2150

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Execues simultneas
Schedule 3 schedule no serial equivalente ao schedule 1 Valores finais: A=R$855 e B=R$2145

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Execues simultneas
Schedule 4 schedule no serial Valores finais: A=R$950 e B=R$2100 Estado inconsistente

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Definio de Transao na SQL


O padro SQL define 4 nveis de isolamento em termos de 3 fenmenos que devem ser evitados pelo processamento concorrente. So eles:
Leitura de sujeira T1 pode ler um dado atualizado por uma transao T2 concorrente no confirmada. Se T2 abortar ento T1 ler um valor que no existe e est incorreto. Leitura no repetvel T1 rel um dado previamente lido e obtm um valor diferente da primeira leitura (dado foi atualizado por outra transao). Leitura fantasma T1 l um conjunto de linhas de uma tabela. T2 insere uma nova linha na tabela. Se T1 for repetida, ela ver um fantasma, uma linha que no existia anteriormente.

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Definio de Transao na SQL


Nvel de isolamento Read Uncommited Leitura de sujeira Sim No No No Leitura no repetvel Sim Sim No No Leitura fantasma Sim Sim Sim No

* Read Commited **
Repeatable Read

* Serializable **

* - Oracle

** PostGreSQL

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Definio de Transao na SQL


Exemplo1:
JOSE:
BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED insert into t1(col1,col2) values(1,'a'); insert into t1(col1,col2) values(2,'b');

T
1 2 3 4 5 6 7

MARIA:
BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED

Select * from t1; COMMIT TRANSACTION;

ROLLBACK TRANSACTION;

Se as transaes no fossem isoladas, Maria teria visto os valores no confirmados inseridos por JOSE. PROBLEMA : Leitura de sujeira O nvel de isolamento READ COMMITED previne este problema.
Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Definio de Transao na SQL


Exemplo2:
JOSE:
BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED Update t1 set col2=x where col1=1; COMMIT TRANSACTION;

T
1 2 3 4 5 6 7

MARIA:
BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED Select * from t1 where col1=1;

Select * from t1 where col1=1; COMMIT TRANSACTION;

Maria enxerga dois resultados diferentes dentro da mesma transao. PROBLEMA : Leitura no repetvel O nvel de isolamento READ COMMITED NO previne este problema.

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Definio de Transao na SQL


Exemplo3:
JOSE:
BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED insert into t1(col1,col2) values(3,c'); COMMIT TRANSACTION;

T
1 2 3 4 5 6 7

MARIA:
BEGIN TRANSACTION ISOLATION LEVEL READ COMMITTED Select * from t1 where col1=1;

Select * from t1 where col1=1; COMMIT TRANSACTION;

Maria enxerga dois resultados diferentes dentro da mesma transao. No leitura de sujeira pois JOSE fez commit antes da Maria fazer a segunda leitura. PROBLEMA : Leitura Fantasma O nvel de isolamento READ COMMITED NO previne este problema.
Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua

Definio de Transao na SQL


A soluo para a leitura no repetvel e para a leitura de fantasma Pode ser alcanada pelo uso do nvel se isolamento SERIALIZABLE. Neste nvel de isolamento, uma transao s enxerga os dados Confirmados antes do incio da transao.

Prof. Luiz A. Vivacqua C. Meyer Prof. Luiz Vivacqua