sql e transações

32
Desenho da Aplicação Administração de Bases de Dados SQL e Transações Carlos Pampulim Caldeira www.di.uevora.pt/~ccaldeira www.ecologiadosdados.com/ www.linkedin.com/in/carlospampulimcaldeira

Upload: carlos-pampulim-caldeira

Post on 20-Jul-2015

222 views

Category:

Software


3 download

TRANSCRIPT

Page 1: SQL e Transações

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

Desenho da Aplicação

• SQL e desenvolvimento da aplicação

• Transacções

• Locking

Page 3: SQL e Transações

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

• 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

Etapas no SQL

Erudição do SQL

Optimizador de queries do SGBDR

Page 6: SQL e Transações

SQL: flexibilidade

Page 7: SQL e Transações

Tipos de SQL

• Planeado ou Ad hoc

• Embebido ou stand-alone

• Dinâmico ou estático

Page 8: SQL e Transações

SQL: integração

Embeber numa linguagem

COBOL, C, Java, Visual

Basic

ODBC ou JDBC

Page 9: SQL e Transações

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

Os dois

objectivos

da gestão

de dados

Objectivos

Criar

Disponibilidade

Pesquisar

Alterar

Protecção

Integridade

Qualidade

Confidencialidade

Page 11: SQL e Transações

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

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

• 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

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

Propriedades ACID

•Atomicidade

•Consistência

• Isolamento

•Durabilidade

Transacção

Page 16: SQL e Transações

Transacção

Page 17: SQL e Transações

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

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

Transacção

• Duração da transacção

locks shared resources

Page 20: SQL e Transações

Locking

Coluna LinhaPágina

(ou bloco)

TabelaEspaço

de tabelas

Base de

dados

Page 21: SQL e Transações

Locking

Page 22: SQL e Transações

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

Tipos de Locks

• Exclusive / Write lock – INSERT, UPDATE e

DELETE [Xlocks]

• Shared / Read lock – SELECT [Slocks]

Page 24: SQL e Transações

Deadlock

Problemas: alterar a granularidade de modo a que menos dados sejam bloqueados em cada lock

Page 25: SQL e Transações

Deadlock

Page 26: SQL e Transações

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

• 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

• 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

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

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

Video | SQL

Rewriting SQL queries for Performance in 9 minutes

Page 32: SQL e Transações

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