Transações, Controle de Concorrência e o Hibernate. Clodis Boscarioli
|
|
- Luiz Eduardo de Sá
- 4 Há anos
- Visualizações:
Transcrição
1 Transações, Controle de Concorrência e o Hibernate Clodis Boscarioli
2 Transações Um conjunto de várias operação em um BD pode ser visto pelo usuário como uma única unidade. Exemplo: A transferência de fundos de uma conta corrente pra uma conta poupança é uma operação única do ponto de vista do cliente, porém, dentro do sistemas de banco de dados, ela envolve várias operações. É essencial que todo o conjunto de operações seja concluído, ou que, no caso de uma falha, nenhuma delas ocorra. Um SGBD precisa: Garantir que a execução da transação seja completa; Administrar a execução simultânea de várias transações evitando inconsistências; Uma transação que calcula o total de dinheiro do cliente poderia trabalhar com o saldo da conta corrente antes do débito feito pela transação de transferência e, também, verificar o saldo da poupança depois do crédito. Com isso, obteria um resultado incorreto.
3 Operações de escrita/leitura As operações de acesso ao BD que uma transação pode fazer são: read(x): que transfere o item de dados x do BD para um buffer local alocado à transação que executou a operação de read. O valor de x é colocado dentro de uma variável de programa. write(x): que transfere o item de dados x do buffer local da transação que executou o write de volta para o BD. O valor da variável de programa é passado para o item de dado no BD. OBS.: para fins de simplificação, representaremos o item de dados e a variável de programa correspondente da mesma forma: x.
4 Execução das operações Executar read(x): Encontrar o endereço do bloco de disco que contém x; Copiar este bloco de disco para dentro do buffer/memória principal, se ele já não estiver lá; Copiar o item x do buffer para a variável de programa. Executar write(x): Encontrar o endereço do bloco de disco que contém x; Copiar o bloco de disco para a memória principal se ele já não estiver lá; Copiar o item x da variável de programa x para a localização correta no buffer; Copiar o bloco alterado do buffer de volta para o disco (imediatamente ou mais tarde).
5 Exemplo de transação A) read(x); x := x N; write(x); read(y); y := y + N; write(y); B) read(x); x := X + M; write(x); T1 T2 Acesso concorrente ao dado x.
6 Exemplo: Seja T1 uma transação que transfere 50 reais da conta A para a conta B. Essa transação pode ser definida como: Ti: read(a); A := A - 50; write(a); read(b); B := B + 50; write(b);
7 Propriedades das transações (ACID) A Atomicidade: ou todas as operações da transação são refletidas corretamente no banco de dados ou nenhuma o será. Suponha que, durante a execução da transação Ti, uma falha aconteça impedindo Ti de se completar com sucesso (uma queda de energia). Suponha ainda que a falha tenha ocorrido depois da execução da operação write(a), mas antes da operação write(b). O que acontece? O estado do sistema não reflete mais um estado real do mundo que se supões representado no BD. É um estado inconsistente. Estes estados não podem ser perceptíveis, ou seja, estados inconsistente só são permitidos no momento de execução da transação, onde o usuário não terá qualquer tipo de acesso aos dados. Assegurar a atomicidade de uma transação é responsabilidade do SGBD, mais especificamente, do Componente de Gerenciamento de Transações e Recuperador de Falhas.
8 Propriedades das transações (ACID) C - Consistência: a execução de uma transação isolada (ou seja, sem a execução concorrente de outra transação) preserva a consistência do banco de dados. A exigência da consistência aqui significa que a soma de A com B deve permanecer inalterada após a execução da transação. Se o banco de dados está consistente antes de uma execução de transação, o banco de dados permanece consistente após a execução da transação. Responsabilidade do programador.
9 Propriedades das transações (ACID) I Isolamento: embora diversas transações possam ser executadas de forma concorrente, o sistema garante que, para todo par de transações Ti e Tj, Ti tem a sensação de que Tj terminou sua execução antes de Ti começar, ou vice-versa. Cada transação não toma conhecimento de outras transações concorrentes a ela no sistema. A execução concorrente de várias transações implica no intercalamento de suas operações. Se este intercalamento é feito de forma inconveniente, inconsistências serão geradas. No exemplo dado, se uma transação concorrente ler o valor de A antes dele ser escrito mais depois do processamento A-50 ter sido feito, ela estará lendo um valor inconsistente. Execuções em série resolvem este problema mas a concorrência é benéfica por causa do tempo de execução (melhora do desempenho). Assegurar o isolamento é de responsabilidade do Controlador de Concorrência.
10 Propriedades das transações (ACID) D Durabilidade: depois da transação completar-se com sucesso, as mudanças que ela faz no banco de dados persistem, até mesmo se houver falhas no sistema. No exemplo dado, se a transação se completar com sucesso e o usuário que a disparou for notificado da transferência de fundos, isso significa que não houve nenhuma falha de sistema que tenha resultado em perda de dados relativa a essa transferência. Assegurar a durabilidade é responsabilidade do componente do SGBD chamado de Recuperador de Falhas.
11 Transações Operações Uma transação é uma unidade de trabalho atômica que é completada em sua totalidade ou nada dela deve ter efeito. Para tornar isso possível, as seguintes operações são necessárias: Begin-transaction: marca o início da execução da transação; End-transaction: especifica que as operações da transação terminaram e marca o limite final da execução da transação. Neste ponto é necessário verificar se o COMMIT ou o ABORT são necessários, caso já não tenham sido explicitados; Commit-transaction: sinal de término com sucesso e que as alterações podem ser permanentemente gravadas no BD; Rollback (abort-transaction): sinal que a transação não terminou com sucesso e que seus efeitos devem ser desfeitos; Undo: desfaz uma operação; Redo: refaz uma operação.
12 Exemplo: begin transaction update TABELA1 set CAMPO1 = NOVO VALOR where CAMPO2 = 35 <> 0 rollback else commit end transaction Suponha que a tabela possua 6000 registros que satisfaçam a condição e que no registro 4666 houve uma falha no sistema. Neste caso, a variável guardará o código do erro, o comando ROLLBACK será executado e os 4666 registros já atualizados serão automaticamente voltados ao seu estado anterior. Ao contrário, se tudo correr bem, o comando COMMIT será executado e todos os 6000 registros que atenderam à condição serão atualizados com êxito.
13 Estados de uma transação Read/Write Begin Transaction Ativa End Transaction Em efetivação parcial Efetivada Abort Abort Em falha Completa Diagrama de transição de estados para a execução da transação. Com sucesso ou com falha.
14 Considerações Uma transação entra no estado de falha quando o sistema determina que ela já não pode prosseguir sua execução normal. Essa transação deve ser desfeita e entra no estado de abortada. Nesse momento o sistema tem duas opções: Reiniciar a transação: somente se ela foi abortada como resultado de algum erro de hardware ou de software não criado pela lógica interna da transação. Uma transação reiniciada é considerada uma transação nova. Matar a transação: normalmente, isto é feito em decorrência de algum erro lógico interno e só pode ser corrigido refazendo o programa de aplicação. Esse erro dá-se ou porque a entrada de dados não era adequada ou porque os dados desejados não foram encontrados no banco de dados.
15 Execução concorrente Sejam T1 e T2 duas transações que transferem fundos de uma conta para outra. A transação T1 transfere 50 dólares da conta A para a conta B. A transação T2 transfere 10 por cento do saldo da conta A para a conta B.
16 Execução Concorrente T1: read(a); A := A 50; write(a); read(b); B := B + 50; write(b); T2: read(a); temp := A * 0,1; A := A temp; write(a); read(b); B := B + temp; write(b);
17 Execução Seqüencial Escalas de execução em seqüência: observe que o estado do BD é sempre consistente. T1 T2 T1 T2 read(a); A := A 50; write(a); read(b); B := B + 50; write(b); read(a); temp := A * 0,1; A := A temp; write(a); read(b); B := B + temp; write(b); read(a); A := A 50; write(a); read(b); B := B + 50; write(b); read(a); temp := A * 0,1; A := A temp; write(a); read(b); B := B + temp; write(b);
18 Execução Concorrente... Correta Incorreta T1 T2 T1 T2 read(a); A := A 50; write(a); read(a); temp := A * 0,1; A := A temp; write(a); read(a); A := A 50; read(a); temp := A * 0,1; A := A temp; write(a); read(b); B := B + 50; write(b); read(b); B := B + temp; write(b); write(a); read(b); B := B + 50; write(b); read(b); B := B + temp; write(b);
19 Problema de alterações perdidas Ocorre quando duas transações que acessam o mesmo item de BD possuem suas operações intercaladas de uma maneira que o valor de algum item de dado fique incorreto. T1 read(x); x := x - N; write(x); read(y); T2 read(x) x := x + M; write(x) y := y + N; write(y)
20 Problema de alteração temporária Ocorre quando uma transação altera um item de dados e depois ela falha por alguma razão. O item de dado é acessado por outra transação antes que o valor original seja estabelecido. T1 read(x); x := x - N; write(x); T2 read(x) x := x + M; write(x) falha read(y);
21 Problema do resumo incorreto Se uma transação está calculando uma função agregada com um conjunto de registros e outras transações estão alterando alguns destes registros, a função agregada pode calcular alguns valores antes deles serem alterados e outros depois de serem alterados. T1 read(x); x := x - N; write(x); read(y); y := y + N; write(y) T3 sum := 0; read(a); sum : sum + a; read(x) sum := sum + x; read(y); sum := sum + y;
22 Serialização O sistema de banco de dados deve controlar a execução concorrente de transações para assegurar que o estado do BD permaneça consistente. A consistência do banco de dados, sob execução concorrente, pode ser assegurada por meio da garantia de que qualquer escala executada tenha o mesmo efeito de outra que tivesse sido executada sem qualquer concorrência. Isto é, uma escala de execução deve, de alguma forma, ser equivalente a uma escala seqüencial.
23 Serialização por Conflito Considere uma escala de execução S com duas instruções sucessivas, I i e I j, das transações T i e T j (i <> j), respectivamente. Se I i e I j referem-se a itens de dados diferentes, então é permitido alternar I i e I j sem afetar os resultados de qualquer instrução da escala. Se I i e I j referem-se ao mesmo item de dado Q, então a ordem dos dois passos pode importar.
24 Serialização por Conflito 1. Ii = read(q) e Ij = read(q) A seqüência de execução de I i e I j não importa, já que o mesmo valor de Q é lido por Ti e Tj, independentemente da ordem destas operações. 2. Ii = read(q) e Ij = write(q) Se I i vier antes de I j, então T i não lê o valor de Q que é escrito por T j na instrução I j. Se I j vier antes de I i, então T i lê o valor de Q que é escrito por T j. Assim, a ordem de I i e I j importa.
25 Serialização em Conflito 3. Ii = write(q) e Ij = read(q) A ordem de I i e I j importa por razões semelhantes às do caso anterior. 4. Ii = write(q) e Ij = write(q) Como ambas as instruções são operações de escrita, a ordem dessas instruções não afeta T i ou T j. Entretanto, o valor obtido pela próxima instrução read(q) em S é afetado, já que somente o resultado da última das duas instruções write(q) é preservado no banco de dados. Se não houver nenhuma outra instrução de write(q) depois de I i e I j em S, então a ordem de I i e I j afeta diretamente o valor final de Q no que se refere ao estado do banco de dados após a execução da escala S.
26 Serialização em Conflito Diz-se que duas instruções entram em conflito se elas são operações pertencentes a transações diferentes, agindo no mesmo item de dado, e pelo menos uma dessas instruções é uma operação de escrita. T1 read(a) write(a) read(b) write(b) T2 read(a) write(a) read(b) write(b) A instrução write(a) de T1 entra em conflito com a instrução read(a) de T2. Porém, a instrução write(a) e T2 não está em conflito com a instrução read(b) de T1.
27 Serialização em Conflito Seja I i e I j instruções consecutivas de uma escala de execução S. Se I i e I j são instruções de transações diferentes e não entram em conflito, então podemos trocar a ordem de I i e I j para produzir uma nova escala de execução S. Diz-se que S e S são equivalentes já que todas as instruções aparecem na mesma ordem em ambas as escalas de execução com exceção de I i e I j, cuja ordem não importa.
28 Serialização em Conflito Ainda segundo a escala S, a instrução write(a) de T2 não entra em conflito com a instrução read(b) de T1. Então, é permitido mudar a ordem dessas instruções para gerar uma escala de execução equivalente. T1 read(a) write(a) read(b) write(b) T2 read(a) write(a) read(b) write(b) Em relação a um mesmo estado inicial do sistema, ambas as escalas (S e esta) produzem o mesmo estado final no sistema.
29 Serialização em Conflito Se as seguintes trocas de instruções não-conflitantes forem feitas: read(b) de T1 por read(a) de T2; write(b) de T1 por write(a) de T2; write(b) de T1 por read(a) de T2... uma escala com execuções seriais será obtida. Assim mostrou-se que a escala S é equivalente, por conflito, a uma escala seqüencial. Essa equivalência garante que para um mesmo estado inicial do sistema, a escala S produzirá o mesmo estado final produzido por essa escala seqüencial.
30 Serialização por Conflito Se uma escala de execução S puder ser transformada em outra, S, por uma série de trocas de instruções não-conflitantes, dizemos que S e S são equivalentes por conflito. O conceito de equivalência por conflito leva ao conceito de serialização por conflito. Uma escala de execução S é serializável por conflito se ela é equivalente por conflito a uma escala de execução seqüencial.
31 Serialização por Conflito A escala abaixo não é serializável por conflito pois não é equivalente em conflito nem à escala seqüencial <T3,T4> nem <T4,T3>. T3 T4 read(a) write(a) write(a)
32 Serialização por Conflito A escala abaixo não é serializável por conflito, mas produz o mesmo resultado que uma escala seqüencial. Confira. T1 T2 read(a); A := A 50; write(a); read(b); B := B 10; write(b); read(b); B := B + 50; write(b); read(a); A := A + 10; write(a);
33 Teste de serialização por conflito Seja S uma escala. Para saber se ela é serializável em relação às operações conflitantes é necessário criar um grafo de precedência para S. G = (V,E) em que V é um conjunto de vértices e E é um conjunto de arestas. O conjunto de vértices é composto por todas as transações que participam da escala. O conjunto de arestas consiste em todas as arestas Ti Tj para as quais uma das seguintes condições é verdadeira: Ti executa write(q) antes de Tj executar read(q); Ti executa read(q) antes de Tj executar write(q); Ti executa write(q) antes de Tj executar write(q);
34 Teste de serialização por conflito Se existir uma aresta Ti tj no grafo de precedência, então, em qualquer escala seqüencial S equivalente a S, Ti deve aparecer antes de Tj. Exemplo: T1 T2 read(a); A := A 50; write(a); read(b); B := B + 50; write(b); read(a); temp := A * 0,1; A := A temp; write(a); read(b); B := B + temp; write(b); T1 T2
35 Teste de serialização por conflito Exemplo: T1 read(a) A := A - 50 write(a) read(b) B := B + 50 write(b) T2 read(a) temp := A * 0,1 A := A temp write(a) read(b) B := B + temp; write(b) T1 T2 Ciclo no grafo: se o grafo de precedência possui ciclo, então a escala S não é serializável por conflito. A ordem de serialização pode ser obtida por meio da classificação topológica, que estabelece uma ordem linear para a escala consistente com a ordem parcial do grafo de precedência.
36 API para Transações - Hibernate Session session = sessions.opensession(); Transaction tx = null; //org.hibernate.transaction try { tx = session.begintransaction(); //Abre Transação acaoexecutada1(); acaoexecutada2(); acaoexecutada3(); tx.commit(); //Confirma Transação } catch (Exception e) { tx.rollback(); //Desfaz operações em caso de erro }finally { session.close(); }
37 Flushing Processo de sincronizar os dados em sessão (memória) com o banco de dados; Sincronização nem sempre ocorre no commit(); Mudanças no escopo do Session não são propagadas imediatamente para o banco de dados.
38 Flushing Flushing ocorre quando: Quando é dado commit na transação; Quando o método Session.flush() é executado; Algumas ocasiões quando uma consulta é executada (onde alterações influenciam o resultado da consulta).
39 Flushing com commit Session sessao = sf.opensession(); Transaction tx = sessao.begintransaction(); Autor autor = (Autor) sessao.get(autor.class, 10); System.out.println(autor.getNome()); autor.setnome( José da Silva"); System.out.println("Antes Commit"); tx.commit(); sessao.close();
40 Flushing com commit Hibernate: select autor0_.id_autor as id1_0_0_, autor0_.nome as nome0_0_, autor0_. as 0_0_, autor0_.endereco as endereco0_0_, autor0_.sexo as sexo0_0_ from Autor autor0_ where autor0_.id_autor=? José da Silva Antes Commit Hibernate: update Autor set nome=?, =?, endereco=?, sexo=? where id_autor=?
41 Flushing com Session.flush() Session sessao = sf.opensession(); Transaction tx = sessao.begintransaction(); Autor autor = (Autor) sessao.get(autor.class, 10); System.out.println(autor.getNome()); autor.setnome( José da Silva"); sessao.flush(); System.out.println("Antes Commit"); tx.commit(); sessao.close();
42 Flushing com Session.flush() Hibernate: select autor0_.id_autor as id1_0_0_, autor0_.nome as nome0_0_, autor0_. as 0_0_, autor0_.endereco as endereco0_0_, autor0_.sexo as sexo0_0_ from Autor autor0_ where autor0_.id_autor=? José da Silva Hibernate: update Autor set nome=?, =?, endereco=?, sexo=? where id_autor=? Antes Commit
43 Flushing com Consulta Session sessao = sf.opensession(); Transaction tx = sessao.begintransaction(); Autor autor = (Autor) sessao.get(autor.class, 10); System.out.println(autor.getNome()); autor.setnome( José da Silva"); Criteria criteria = sessao.createcriteria(autor.class); criteria.add(expression.eq("nome", " José da Silva ")); Autor autorbd = (Autor) criteria.uniqueresult(); if (autorbd == null){ System.out.println("Nao existe"); }else{ System.out.println("Existe = " + autorbd.getnome()); } System.out.println("Antes Commit"); tx.commit(); sessao.close();
44 Modos de Flushing Definidos a partir de Session.setFlushMode(): FlushMode.AUTO: Padrão. Flush antes das consultas apenas se alterações dentro da transação alterar seus resultados. FlushMode.COMMIT: Sincronização do estado em memória com o BD apenas no fim da transação. Chamada ao commit. FlushMode.MANUAL: Sincronização feita apenas com chamada explícita do método flush().
45 Níveis de Isolamento de uma Transação Especifica quais dados estão visíveis a uma sentença dentro de uma transação; Pode-se usar: Processo de locking: bloqueio temporário de acesso a um dado; Modelo MCC: Multiversion Concorrency Control.
46 Fenômenos Devido à Quebra de Isolamento Dirty Read (Leitura Suja): Uma transação (1) consegue acessar Modificações feitas por outra transação (2) ainda não finalizada; As duas transações 1 e 2 ocorrem concorrentemente; Pode ocorrer erro durante a transação 2 (antes do commit) e transação 1 trabalhar com dados incorretos.
47 Níveis de Isolamento de uma Transação Nonrepeatable Read (Leitura quenão pode ser repetida): Uma transação lê o mesmo dado duas vezes e constata que as leituras possuem valores diferentes: Transação A lê linha x; Transação B lê e modifica linha x e finaliza a transação; Transação A lê novamente linha x; Transação A possui duas leituras de x com valores diferentes.
48 Níveis de Isolamento de uma Transação Phantom Read (Leitura Fantasma): Na mesma transação uma consulta é executada mais de uma vez e retorna resultados diferentes.
49 Níveis de Isolamento
50 Read Uncommited: Não Recomendado, pois lê inconsistências e informações parciais; Para bancos de dados somente leitura.
51 Read Commited: Transação 1 só visualiza dados modificados na transação 2 se a transação 2 tiver sido finalizada. Transação só acessa dados consistentes; Se a transação 2 der erro, transação 1 realiza atualização de acordo com dado anterior; Se transação 2 der certo: Transação 1 ignora atualização se linha tiver sido excluída ou; Transação 1 aplica atualização considerando dado atualizado pela transação 2.
52 Repeatable Read: Não permite que uma transação sobrescreva os dados alterados por uma transação concorrente; Serializable: Nível mais rigoroso; Execução serial das transações.
53 Configurando o Nível de Isolamento Níveis: 1: Read Uncommited 2: Read Commited 4: Repeatable Read 8: Serializable Configurando no hibernate.cfg.xml: <property name="hibernate.connection.isolation"> 2 </property>
54 Controle de Concorrência Quando uma ou mais transações que ocorrem concorrentemente acessam e atualizam o mesmo dado, isso pode gerar inconsistência. Deve-se, portanto, controlar a concorrência!
55 Mecanismos de Locking Pessimista: T1 lê um dado e tem a intenção de atualizá-lo; O dado será bloqueado e liberado somente após a atualização. Otimista: T1 lê um dado, porém o mesmo não é bloqueado; Caso T2 tenha lido o dado concorrentemente com T1 e tente atualizá-lo após T1, ocorrerá um erro de violação de concorrência.
56
57 Locking Otimista Utilização do Padrão Version Number; Versionar numericamente os dados de uma linha de uma tabela.
58
59 Locking Otimista package dominio; = "conta_corrente ) public class ContaCorrente { //Atributo utilizado para = "versao") private int versao; = = GenerationType.AUTO) private int id; private double saldo; //...
60 Locking Otimista Dentre os diversos atributos da classe está o atributo denominado versao, do tipo inteiro, que irá guardar a versão atual das linhas da tabela. A tabela conta_corrente também deve ter uma coluna para onde esse atributo versao será mapeado: CREATE TABLE conta_corrente ( id_conta_corrente integer NOT NULL, saldo numeric(16,2) NOT NULL, versao integer NOT NULL, CONSTRAINT pk_conta_corrente PRIMARY KEY (id_conta_corrente) ) WITHOUT OIDS; ALTER TABLE conta_corrente OWNER TO postgres; De acordo com o mapeamento feito na classe ContaCorrente, toda vez que uma determinada linha for atualizada na base de dados, a sua coluna versao será incrementada de uma unidade, indicando a nova versão dos dados.
61 Locking Otimista //... Transaction tx = session.begintransaction(); ContaCorrente conta = new ContaCorrente(); conta.setsaldo(1000); //Persistência do objeto conta session.save(conta); tx.commit(); //... Considere a criação de um objeto ContaCorrente, que é persistido na base de dados. A tupla será inserida e a versão atual da mesma será zero, correspondendo à primeira versão.
62 Locking Otimista //... Transaction tx = session.begintransaction(); ContaCorrente conta = (ContaCorrente) session.get(contacorrente.class, 65); //Modificando valor do saldo conta.setsaldo(12250); //Atualizacao do objeto conta corrente session.saveorupdate(conta); tx.commit(); //... Essa operação atualiza os dados da conta corrente, que tem a coluna versao incrementada de uma unidade, atualizando assim a informação de versionamento da tupla da tabela.
63 Locking Otimista Outra forma de implementar o lock otimista é utilizando um atributo que represente a versão do dado como sendo do tipo timestamp. Neste caso, a classe ContaCorrente citada ao invés de ter um atributo inteiro para guardar a versão do dado, teria uma atributo do tipo java.util.date para guardar o instante no tempo da última atualização. Neste exemplo, a tabela conta_corrente deve conter uma coluna do tipo timestamp denominada data_ultima_atualizacao.
64 Locking guardando data e hora //... //Atributo utilizado para = private Date data; //...
65 Locking Otimista 3ª Abordagem Se a tabela não possuir uma coluna para guardar a versão do dado ou a data da última atualização, com Hibernate, há uma outra forma de implementar o lock otimista, porém essa abordagem só deve ser utilizada para objetos que são modificados e atualizados em uma mesma sessão (Session).
66 Locking Otimista 3ª = optimisticlock = OptimisticLockType.ALL, dynamicupdate = true) public class ContaCorrente { //Atributos = = GenerationType.AUTO) private int id; private double saldo; //Outros atributos e Métodos getters e setters //... }
67 Locking Otimista 3ª Abordagem Nessa abordagem, quando uma determinada linha vai ser atualizada, o Hibernate verifica se os dados dessa linha correspondem aos mesmos dados que foi recuperado. Caso afirmativo, a atualização é efetuada. Para isso, no mapeamento da tabela, deve-se utilizar o atributo optimisticlock = OptimisticLockType.ALL da além da anotação javax.persistence.entity.
68 Locking Otimista 3ª Abordagem UPDATE CONTA_CORRENTE SET SALDO = 1500 WHERE ID_CONTA = 104 AND SALDO = 1000 AND DESCRICAO = "DESCRICAO DA CONTA" AND ID_CORRENTISTA = 23 Em uma atualização solicitada na tabela, a SQL equivalente seria gerada para a atualização. Neste exemplo, considera-se a atualização do saldo para R$ 1.500,00 de uma determinada conta de saldo R$ 1.000,00.
69 Locking Pessimista Bloqueio do dado usado por uma transação até ela ser finalizada; Utiliza a construção SQL SELECT FOR UPDATE para bloquear o dado até que o mesmo seja atualizado. Exemplo: //Sem Lock Transaction tx = session.begintransaction(); Aluno aluno = (Aluno) session.get(aluno.class, alunoid); aluno.setnome("novo Nome"); tx.commit();
70 Locking Pessimista // Exemplo com Lock Transaction tx = session.begintransaction(); Aluno aluno = (Aluno) session.get( Aluno.class, alunoid, LockMode.UPGRADE); aluno.setnome("novo Nome"); tx.commit();
71 Locking Pessimista O Hibernate fornece um conjunto de modos de lock (constantes disponíveis na classe LockMode) que podem ser utilizados para implementar o lock pessimista. O método get do objeto Session pode receber como terceiro argumento para implementar o lock pessimista as constantes a seguir.
72
73 Locking Pessimista Lock.NONE: Só realiza a consulta ao banco se o objeto não estiver no cache. Lock.READ: Ignora os dados no cache e faz verificação de versão para assegurar-se de que o objeto em memória é o mesmo que está no banco. Lock.UPDGRADE: Ignora os dados no cache, faz verificação de versão (se aplicável) e obtém lock pessimista do banco (se suportado). Lock.UPDGRADE_NOWAIT: Mesmo que UPGRADE, mas desabilita a espera por liberação de locks, e dispara uma exceção se o lock não puder ser obtido. Caso especial do Oracle que utiliza a cláusula SELECT... FOR UPDATE NOWAIT para realizar locks. Lock.WRITE: Obtida automaticamente quando o Hibernate realiza alguma inserção ou atualização na base de dados.
74 Fontes Bibliográficas: Sistemas de Banco de Dados. (Cap. 13) Abraham Silberchatz, Henry F. Korth, S Sudarshan. 3a Ed. Makron Books, Sistemas de Banco de Dados. (Cap. 17) Ramez Elmarsri e Sham Navathe. 4a Ed. Pearson, Java Persistence com Hibernate. Christian Bauer, Gavin King. Editora Ciência Moderna, Hibernate com Anotações. Raphaela Galhardo Fernandes, Gleydson de A. Ferreira Lima. Apostila, 2007.
Controle de Transação
Curso: Ciência da Computação Disciplina: Banco de Dados Campus Lages Controle de Transação Prof. Edjandir C. Costa edjandir.costa@ifsc.edu.br Agenda Conceitos de transação e sistema Propriedades desejáveis
Leia maisBDII SQL TRANSAÇÃO Revisão 2
exatasfepi.com.br BDII SQL TRANSAÇÃO Revisão 2 André Luís Duarte Honra a teu pai e a tua mãe (que é o primeiro mandamento com promessa), para que te vá bem, e sejas de longa vida sobre a terra.(ef 6:2,3)
Leia maisSumário. Introdução a Transações
Sumário 1 Introdução ao Processamento de Consultas 2 Otimização de Consultas 3 Plano de Execução de Consultas 4 Introdução a Transações 5 Recuperação de Falhas 6 Controle de Concorrência 7 Fundamentos
Leia maisse a transação falhar entre os 3 passos 4 6, os passos 1 3 ficam sem efeito 4 read(b) Consistência
Bases de Dados Transacções Propriedades ACID 1 T Atomicidade i : read(a) 2 A := A 50 se a transação falhar entre os 3 write(a) passos 4 6, os passos 1 3 ficam sem efeito 4 read(b) Consistência 5 B := B
Leia maisProcessamento de Transações. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri
Processamento de Transações Laboratório de Bases de Dados Introdução Ambiente multiusuário vários usuários utilizam o mesmo sistema ao mesmo tempo múltiplos programas (transações) compartilham a mesma
Leia maisse a transacção falhar entre os passos 4 6, os passos 1 3 ficam sem efeito
Bases de Dados Transacções Propriedades ACID Atomicidade se a transacção falhar entre os passos 4 6, os passos 1 3 ficam sem efeito Consistência a soma A+B tem de ser igual antes e depois Isolamento nenhuma
Leia maisBanco de Dados I. Aula 18 - Prof. Bruno Moreno 22/11/2011
Banco de Dados I Aula 18 - Prof. Bruno Moreno 22/11/2011 Plano de Aula Introdução SPT Sistemas monousuários e multiusuários Sistemas multiprogramados Transação - Definição Concorrência de Transações Log
Leia maisBanco de Dados I 6 Transações e Controle de Concorrência
Banco de Dados I 6 Transações e Controle de Concorrência Grinaldo Lopes de Oliveira (grinaldo( grinaldo@gmail.com) Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas * Material com créditos
Leia maisGerenciamento de Transações em Banco de Dados
Gerenciamento de Transações em Banco de Dados Daniela Barreiro Claro MAT A60 Aula 13 Introdução à Transação 2 Transação É uma coleção de operações que formam uma única unidade lógica As transações acessam
Leia maisBD II (SI 587) Transações em Banco de Dados. Prof. Josenildo Silva
BD II (SI 587) Transações em Banco de Dados Prof. Josenildo Silva jcsilva@ifma.edu.br Nota Estes slides são adaptados de Database System Concepts, 6th Ed. Silberschatz, Korth and Sudarshan distribuídos
Leia maisIntrodução. Processamento de Transações. Introdução. Introdução. Transações. Transações
Ciência da Computação GBC043 Sistemas de Banco de Dados Processamento de Transações Profa. Maria Camila Nardini Barioni camila.barioni@ufu.br Bloco B - sala 1B137 Introdução... SGBDs são em geral multi-usuários
Leia maisIntrodução. Processamento de Transações. Introdução. Introdução. Transações. Transações. Transação
Pós-graduação em Ciência da Computação CCM-202 Sistemas de Banco de Dados Processamento de Transações Profa. Maria Camila Nardini Barioni camila.barioni@ufabc.edu.br Bloco B - sala 937 Introdução... SGBDs
Leia maisProcessamento de Transações. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri
Processamento de Transações Banco de Dados Introdução Ambiente multiusuário vários usuários utilizam o mesmo sistema ao mesmo tempo múltiplos programas (transações) compartilham a mesma CPU Forma de execução
Leia maisProcessamento de Transações
Processamento de Transações Processamento de Transações Transações Atômicas: Unidades lógicas de processamento sobre um banco de dados. Controle de Concorrência: Garantia de que múltiplas transações ativadas
Leia maisProcessamento de Transações
Processamento de Transações Processamento de Transações ) Transações Atômicas: Unidades lógicas de processamento sobre um banco de dados. ) Controle de Concorrência: Garantia de que múltiplas transações
Leia maisSistemas de Informação e Bases de Dados 2012/2013. Transações. Alberto Sardinha
Sistemas de Informação e Bases de Dados 2012/2013 Transações Alberto Sardinha Sumário! Conceito de Transação! Propriedades ACID! Transações em SQL! Referências Raghu Ramakrishnan, Database Management Systems,
Leia maisCriando Transações. Prof. Fernanda Baião. TbEstoqueLivros. TbEstoqueLivros. ID IDLoja IDLivro Estoque
Criando Transações Prof. Fernanda Baião fernanda.baiao@uniriotec.com.br SQL Tabelas Exemplo TbAutor TbAutor TbEditora CNPJ TbEditora CNPJ TbLivro ISBN Autor Editora TbLivro ISBN Autor Editora TbLoja CNPJ
Leia maisProcessamento de Transações
Arquitetura de Banco de Dados Processamento de Transações Carolina Nogueira Marcelo Eduardo Cardoso Rodrigo Dlugokenski Vítor De Araújo Bancos de dados Single-users versus Multiusers classificação baseada
Leia maisPCS3413. Engenharia de So-ware e Banco de Dados. Aula 21. Escola Politécnica da Universidade de São Paulo
PCS3413 Engenharia de So-ware e Banco de Dados Aula 21 Escola Politécnica da Universidade de São Paulo 1 TRANSAÇÃO E CONTROLE DE CONCORRÊNCIA Transação unidade de execução de programa que acessa e, possivelmente,
Leia maisANÁLISE E PROJETO DE BANCO DE DADOS
ANÁLISE E PROJETO DE BANCO DE DADOS PROCESSAMENTO DE TRANSAÇÕES FELIPE G. TORRES INTRODUÇÃO AO PROCESSAMENTO DE TRANSAÇÕES Transação pode ser conceituada como unidades lógicas de processamento de banco
Leia maisrevisão Controle de Concorrência com Locks Bancos de Dados I 2015/02
Bancos de Dados I 2015/02 revisão Controle de Concorrência com Locks Transações em SQL Prof. Altigran Soares da Silva Atomico=transaction manager Consistencia=controle concorrencia/commit Isolamento=controle
Leia maisSistemas Distribuídos Transações
Sistemas Distribuídos Transações Vinícius Fernandes Soares Mota 1 2 Transações Transação: Unidade lógica de trabalho abrange um conjunto de operações de manipulação de dados que executam uma única tarefa
Leia maisTRANSAÇÕES E CONTROLE DE CONCORRÊNCIA Em resumo: Transações: clientes podem necessitar que um servidor execute uma sequência de requisições de forma a
Transações Transações Uma transação é um conjunto de operações que deve ser executado de forma atômica Atômica : se um erro ocorre no meio da transação, devemos voltar ao estado consistente anterior. Atômica
Leia maisAula 03. Evandro Deliberal
Aula 03 Evandro Deliberal evandro@deljoe.com.br https://www.linkedin.com/in/evandrodeliberal Concorrência Método Sincronização Problemas: Perda de consistência Acesso a dados inconsistentes Perda de atualizações
Leia maisOrientações. Transações - PostgreSQL. Relembrando: Propriedades desejáveis. Abrir Prompt de comando ROLLBACK
Ciência da Computação GBC043 Sistemas de Banco de Dados Orientações Transações - PostgreSQL Profa. Maria Camila Nardini Barioni camila.barioni@ufu.br Bloco B - sala 1B137 Executar os comandos conforme
Leia maisProcessamento de Transações II
UNIVERSIDADE FEDERAL DO MARANHÃO - UFMA Banco de Dados II Processamento de Transações II Carlos Eduardo Portela Serra de Castro * Processamento de Transações II Sumário Definindo Plano de Execução Baseado
Leia maisBases de Dados 2013/2014 Transações. Helena Galhardas. Sumário!
Bases de Dados 2013/2014 Transações Helena Galhardas Sumário! Conceito de Transação! Propriedades ACID! Conflitos e Serializabilidade! Recuperabilidade! Protocolos de controlo de concorrência! Transações
Leia maisPROCESSAMENTO DE TRANSAÇÕES
UNINGÁ UNIDADE DE ENSINO SUPERIOR INGÁ FACULDADE INGÁ CIÊNCIA DA COMPUTAÇÃO PROCESSAMENTO DE TRANSAÇÕES Profº Erinaldo Sanches Nascimento Objetivos Discutir a necessidade de controle de concorrência e
Leia maisBANCO DE DADOS 2 TRANSAÇÃO
BANCO DE DADOS 2 TRANSAÇÃO Prof. Edson Thizon Reconstrução ( recovery ) Idéia básica Em algum momento no tempo, todo sistema computacional apresentará uma falha. O SGBD deve incorporar mecanismos de proteção
Leia maisSistemas de Bases de Dados 2.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas
DI-FCT/UNL 6 de junho de 2018 Sistemas de Bases de Dados 2.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas Nome: Grupo 1 (7 valores) 1 a) Quais são as 4 propriedades ACID que
Leia maisInstituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP
Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Campus de Caraguatatuba Tecnólogo em Análise e Desenvolvimento de Sistemas 1 0 Semestre de 2013 BD I Prof. Lineu Mialaret Aula 25:
Leia maisProcessamento de Transações
Processamento de Transações Banco de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM é
Leia maisMapeando Relacionamentos Entre Classes com Anotações Hibernate Por: Raphaela Galhardo Fernandes Gleydson de Azevedo F. Lima
Classes com Anotações Hibernate Por: Raphaela Galhardo Fernandes Gleydson de Azevedo F. Lima Resumo Este tutorial destina-se a apresentar alguns exemplos de mapeamentos de associações/relacionamentos entre
Leia maisSumário. Recuperação de Falhas
Sumário 1 Introdução ao Processamento de Consultas 2 Otimização de Consultas 3 Plano de Execução de Consultas 4 Introdução a Transações 5 Recuperação de Falhas 6 Controle de Concorrência 7 Fundamentos
Leia maisTRANSAÇÕES: SISTEMA DE RECUPERAÇÃO E CONTROLE DE CONCORRÊNCIA
UNIDADEB Teoria de Banco de Dados Unidade B TRANSAÇÕES: SISTEMA DE RECUPERAÇÃO E CONTROLE DE CONCORRÊNCIA Transações Quando estudamos os bancos de dados, utilizamos vários recursos sem entender como eles
Leia maisSumário. Controle de Concorrência
Sumário 1 Introdução ao Processamento de Consultas 2 Otimização de Consultas 3 Plano de Execução de Consultas 4 Introdução a Transações 5 Recuperação de Falhas 6 Controle de Concorrência 7 Fundamentos
Leia maisControle de Transações. Banco de Dados André Luiz do Vale Soares
Controle de Transações Banco de Dados André Luiz do Vale Soares 1 Transações de Banco de Dados O que são transações em BDs? São um conjunto de instruções SQL, tratadas como uma UNIDADE, ou seja, todas
Leia maisSistemas de Bases de Dados 2.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas
DI-FCT/UNL 6 de junho de 2018 Sistemas de Bases de Dados 2.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas N. º : Nome: Grupo 1 (7 valores) 1 a) Quais são as 4 propriedades ACID
Leia maisConcorrência. Prof. Márcio Bueno. Material do Prof. Paulo Pires
Concorrência Prof. Márcio Bueno {bd2tarde,bd2noite}@marciobueno.com Material do Prof. Paulo Pires Controle de Concorrência SGBD sistema multiusuário em geral diversas transações executando simultaneamente
Leia maise c d o o r B s s n i : l e F s
e d o t n e m a s s e c o r P I I D B s e õ ç a s n a Tr Leite pe i l e F s i Lu : r o s s e Prof Contato luisleite@recife.ifpe.edu.br Professorluisleite.wordpress.com Ciclo de três aulas Processamento
Leia maisAdministração e Optimização de BDs
Departamento de Engenharia Informática 2010/2011 Administração e Optimização de BDs Mini-Projecto 3 A entregar a 7 de Maio de 2011 2º semestre A resolução deve ser claramente identificada com o número
Leia maisGBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql
GBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/sbd UFU/FACOM/BCC Transações Ver conjunto de slides na opção Transações
Leia maisOracle Comandos para Processamento de Transações
Oracle Comandos para Processamento de Transações Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri Transação Unidade lógica de trabalho contém um ou mais comandos SQL para manipulação
Leia maisBD II (SI 587) Técnicas de Recuperação. Josenildo Silva.
BD II (SI 587) Técnicas de Recuperação Josenildo Silva jcsilva@ifma.edu.br Nota Estes slides são baseados nos slides disponibilizados pelos autores ELMASRI e NAVATHE, para o livro Sistemas de Banco de
Leia maisCONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento.
CONCORRÊNCIA 1. Introdução O termo concorrência se refere ao fato de que os SGBDs em geral permitem que muitas transações tenham acesso ao mesmo banco de dados ao mesmo tempo. Em um sistema desse tipo,
Leia maisProcessamento de INDUSTRIA 4.0. Big Data. Aula #8 - Transações e concorrência MARMELADA NO RING, FONTE: ESTADAO EDUARDO CUNHA DE ALMEIDA
INDUSTRIA 4.0 Processamento de Big Data MARMELADA NO RING, FONTE: ESTADAO Aula #8 - Transações e concorrência EDUARDO CUNHA DE ALMEIDA Agenda - Transações - Atomicidade - Consistência - Isolamento - Durabilidade
Leia maisLista de Exercícios 12 Transações
UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO SCC0141 - Bancos de Dados e Suas Aplicações Prof. José Fernando Rodrigues Júnior 2º semestre
Leia maisBanco de Dados II. Transações (Oracle) Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.
Banco de Dados II Transações (Oracle) Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com Apresentação Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Ementa Gerenciamento de
Leia maisConceitos. Gestão de Transacções. Transacção. Conceitos e Propriedades. Controlo de Concorrência. Recuperação. Transacções no SGBD Oracle
Conceitos e Propriedades Recuperação Transacções no SGBD Oracle Conceitos Transacção Uma acção ou um conjunto de acções, realizadas por um único utilizador ou programa de aplicação que acedem ou alteram
Leia maisBanco de Dados. Controle de Concorrência e Recuperação de Transação. Prof. João Eduardo Ferreira Prof. Osvaldo Kotaro Takai
Banco de Dados Controle de Concorrência e Recuperação de Transação Última atualização: 20 de janeiro de 2006 Prof. João Eduardo Ferreira Prof. Osvaldo Kotaro Takai Tópicos Modelo Transacional Clássico
Leia maisLock. Administração de Banco de Dados
Lock Administração de Banco de Dados 1 Tópicos o Lock o Tipos de Lock o Recursos que podem ser bloqueados o Dica de Lock sobre uma Tabela o Dica de Lock em uma Sessão o Compatibilidade entre Locks 2 Lock
Leia maisGerência de Transações Distribuídas
Transação Gerência de Transações Distribuídas Uma é uma unidade de computação consistente e confiável Transparência de concorrência Transparência de falhas Fernanda Baião baiao@cos.ufrj.br Banco de dados
Leia maisBD II (SI 587) Controle de Concorrência. Josenildo Silva.
BD II (SI 587) Controle de Concorrência Josenildo Silva jcsilva@ifma.edu.br Nota Estes slides são baseados nos slides disponibilizados pelos autores ELMASRI e NAVATHE, para o livro Sistemas de Banco de
Leia maisBCD29008 Banco de dados
BCD29008 Banco de dados Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 31 de julho de 2017 1/24 Apresentação
Leia maisBanco de Dados II. Transações. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.
Banco de Dados II Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com http://www.bolinhabolinha.com Apresentação Prof. Rodrigo Rocha prof.rodrigorocha@yahoo.com Ementa Gerenciamento de : Recuperação; Concorrência.
Leia maisBCD29008 Banco de dados
BCD29008 Banco de dados Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/bcd 21 de fevereiro de 2018 1/24 Apresentação
Leia maisAvisos. Processamento de Transações Controle de Concorrência. Roteiro da aula. Tipos de bloqueio: Binários. Protocolos baseados em bloqueio
Ciência da Computação GBC043 Sistemas de Banco de Dados Processamento de Transações Controle de Concorrência Avisos Lista de exercícios adicionais na página da disciplina Profa. Maria Camila Nardini Barioni
Leia maisSistemas de Gestão de Bases de Dados e-fólio B. Resolução e Critérios de Correção
21103 - Sistemas de Gestão de Bases de Dados 2015-2016 e-fólio B Resolução e Critérios de Correção PARA A RESOLUÇÃO DO E-FÓLIO, ACONSELHA-SE QUE LEIA ATENTAMENTE O SEGUINTE: 1) O e-fólio é constituído
Leia maisControle de transações em SQL
Transações Controle de transações em SQL Uma transação é implicitamente iniciada quando ocorre uma operação que modifica o banco de dados (INSERT, UPDATE ou DELETE). Uma transação pode terminar normalmente
Leia maisUNIVERSIDADE FEDERAL DO MARANHÃO - UFMA. Banco de Dados II. Recuperação. Carlos Eduardo Portela Serra de Castro
UNIVERSIDADE FEDERAL DO MARANHÃO - UFMA Banco de Dados II Recuperação Carlos Eduardo Portela Serra de Castro * Sumário 1 Conceitos 2 Atualização adiada 3 Atualização imediata 4 Paginação shadow 5 Aries
Leia maisSistemas de Gerência de Bancos de Dados
Sistemas de Gerência de Bancos de Dados 4 - Consultas e Transações 4.4 - Gerência de Transações 1 Conceito de Transação Transação: seqüência de ações elementares que deverão ser executadas como se fossem
Leia maiserro lógico: a transacção não pode completar devido a condição de erro erro de sistema: o sistema entrou num estado que impede a transacção
Bases de Dados Recuperação Classificação de falhas Falha de transacção erro lógico: a transacção não pode completar devido a condição de erro erro de sistema: o sistema entrou num estado que impede a transacção
Leia maisde Bases de Dados Exame 1
Ano lectivo 2011/2012 2 o semestre Administração e Optimização de Bases de Dados Exame 1 Regras O exame tem a duração de 2 horas. O exame é individual e com consulta. Poderá consultar o livro, slides da
Leia maisJPA Demonstração das estratégias optimistic locking e pessimistic locking
JPA Demonstração das estratégias optimistic locking e pessimistic locking Locking é uma técnica para tratamento de concorrência em transações em bases de dados. Quando duas ou mais transações em bases
Leia maisContato. professorluisleite.wordpress.com
BD II Controle de Concorrência Professor: Luis Felipe Leite Contato luisleite@recife.ifpe.edu.br professorluisleite.wordpress.com Ciclo de três aulas Processamento de transações. Controle de Concorrência.
Leia maisde Bases de Dados Exame 1
Ano lectivo 009/0 o semestre Administração e Optimização de Bases de Dados Exame Regras O exame tem a duração de horas. O exame é individual e com consulta Só poderá abandonar a sala ao fim de hora, mediante
Leia maisTriggers(Gatilhos) Tiago Alves de Oliveira
Triggers(Gatilhos) Tiago Alves de Oliveira tiago.alves@uemg.br Triggers (Gatilhos) Um TRIGGER ou gatilho associado a uma tabela, definido para ser disparado, respondendo a um evento em particular; Comandos
Leia maisBD II (SI 587) Algoritmos de recuperação Avançado e ARIES. Josenildo Silva.
BD II (SI 587) Algoritmos de recuperação Avançado e ARIES Josenildo Silva jcsilva@ifma.edu.br Nota Estes slides são baseados nos slides disponibilizados pelo autor SILBERSCHATZ, para o livro Sistemas de
Leia maisBases de Dados 2013/2014 Controlo de Concorrência
Bases de Dados 2013/2014 Controlo de Concorrência Helena Galhardas Sumário Serialização e Protocolos de Locking! 2PL Two Phase Locking! Tratamento de Deadlocks! Níveis de Isolamento em SQL! Aquisição Automática
Leia maisTécnicas de Controle de Concorrência
Técnicas de Controle de Concorrência Principais Técnicas bloqueio (locking) timestamp Técnicas Baseadas em Bloqueio Técnicas mais utilizadas pelos SGBDs Princípio de funcionamento controle de operações
Leia maisResolução e Critérios de Correção U.C Sistemas de Gestão de Bases de Dados. 13 de julho de 2015 INSTRUÇÕES
Resolução e Critérios de Correção U.C. 21103 Sistemas de Gestão de Bases de Dados 13 de julho de 2015 Ministério da Educação e Ciência p-fólio INSTRUÇÕES O tempo de duração da prova de p-fólio é de 90
Leia maisA instância Oracle é composta de :
Conceitos básicos da arquitetura do Oracle Uma instância Oracle consiste na System Global Area (SGA) e um conjunto de processos de segundo plano (background processes). Quando uma instância é iniciada,
Leia maisResolução e Critérios de Correção U.C Sistemas de Gestão de Bases de Dados. 13 de fevereiro de 2014 INSTRUÇÕES
Resolução e Critérios de Correção U.C. 21103 Sistemas de Gestão de Bases de Dados 13 de fevereiro de 2014 Ministério da Educação e Ciência p-fólio INSTRUÇÕES O tempo de duração da prova de p-fólio é de
Leia maisRevisão e Introdução 23/05/12. Controle Distribuído da Concorrência. Revisão de Conceitos. Revisão de Conceitos. Transação Operação
Controle Distribuído da Concorrência Controle Distribuído da Concorrência REVISÃO E INTRODUÇÃO SERIALIZABILIDADE ALGORITMOS LOCKING-BASED Aluno: Walter Travassos Sarinho wts@cin.ufpe.br ALGORITMOS TIMESTAMP-BASED
Leia mais23/05/12. Conteúdo. Introdução ao gerenciamento de transações. Motivação. Motivação. Motivação. Motivação
Conteúdo Introdução ao gerenciamento de transações Aluno: Danusa Ribeiro drbc@cin.ufpe.br Professoras: Ana Carolina Salgado acs@cin.ufpe.br Bernadette Farias Lóscio - bfl@cin.ufpe.br Centro de Informática
Leia maisAdriano Maranhão TRANSAÇÕES
Adriano Maranhão TRANSAÇÕES DEFINIÇÃO Transação é uma unidade atômica de trabalho que atua sobre um banco de dados. Uma transação pode ser constituída por uma ou mais operações de acesso à base de dados.
Leia maisCONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo
CONCORRÊNCIA 1. Introdução Recursos exclusivos Não necessita controle Abundância de recursos compartilhados Controle necessário mas mínimo Harmonia, provavelmente não haverá conflito Recursos disputados
Leia maisMódulo II: Controle de. Concorrência. (Aulas 1 e 7) Clodis Boscarioli
Módulo II: Controle de Concorrência (Aulas 1 e 7) Clodis Boscarioli Agenda: Introdução a Controle de Concorrência; Protocolos baseados em Bloqueio; Protocolos baseados em Timestamp; Protocolos baseados
Leia maisSistemas Distribuídos. Ricardo Ribeiro dos Santos
Sistemas Distribuídos Ricardo Ribeiro dos Santos ricrs@ec.ucdb.br Curso de Engenharia de Computação UCDB Setembro/2003 Tópicos Sincronização em Sistemas Distribuídos Exclusão Mútua Transações Distribuídas
Leia mais6.1 Resumo das Características do Modelo Proposto
6 Comparação entre s de Execução de Transação em Ambiente de Computação Móvel Este capítulo tem por objetivo apresentar um estudo comparativo entre os mais significativos modelos de execução de transação
Leia maisVamos falar de Hibernate?
Vamos falar de Hibernate? Hibernate é um framework ORM (Object-Relationship Management) muito bacana que nos permite ter muita produtividade na manipulação de objetos a serem persistidos no banco de dados.
Leia maisTécnicas de Recuperação em Banco de Dados
Técnicas de Recuperação em Banco de Dados Daniela Barreiro Claro MAT A60 Aula 14 Recuperação em Banco de Dados 2 Falhas podem ocorrer em qualquer Sistema Catastroficas e não-catastroficas SGBD deve garantir
Leia maisMúltiplas Tabelas. Disciplina de Banco de Dados
Múltiplas Tabelas Uma das grandes características de um sistema de banco de dados relacional é a capacidade de interagir com múltiplas tabelas relacionadas. Precisamos lembrar que para relacionar tabelas
Leia maisSubsistema de Integridade Semântica
Restrições de Integridade Semântica Controle de valores válidos para os dados estados dos dados condizentes com os requisitos da aplicação transições de estados corretas O SGBD deve controlar esta integridade
Leia maisTRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):
TRANSAÇÕES 1. Introdução Transação Uma transação é uma unidade lógica de trabalho (processamento), formada por um conjunto de comando SQL, que tem por objetivo preservar a integridade e a consistência
Leia maisExercícios Módulo Banco de Dados I (08/07/2006)
UNIVERSIDADE FEDERAL DE VIÇOSA CENTRO DE CIÊNCIAS EXATAS E TECNOLOGICAS DEPARTAMENTO DE INFORMÁTICA Exercícios Módulo Banco de Dados I (08/07/2006) Marcelo Santos Daibert João Carlos da Silva Juiz de Fora
Leia maisTécnicas de Controle de Concorrência
Técnicas de Controle de Concorrência Pessimistas supõem que sempre ocorre interferência entre transações e garantem a serializabilidade enquanto a transação está ativa técnicas bloqueio (locking) timestamp
Leia maisBanco de dados. Prof. Emiliano S. Monteiro
Banco de dados Prof. Emiliano S. Monteiro Processamento de transações Sistema monousuário x multiusuário Um SGBD é monousuário se no máximo um usuário puder utilizá-lo de cada vez. Um SGBD é multiusuário
Leia maisSGBD. Definição. Funções básicas
Definição Sistema cujo objetivo principal é gerenciar o acesso e a correta manutenção dos dados armazenados em um banco dados. Funções básicas Métodos acesso Integrida Semântica Segurança Concorrência
Leia maisSistemas de Gerência de Bancos de Dados. 5 - Controle de Concorrência Tópicos Adicionais
Sistemas de Gerência de Bancos de Dados 5 - Controle de Concorrência 5.4 - Tópicos Adicionais 1 Problema dos "Fantasmas" "Hot Spots" Bloqueio em Árvores-B+ Tópicos 2 Problema dos "Fantasmas" Ações elementares
Leia mais