You are on page 1of 6

Violaes em transaes baseadas em nveis de isolamento

Janio Luiz Antunes1, Marcel Vincius Kohls1


1

Instituto de Informtica Instituto Federal Catarinense Campus Cambori (IFC) Rua Joaquim Garcia s/n Caixa Postal 16 88.340.000 Cambori SC Brasil janioantunes@hotmail.com, marcel@itcooper.com.br

Resumo. Este artigo consiste na pesquisa sobre os diferentes tipos de violaes em transaes que ocorrem nos SGBDs e nos diferentes nveis de isolamento que servem para evitar estas violaes. Ser apresentado uma breve explicao sobre os itens citados juntamente com alguns exemplos. No final do artigo h uma tabela em que apresentada a relao entre os problemas de concorrncia e os nveis de isolamento. Palavras-chave: SGBD, transaes, nveis de isolamento.

1. Transao de dados
Uma transao um processo de trabalho realizado dentro de um sistema de gerenciamento de banco de dados (ou similar) sobre os dados, e tratados de forma coerente e confivel, independente de outras transaes. As transaes em um ambiente de banco de dados tem dois propsitos principais: 1. Fornecer unidades confiveis de trabalho que permitam a recuperao correta de falhas e mantenham um banco de dados consistente, mesmo em casos de falha do sistema e quando a execuo interrompida (total ou parcialmente); 2. Fornecer isolamento entre os programas que acessam um banco de dados simultaneamente. Se este isolamento no fornecido o resultado programas possivelmente pode dar errado. Bancos de dados e outros armazenamentos de dados que tratam da integridade de dados como fundamental, muitas vezes incluem a habilidade para lidar com transaes para manter a integridade dos dados. 1.1 Controle de Concorrncia O controle de concorrncia em bancos de dados garante que as transaes de banco de dados sejam executadas simultaneamente sem violar a integridade dos dados dentro dos respectivos bancos. Assim, o controle de concorrncia um elemento essencial para a correo em qualquer sistema onde duas transaes de banco ou mais, firmados com sobreposio de tempo, podem acessar os mesmos dados, assim como acontece na maioria dos sistemas de banco de dados.

2. Diferentes problemas de concorrncia


Quando duas ou mais operaes esto sendo executadas ao mesmo tempo e agem sobre os mesmos dados ou conjuntos de dados, eles podem, eventualmente, criar as questes

de concorrncia, que sero apresentadas neste captulo. 2.1 Atualizaes Perdidas (Lost updates) Ocorrem quando duas ou mais transaes selecionam a mesma linha e, em seguida, atualizam a linha com base no valor selecionado originalmente. Cada transao no tem conhecimento de outras transaes. A ltima atualizao substitui as atualizaes feitas por outras transaes, o que resulta em perda de dados. Exemplo 1: Dois editores fazem uma cpia eletrnica do mesmo documento. Cada editor altera a cpia de forma independente e, em seguida, salva a cpia alterada, assim, substituindo o documento original. O editor que salva a cpia da ltima alterao substitui as alteraes feitas pelo primeiro editor. Este problema poderia ser evitado se o segundo editor no pudesse fazer alteraes at que o primeiro editor houvesse terminado. Exemplo 2:

Figura 1: Exemplo de transao com problema de Lost Update

2.2 Recuperao Inconsistente (Inconsistent retrieval) A recuperao inconsistente ocorre quando um valor que recuperado do banco de dados deixa de existir. Exemplo 1: Dois editores, o primeiro faz a leitura de um documento e faz uma alterao e ainda no confirma a gravao, em seguida o segundo leitor l o mesmo documento j com as alteraes do primeiro, e neste intermdio o primeiro leitor aborta as alteraes. Exemplo 2:

Figura 2: Exemplo de transao com problema de Inconsistent Retrieval

2.3 Leitura Suja (Dirty read) Ocorre quando uma segunda transao seleciona uma linha que est sendo atualizada por outra transao. A segunda transao est lendo os dados que no foram confirmados ainda e pode ser alterado pela transao a atualizao da linha.

Exemplo 1: Um editor est fazendo alteraes em um documento eletrnico. Durante as mudanas, um segundo editor faz uma cpia do documento que inclui todas as alteraes feitas at agora, e distribui o documento para o pblico-alvo. O primeiro editor decide, ento, que as mudanas feitas at agora esto erradas e as remove, logo aps edita e salva o documento. O documento distribudo contm edies que j no existem, e devem ser tratados como se nunca tivessem existido. Este problema poderia ser evitado se ningum pudesse ler o documento alterado at que o primeiro editor determinou que as mudanas foram finalizadas. Exemplo 2:

Figura 3: Exemplo de transao com problema de Dirty read

2.4 Problema fantasma (Phantom problem) O problema fantasma ocorre quando uma ao de insero ou excluso executada em uma linha que pertence a uma srie de linhas que esto sendo lidas por uma outra transao. A operao da primeira leitura do intervalo de linhas mostra uma linha que j no existe na segunda leitura ou subsequente, como resultado de uma supresso por uma transao diferente. Exemplo 1: Um editor faz alteraes em um documento apresentado por um escritor, mas quando as alteraes so incorporadas cpia principal do documento, no departamento de produo, eles descobrem que o material no editado de novo foi acrescentado ao documento pelo autor. Este problema poderia ser evitado se ningum pudesse acrescentar novo material para o documento at o acabamento departamento editor e produo de trabalhar com o documento original. Exemplo 2:

Figura 4: Exemplo de transao com problema de Phantom problem

2.5 Leitura no repetvel (Non-repeatable reads) Ocorre quando uma segunda transao acessa a mesma linha vrias vezes e l dados

diferentes a cada vez. Leitura no repetvel semelhante leitura suja, onde outra transao est alterando os dados que uma segunda transao est lendo. No entanto, na leitura no repetvel, os dados lidos pela segunda transao foram confirmadas pela transao que fez a alterao. Alm disso, a leitura no repetvel envolve leituras mltiplas (duas ou mais) da mesma linha e de cada vez a informao alterada por uma outra operao, assim, a leitura do termo no repetvel. Exemplo 1: Um editor l o mesmo documento duas vezes, mas entre cada leitura, o escritor reescreve o documento. Quando o editor l o documento pela segunda vez, ele j esta mudado. A leitura original no era repetvel. Este problema poderia ser evitado se o editor pudesse ler o documento somente aps o escritor ter terminado de escrever. Exemplo 2:

Figura 5: Exemplo de transao com problema de Non-repeatable reads

3. Nveis de isolamento
Das quatro propriedades ACID1 em um sistema de gerenciamento de banco de dados (SGBD), a propriedade de isolamento a que mais frequentemente deixada de lado, pois ao tentar manter o mais alto nvel de isolamento, um SGBD geralmente adquire bloqueios em seus dados ou implementa controles de concorrncia mltipla, o que pode resultar numa perda de simultaneidade. Sendo assim, este processo requer a adio de lgica adicional para que o aplicativo funcione corretamente. A maioria dos SGBDs oferecem variaes de nveis de isolamento de transao, que controlam o grau de bloqueio que ocorre durante o processo da seleo de dados. Em sistemas que utilizam bancos de dados, a maioria das operaes podem ser construdas de modo a evitar a necessidade de isolamento nveis elevados (por exemplo, nvel Serializable), reduzindo assim a sobrecarga de bloqueio para o sistema. O programador deve analisar cuidadosamente o cdigo de acesso de banco de dados para garantir que qualquer desuso de isolamento no causar erros de software, que posteriormente so difceis de encontrar. Inversamente, se os nveis mais elevados de isolamento so usados, a possibilidade de bloqueio aumentada, o que tambm requer uma anlise cuidadosa e tcnicas de programao para evit-los. Os nveis de isolamento definidos pelo padro ANSI/ISO SQL so:
1Acrnimo de Atomicidade, Consistncia, Isolamento e Durabilidade.

Serializable (Serializvel); Repeatable reads (Leitura repetvel); Read Committed (Leitura Confirmada); Read uncommitted (leitura no confirmada). Esses nveis de isolamento sero descritos neste captulo. 3.1 Leitura no confirmada (Read uncommitted) o nvel de isolamento menos restritivo porque ele ignora as protees colocadas por outras transaes. Transaes executadas sob leitura no confirmada podem modificar valores que ainda no tenham sido confirmados por outras transaes. 3.2 Leitura confirmada (Read committed) Este o nvel de isolamento usado como padro para servidores SQL (Structured Query Language, ou Linguagem de Consulta Estruturada). Ele previne leituras sujas (Dirty Reads) especificando que as declaraes no podem ler dados de valores que tenham sido modificados, mas ainda no confirmados por outras transaes. Outras transaes podem ainda modificar, inserir ou apagar dados entre as execues de instrues individuais dentro da atual transao, resultando em leituras no repetveis (nonrepeatables reads), ou dados "fantasmas" (phantom). 3.3 Leitura repetvel (Repeatable read) um nvel de isolamento mais restritivo que a leitura confirmada. Ela engloba a leitura confirmada e alm disso especifica que outras transaes podem modificar ou apagar dados que foram lidos pela a atual transao, enquanto a atual transao confirmada. A concorrncia menor do que para a leitura confirmada porque bloqueios compartilhados nos dados de leitura so mantidos durante a durao da transao em vez de ser lanado no final da cada instruo. 3.4 Serializvel (Serializable) Este o nvel de isolamento mais restritivo, pois bloqueia todos intervalos de chaves e mantm os bloqueios at que a transao seja concluda. Ela engloba a leitura repetvel e no permite que outras transaes acrescentem novas linhas em intervalos que foram lidos pela transao at que ela esteja completa.

4. Possveis violaes baseadas em nveis de Isolamento


Na tabela 1 apresentada a relao entre os problemas de concorrncia e os nveis de isolamento.
Problema Nvel de isolamento

Leitura suja

Leitura no Repetvel

Recuperao Inconsistente

Fantasma

Atualizao Perdida

READ UNCOMMITTED Sim Sim Sim Sim Sim READ COMMITTED No Sim No Sim Sim REPEATABLE READ No No No Sim No SERIALIZABLE No No No No No Tabela 1: Violaes possveis com base nos nveis de isolamento definidos na SQL

Referencias
ELMASRI, Ramez; NAVATHE, Shamkant. Sistemas de banco de dados. 6. ed. So Paulo: Pearson, 2011. 788 p. MENEZES, Rafael Abud. Implementao de controle de concorrncia, acesso remoto, seleo com filtro e atualizao de objetos em um SGBDOO. 2006. 48 f. Monografia (Bacharel) - Curso de Bacharelado em Informtica, Departamento de Informtica, Universidade Catlica de Salvador, Salvador - Ba, 2006. Disponvel em: <http://info.ucsal.br/banmon/Arquivos/Mono_150707.doc>. Acesso em: 31 mar. 2012. BORCHARDT, Christiano Marcio. Desenvolvimento de um mecanismo gerenciador de transaes para sistemas distribudos. 2002. 100 f. Monografia (Bacharel) Curso de Bacharelado em Cincias da Computao, Departamento de Centro de Cincias Exatas e Naturais, Universidade Regional de Blumenau, Blumenau, 2002. Disponvel em: <http://www.inf.furb.br/seminco/2002/artigos/Borchardtseminco2002-11.pdf>. Acesso em: 31 mar. 2012.

You might also like