Modelo Transacional do 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 MariaDB 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
.