Com sistemas de banco de dados robustos e complexos, deve haver uma maneira de gerenciar possÃveis conflitos que possam surgir ao tentar processar várias transações em um banco de dados ao mesmo tempo. No Oracle, os usuários podem especificar nÃveis de isolamento de transações para indicar o nÃvel de cuidado a ser exercido na resolução de conflitos potenciais.
Quanto maior o nÃvel de isolamento da transação, mais cuidadoso o sistema será para evitar conflitos. Por outro lado, geralmente há um preço: Quanto maior o nÃvel de isolamento da transação, a sobrecarga de bloqueio pode aumentar enquanto a concorrência do usuário pode diminuir. Os desenvolvedores e o DBA devem levar esses fatores em consideração ao estabelecer os nÃveis de isolamento de transações da Oracle.
Atualmente, existem três nÃveis de isolamento de transação suportados pelo banco de dados Oracle:
- Read Committed
- Serializable
- Read Only
Read Committed Transaction Isolation Level
O nÃvel de isolamento de transação com leitura comprometida é o padrão do Oracle. Com esta configuração, cada consulta pode ver apenas dados cometidos antes da consulta, e não a transação, começou. As consultas Oracle não lêem dados sujos ou não “comitados”; No entanto, não impede que outras transações modifiquem os dados lidos por uma consulta. Assim, é possÃvel que outras transações possam alterar dados entre as execuções da consulta. Qualquer transação que executa uma determinada consulta mais de uma vez pode achar dados fantasmas.
Exemplo de utilização:
Transaction Level:
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
Session Level:
ALTER SESSION SET ISOLATION_LEVEL READ COMMITTED;
Serializable Transaction Isolation Level
O nÃvel de isolamento de transação serializável não é suportado com transações distribuÃdas. Com o nÃvel de isolamento de transação serializável, somente uma consulta que tenha sido “commitada” no inÃcio da transação mais as realizadas pela transação através de INSERTs, UPDATEs e DELETEs pode ser acessada por uma consulta. Ao contrário das transações de nÃvel de leitura comprometidas, as transações de nÃvel de isolamento serializáveis não retornam leituras ou fantasmas.
Exemplo de utilização:
Transaction level:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
Session level:
ALTER SESSION SET ISOLATION_LEVEL SERIALIZABLE;
Read Only Transaction Isolation Level
No caso do nÃvel de isolamento somente leitura, apenas transações “comitadas” podem ser retornadas. Além disso, não é possÃvel fazer alteração nos dados.
Exemplo de utilização:
Transaction level:
SET TRANSACTION ISOLATION LEVEL READONLY;
Session level:
ALTER SESSION SET ISOLATION_LEVEL READONLY;
Conforme mostrado, os nÃveis de isolamento da transação podem ser definidos no nÃvel da transação, que se aplica somente a essa transação ou ao nÃvel da sessão, que se aplica a cada transação subseqüente ao comando ALTER SESSION. O uso do comando ALTER SESSION para definir o nÃvel de isolamento da transação para a sessão pode economizar alguns problemas de rede e processamento que podem ser associados a ter SET TRANSACTION no inÃcio de cada declaração.
0 Comentários
Obrigado por ler nosso conteúdo no eduardolam.com.br. Sua opinião é fundamental para nós! Deixe seu comentário abaixo e compartilhe suas ideias, dúvidas ou experiências. Cada feedback é uma oportunidade de aprimorarmos ainda mais nossos artigos e ajudar outros leitores. Participe da conversa!