sql e transações
TRANSCRIPT
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
Desenho da Aplicação
• SQL e desenvolvimento da aplicação
• Transacções
• Locking
Análise proactiva da performance
O DBA que resolva depois da
aplicação estar em produção
SQL e desenvolvimento da aplicação
• 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
Etapas no SQL
Erudição do SQL
Optimizador de queries do SGBDR
SQL: flexibilidade
Tipos de SQL
• Planeado ou Ad hoc
• Embebido ou stand-alone
• Dinâmico ou estático
SQL: integração
Embeber numa linguagem
COBOL, C, Java, Visual
Basic
ODBC ou JDBC
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
Os dois
objectivos
da gestão
de dados
Objectivos
Criar
Disponibilidade
Pesquisar
Alterar
Protecção
Integridade
Qualidade
Confidencialidade
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)
Integridade da BD
• Memória organizacional
• Prevenção (backup/restore)
• Assegurar a confidencialidade
• Qualidade dos dados:
• Regras de integridade
• Concorrência no acesso
• 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
Gestão de Transacções
ACTIVA
ROLLEDBACK
COMMITTED
INSUCESSO
CONFIRMAÇÂO
PARCIAL
Início da Transacção
COMMIT
Interrupção
Propriedades ACID
•Atomicidade
•Consistência
• Isolamento
•Durabilidade
Transacção
Transacção
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
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
Transacção
• Duração da transacção
locks shared resources
Locking
Coluna LinhaPágina
(ou bloco)
TabelaEspaço
de tabelas
Base de
dados
Locking
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 */
Tipos de Locks
• Exclusive / Write lock – INSERT, UPDATE e
DELETE [Xlocks]
• Shared / Read lock – SELECT [Slocks]
Deadlock
Problemas: alterar a granularidade de modo a que menos dados sejam bloqueados em cada lock
Deadlock
Nível isolamento
lock curto até lock demorado
Isolamento: define o comportamento do mecanismo
de locking numa transacção.
• 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
• 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
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
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
Video | SQL
Rewriting SQL queries for Performance in 9 minutes
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