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.

Retornar