Eu sou novo na transação. Quando li o livro "Transactional Information Systems", é mencionado que o B-tree usa o bloqueio de intervalo de chaves para garantir a serialização. É verdade que todos os acessos à relação devem ser realizados através da mesma árvore B para garantir a serialização?
Se bem entendi, não há como garantir a serialização se os acessos forem por diferentes índices . Veja o exemplo a seguir.
Suponha que existam dois índices na mesma relação, ou seja, uma árvore B e um índice de hash, e existam duas transações.
Primeiro, uma transação lê a relação usando o índice de hash, por exemplo, fetchkey(16)
para buscar o registro (atualmente ausente) com a chave 16
e não encontra correspondência. Como o hash não possui bloqueio de intervalo de chaves, ele não pode bloquear a próxima chave. Em seguida, a outra transação insere um registro com a chave '16' por meio da árvore B. A inserção será bem sucedida, levando a um fantasma.