[+/-]
SET ... TRANSACTION ISOLATION LEVEL ...SELECT ... FOR UPDATE e
SELECT ... LOCK IN SHARE MODEInnoDBInnoDB
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.
