Estes comandos definem o chamado transaction mode, característica que influencia a execução de uma transação. Dependendo do que for definido, o sistema poderá por exemplo obter um melhor desempenho sacrificando a aderência às desejáveis características ACID (Atomicidade, Consistência, Isolamento e Durabilidade). São apresentados junto na ajuda do PostgreSQL por terem função similar.
O transaction_mode é composto pelo nível de isolamento da transação e das permissões de uma transação para fazer leitura e escrita em um banco de dados.
Outros comandos podem afetar o transaction mode: START TRANSACTION e BEGIN. Nestes comandos é afetado o transaction mode da transação corrente. O comando SET TRANSACTION permite a alteração desta característica tanto para a transação corrente quanto para as subseqüentes.
SINTAXE:
SET TRANSACTION transaction_mode [, ...]
SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode [, ...]
Onde o transaction_mode pode assumir os seguintes valores:
ISOLATION LEVEL { SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED }
READ WRITE | READ ONLY
Principais transaction modes:
- SERIALIZABLE - Fiel às características ACID, apresenta menor desempenho pois praticamente simula a execução sequencial de transações. A transação poderá ver apenas os dados já efetivados no banco antes do início da execução da transação. Isto é, não poderá por exemplo ler dados inseridos após o seu início.
- REPEATABLE READ - Mais flexível, apresenta melhor desempenho em relação ao anterior. A transação poderá ler os mesmos dados várias vezes durante sua execução e o valor será o mesmo.
- READ COMMITTED - Mais flexível e com melhor desempenho em relação ao anterior. A transação poderá ler os mesmos dados várias vezes durante sua execução e o valor lido será diferente caso o dado tenha sido atualizado por outra transação que tenha feito COMMIT explícito ou implícito.
- READ UNCOMMITTED - Apresenta o melhor desempenho em relação às demais. No entanto não é fiel às características ACID. Neste caso a transação poderá ler os mesmos dados várias vezes durante sua execução e o valor lido será diferente caso o dado tenha sido atualizado por outra transação que tenha feito ou não COMMIT.
Exemplos:
1 - Altera a transação corrente para SERIALIZABLE
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
2 - Altera a transação corrente para READ COMMITTED
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
3 - Altera a transação corrente para SERIALIZABLE
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
4 - Altera a transação corrente para READ UNCOMMITTED
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
5 - Define que a transação corrente será SERIALIZABLE com permissão de leitura e escrita
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE READ WRITE
6 - Define que a transação corrente será SERIALIZABLE com permissão apenas para leitura de dados
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE READ ONLY
7 - Altera as transações subseqüentes para SERIALIZABLE
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE
8 - Altera as transações subseqüentes para REPEATABLE READ
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL REPEATABLE READ
9 - Altera as transações subseqüentes para READ COMMITTED
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED
10 - Altera as transações subseqüentes para READ UNCOMMITTED
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
11 - Altera as transações subseqüentes para SERIALIZABLE com permissão para leitura e escrita
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE READ WRITE
12 - Altera as transações subseqüentes para REPEATABLE READ com permissão apenas para leitura
SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL REPEATABLE READ READ ONLY
Um comentário:
Vc é o cara!!!
Postar um comentário