SQL e Transações
-
Upload
carlos-pampulim-caldeira -
Category
Software
-
view
220 -
download
3
Transcript of SQL e Transações
![Page 1: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/1.jpg)
Desenho da Aplicação
Administração de Bases de Dados
SQL e Transações
Carlos Pampulim Caldeirawww.di.uevora.pt/~ccaldeira
www.ecologiadosdados.com/
www.linkedin.com/in/carlospampulimcaldeira
![Page 2: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/2.jpg)
Desenho da Aplicação
• SQL e desenvolvimento da aplicação
• Transacções
• Locking
![Page 3: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/3.jpg)
Análise proactiva da performance
O DBA que resolva depois da
aplicação estar em produção
SQL e desenvolvimento da aplicação
![Page 4: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/4.jpg)
• SQL, standard para acesso à informação
• Alto nível de abstracção
• Quais são os dados pretendidos
• Não especifica como os ir buscar
• Access paths, caminhos de acesso aos dados
• Forma desestruturada de escrita
• Operações a nível de conjuntos de dados
SQL e desenvolvimento da aplicação
![Page 5: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/5.jpg)
Etapas no SQL
Erudição do SQL
Optimizador de queries do SGBDR
![Page 6: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/6.jpg)
SQL: flexibilidade
![Page 7: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/7.jpg)
Tipos de SQL
• Planeado ou Ad hoc
• Embebido ou stand-alone
• Dinâmico ou estático
![Page 8: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/8.jpg)
SQL: integração
Embeber numa linguagem
COBOL, C, Java, Visual
Basic
ODBC ou JDBC
![Page 9: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/9.jpg)
Deixar que o SQL faça a tarefa
Minimização do I/O entre SGBDR
e a aplicação
SELECT * versus filtrar no
programa
Optimizar joinversus SELECT’s
individuais
![Page 10: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/10.jpg)
Os dois
objectivos
da gestão
de dados
Objectivos
Criar
Disponibilidade
Pesquisar
Alterar
Protecção
Integridade
Qualidade
Confidencialidade
![Page 11: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/11.jpg)
Estratégias manutenção da integridade
• Legais: leis, regras, regulações (ou não…)
• Administrativas: políticas de backup
• Técnicas: regras de validação (checks)
![Page 12: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/12.jpg)
Integridade da BD
• Memória organizacional
• Prevenção (backup/restore)
• Assegurar a confidencialidade
• Qualidade dos dados:
• Regras de integridade
• Concorrência no acesso
![Page 13: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/13.jpg)
• Unidade atómica de trabalho
– consistência e recuperação da base de dados
• COMMIT, grava a transacção
• ROLLBACK, estado anterior [antes do início]
Gestão de Transacções
![Page 14: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/14.jpg)
Gestão de Transacções
ACTIVA
ROLLEDBACK
COMMITTED
INSUCESSO
CONFIRMAÇÂO
PARCIAL
Início da Transacção
COMMIT
Interrupção
![Page 15: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/15.jpg)
Propriedades ACID
•Atomicidade
•Consistência
• Isolamento
•Durabilidade
Transacção
![Page 16: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/16.jpg)
Transacção
![Page 17: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/17.jpg)
Controlo de alterações concorrentes
Tempo Linha na tabelaAcção
P1
Ana recebe papeis
inscrição de mais
5 alunos na Tx
P2 Ana lê Tx
Tx 20
Tx 20
Turma Nº Inscritos
P3Adão retira 3
alunos de Tx
P4 Adão lê Tx Tx 20
P5Ana processa
(20+5)
P6 Ana actualiza Tx 25
P7Adão processa
(20-3)
P8 Adão actualiza Tx 17
![Page 18: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/18.jpg)
Controlo de alterações concorrentes
Tempo Linha na tabelaAcção
P1
Ana recebe papeis
inscrição de mais
5 alunos na Tx
P2 Ana lê Tx
Tx 20
Tx 20
Turma Nº Inscritos
P3Adão retira 3
alunos de Tx
P4 Adão lê Tx Tx 20
P5Ana processa
(20+5)
P6 Ana actualiza Tx 25
P8Adão processa
(25-3)
P9 Adão actualiza Tx 22
NEGADO
P7 Adão lê Tx Tx 25
![Page 19: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/19.jpg)
Transacção
• Duração da transacção
locks shared resources
![Page 20: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/20.jpg)
Locking
Coluna LinhaPágina
(ou bloco)
TabelaEspaço
de tabelas
Base de
dados
![Page 21: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/21.jpg)
Locking
![Page 22: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/22.jpg)
Locking
• LOCK TABLE aluno IN SHARE MODE;
/* Other Transactions have to wait */
• COMMIT; /* This releases the lock */
• LOCK TABLE aluno IN ROW SHARE MODE;
/* Set lock to default */
![Page 23: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/23.jpg)
Tipos de Locks
• Exclusive / Write lock – INSERT, UPDATE e
DELETE [Xlocks]
• Shared / Read lock – SELECT [Slocks]
![Page 24: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/24.jpg)
Deadlock
Problemas: alterar a granularidade de modo a que menos dados sejam bloqueados em cada lock
![Page 25: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/25.jpg)
Deadlock
![Page 26: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/26.jpg)
Nível isolamento
lock curto até lock demorado
Isolamento: define o comportamento do mecanismo
de locking numa transacção.
![Page 27: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/27.jpg)
• Read Uncommited (leitura descomprometida)
– >disponibilidade; > concorrência
• Read Commited: trans. só lê dados commited
(leitura confirmada)
• Read Repeatable: trans. repete a mesma leitura
(leitura estável)
• Serializable: evita a ocorrência de fantasmas
(leitura em bloco)
Nível isolamento
![Page 28: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/28.jpg)
• Nível da transacção:
SET TRANSACTION ISOLATION LEVEL
READ COMMITTED; [default]
• Nível da sessão:
ALTER SESSION SET SOLATION_LEVEL
= SERIALIZABLE;
Nível isolamento - Oracle
![Page 29: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/29.jpg)
O que se pretende evitar
• Dirty reads: a T1 lê dados escritos por outra T2
que ainda não foram committed
• Nonrepeatable reads: a T1 relê dados que foram
previamente lidos e vê que outra T2 os
modificou ou apagou
• Phantom reads: a T1 reexecuta uma query que
devolve um conjunto sujeito a uma condição
e vê que a T2 inseriu linhas adicionais que
satisfazem a condição
![Page 30: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/30.jpg)
Tabela isolation level
Nível de isolamento Dirty Read Nonrepeatable Read Phantom Read
Read uncommitted Possível Possível Possível
Read committed Impossível Possível Possível
Repeatable read Impossível Impossível Possível
Serializable Impossível Impossível Impossível
![Page 31: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/31.jpg)
Video | SQL
Rewriting SQL queries for Performance in 9 minutes
![Page 32: SQL e Transações](https://reader030.fdocuments.us/reader030/viewer/2022012316/55ac5b5d1a28abd14c8b47a7/html5/thumbnails/32.jpg)
Sumário
Cada SGBDR tem o seu próprio mecanismo de gestão de locks:
granularidade do locking
nível de isolamento
parametrização de timeouts e
deadlocks