14
PostGres - PostGres - Transacções Transacções TBD TBD Vladimir Luz Vladimir Luz

PostGres - Transacções

  • Upload
    colum

  • View
    25

  • Download
    0

Embed Size (px)

DESCRIPTION

PostGres - Transacções. TBD Vladimir Luz. Sumário. Níveis de isolamento Read Committed Serializable Gestor de Transacções MVCC Locks Deadlock Locks em Índices. Níveis de Isolamento (1). - PowerPoint PPT Presentation

Citation preview

Page 1: PostGres - Transacções

PostGres - PostGres - TransacçõesTransacções

TBDTBD

Vladimir LuzVladimir Luz

Page 2: PostGres - Transacções

SumárioSumário

Níveis de isolamentoNíveis de isolamento Read CommittedRead Committed SerializableSerializable

Gestor de TransacçõesGestor de Transacções MVCCMVCC LocksLocks DeadlockDeadlock

Locks em ÍndicesLocks em Índices

Page 3: PostGres - Transacções

Níveis de Isolamento (1)Níveis de Isolamento (1)

No SQL estão definidos quatro tipos de No SQL estão definidos quatro tipos de isolamento de transacções em função de três isolamento de transacções em função de três fenómenos que devem ser evitadosfenómenos que devem ser evitados Dirty read – uma transacção lê dados escritos por Dirty read – uma transacção lê dados escritos por

uma transacção que ainda não fez commituma transacção que ainda não fez commit Nonrepeatable read – Uma transacção lê dados Nonrepeatable read – Uma transacção lê dados

que já tinha lido antes e que entretanto foram que já tinha lido antes e que entretanto foram modificados por outra transacção que fez commitmodificados por outra transacção que fez commit

Phantom read – uma transacção volta a executar Phantom read – uma transacção volta a executar uma query devolvendo um conjunto de tuplos e uma query devolvendo um conjunto de tuplos e verifica que o conjunto dos tuplos devolvidos é verifica que o conjunto dos tuplos devolvidos é diferente da execução anterior diferente da execução anterior

Page 4: PostGres - Transacções

Níveis de Isolamento (2)Níveis de Isolamento (2) Níveis de isolamento e comportamentoNíveis de isolamento e comportamento

Nivel de Nivel de IsolamentoIsolamento

Dirty ReadDirty Read Unrepeatable Unrepeatable ReadRead

Phantom ReadPhantom Read

Read Read UncommittedUncommitted

Read CommittedRead Committed

Reapeted readReapeted read

SerializableSerializable Pode ser requerido qualquer dos níveis de isolamentoPode ser requerido qualquer dos níveis de isolamento Internamente:Internamente:

Apenas existe os níveis read commited e serializableApenas existe os níveis read commited e serializable read uncommitted é tratado como read committed e o read uncommitted é tratado como read committed e o

repeated read é tratado como serializablerepeated read é tratado como serializable Os quatro níveis apenas determinam que fenómenos não Os quatro níveis apenas determinam que fenómenos não

podem ocorrerpodem ocorrer

Page 5: PostGres - Transacções

Níveis de Isolamento (3)Níveis de Isolamento (3)

Read CommittedRead Committed Nível de isolamento por defeito no PostGresNível de isolamento por defeito no PostGres Um SELECT vê apenas dados que já fizeram Um SELECT vê apenas dados que já fizeram

commit.commit. Vê um snapshot da base de dados na altura em Vê um snapshot da base de dados na altura em

que começa a queryque começa a query Comandos de UPDATE e DELETE comportam Comandos de UPDATE e DELETE comportam

se da mesma formase da mesma forma

Page 6: PostGres - Transacções

Níveis de Isolamento (4)Níveis de Isolamento (4)

SerializableSerializable Simula as execução das transacções em Simula as execução das transacções em

série como se elas fossem executadas uma série como se elas fossem executadas uma depois da outradepois da outra

No caso de SELECT o funcionamento é No caso de SELECT o funcionamento é análogo ao read commitedanálogo ao read commited

Difere no snapshot que vê, pois vê o Difere no snapshot que vê, pois vê o snapshot na altura do início da transacçãosnapshot na altura do início da transacção

Comandos de UPDATE E DELETE também Comandos de UPDATE E DELETE também vêem o snapshot do inicio da transacçãovêem o snapshot do inicio da transacção

Page 7: PostGres - Transacções

Gestor de TransacçõesGestor de Transacções

Usa um modelo multi-versãoUsa um modelo multi-versão Multiversion Concurrency Control, Multiversion Concurrency Control,

MVCCMVCC Usado em Statements DMLUsado em Statements DML

Usa um sistema de locksUsa um sistema de locks Two-Phase-LockingTwo-Phase-Locking Usado em statements DDLUsado em statements DDL

Page 8: PostGres - Transacções

MVCC(1)MVCC(1)

MVCCMVCC A ideia é mater duas versões de uma linha A ideia é mater duas versões de uma linha

que corresponde a diferentes instancias que corresponde a diferentes instancias da linha em pontos diferentes no tempoda linha em pontos diferentes no tempo

Garante que as transacções apenas vêem Garante que as transacções apenas vêem os dados que são consistentes nessa alturaos dados que são consistentes nessa altura

Vê um snapshot da base de dados com Vê um snapshot da base de dados com apenas os dados que fizeram commitapenas os dados que fizeram commit

Não implementa locks para os comandos Não implementa locks para os comandos DMLDML

Page 9: PostGres - Transacções

MVCC (2)MVCC (2)

VantagensVantagens Os leitores nunca bloqueiam os Os leitores nunca bloqueiam os

escritoresescritores Os escritores criam as suas próprias para Os escritores criam as suas próprias para

as actualizaremas actualizarem Os leitores acedem a versão mais recente Os leitores acedem a versão mais recente

dos dados que é parte do snapshot.dos dados que é parte do snapshot. Como não usa locks não precisa interagir Como não usa locks não precisa interagir

com o lock managercom o lock manager

Page 10: PostGres - Transacções

MVCC (3)MVCC (3)

DesvantagensDesvantagens Sobrecarga extra para o storage manager Sobrecarga extra para o storage manager

porque tem de manter diferentes versões para porque tem de manter diferentes versões para os tuplosos tuplos

O desenvolvimento de aplicações concorrentes O desenvolvimento de aplicações concorrentes requer mais cuidado, pois leva a diferentes requer mais cuidado, pois leva a diferentes comportamentos na forma como as transacções comportamentos na forma como as transacções se comportam.se comportam.

A performance depende das características da A performance depende das características da carga de trabalho a correr carga de trabalho a correr

Não protege em relação a procedimentos que Não protege em relação a procedimentos que afectem a tabela inteiraafectem a tabela inteira

Page 11: PostGres - Transacções

LocksLocks

Usa um sistema de two-phase lockingUsa um sistema de two-phase locking Comandos DDL são forçados a adquirir um Comandos DDL são forçados a adquirir um

lock antes de iniciarem a sua execuçãolock antes de iniciarem a sua execução Locks são guardados numa tabela de locks Locks são guardados numa tabela de locks

que é implementada com uma tabela de que é implementada com uma tabela de hash de memória partilhada.hash de memória partilhada.

Os locks são implementados através de Os locks são implementados através de semáforos semáforos

Cada transacção tem um semáforo Cada transacção tem um semáforo associado a elaassociado a ela

Page 12: PostGres - Transacções

DeadlocksDeadlocks A detecção de deadlocks é baseada num A detecção de deadlocks é baseada num

sistema de time-outssistema de time-outs O sistema de detecção é activado se uma O sistema de detecção é activado se uma

transacção espera por mais de um segundo transacção espera por mais de um segundo pela obtenção de um lockpela obtenção de um lock

O algoritmo constrói um grafo baseado na O algoritmo constrói um grafo baseado na informação na tabela de locks e procura informação na tabela de locks e procura dependências circularesdependências circulares

Se encontrar alguma, então é porque há um Se encontrar alguma, então é porque há um deadlockdeadlock

A transacção que originou a detecção é A transacção que originou a detecção é abortada e retorna um erro para o utilizadorabortada e retorna um erro para o utilizador

Caso contrario continua a espera do lock Caso contrario continua a espera do lock

Page 13: PostGres - Transacções

Locks em ÍndicesLocks em Índices Os locks dependem do tipo de índiceOs locks dependem do tipo de índice B-Tree e GiSTB-Tree e GiST

Locks partilha/exclusivos ao nível das paginasLocks partilha/exclusivos ao nível das paginas Locks são libertados logo depois de cada folha é Locks são libertados logo depois de cada folha é

acedidaacedida Não origina deadlocksNão origina deadlocks

HashHash Locks partilha/exclusivos ao nível dos bucketsLocks partilha/exclusivos ao nível dos buckets Melhor nível de concorrência mas pode gerar Melhor nível de concorrência mas pode gerar

deadlocksdeadlocks R-TreeR-Tree

Locks partilha/exclusivos ao nível do índice Locks partilha/exclusivos ao nível do índice Locks libertados depois de todo o comando estar Locks libertados depois de todo o comando estar

terminadoterminado

Page 14: PostGres - Transacções

BibliografiaBibliografia

Silberschatz, Abraham, Database Silberschatz, Abraham, Database System Concepts, 5ª EdiçãoSystem Concepts, 5ª Edição

PostgreSQL 8.1.0 DocumentationPostgreSQL 8.1.0 Documentation Lane, Tom, Transaction Processing Lane, Tom, Transaction Processing

in PostgreSQLin PostgreSQL