[+/-]
SET ... TRANSACTION ISOLATION LEVEL ...
SELECT ... FOR UPDATE
e
SELECT ... LOCK IN SHARE MODE
InnoDB
InnoDB
No modelo transacional do InnoDB
o objetivo
é combinar as melhores propriedades de um banco de dados
multi-versioning a um bloqueio de duas fases tradicional. O
InnoDB
faz bloqueio a nivel de registro e
execulta consultas como leitura consistente sem bloqueio, por
padrao, no estilo do Oracle. A tabela travada no InnoDB é
armazenada com tanta eficiência em relação ao espaço que a
escala de bloqueio não é necessária: normalmente diversos
usuários tem permissão para bloquear todos os registros no
banco de dados, ou qualquer subconjunto aleatório de regitsros,
sem que o InnoDB
fique sem memória.
No InnoDB
todas as atividades de usuários
acontecem dentro de transações. Se o modo autocommit é usado
no MySQL, então cada instrução SQL forma uma única
transação. O MySQL sempre inicia uma nova conexão com o modo
autocommit ligado.
Se o modo autocommit é desligado com SET AUTOCOMMIT =
0
, então podemos achar que um usuário sempre tem uma
transação aberta. Se for executada uma instrução SQL
COMMIT
ou ROLLBACK
, a
transação atual é finalizada e uma nova é iniciada. Ambas
instruções liberarão todas as travas do
InnoDB
que foram definidas durante a
transação atual. Um COMMIT
significa que as
alterações feitas na transação atual se tornam permanentes e
visíveis a outros usuários. Uma instrução
ROLLBACK
, por outro lado, cancela todas as
modificações feitas pela transação corrente.
Se a conexão tem AUTOCOMMIT = 1
, então o
usuário pode ainda relaizar uma transação multi-instrução
iniciando-a com START TRANSACTION
ou
BEGIN
e finalizando-a com
COMMIT
ou ROLLBACK
.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.