Implementando o recurso MVCC do Hekaton DBMS
A semântica do programa está descrita no arquivo '_project_report.pdf'.
A ramificação master
contém o programa que executa a transação (original) newOrder com thread único. Os outros ramos são usados para testes de correção e desempenho:
- Branch 'test-visibility-validation': teste de estabilidade de leitura.
- Ramo 'test-phantom-evitar': teste para detecção de fantasma.
- Branch 'test-cascaded-aborts: teste para abortos em cascata no contexto de dependências de commit.
- Branch 'test-scanning': teste a velocidade de varredura do programa examinando a tabela OrderLine várias vezes.
- Filial 'somente leitura': teste o desempenho de transações somente leitura.
- Filial 'somente atualização': teste o desempenho de transações somente atualização.
Em casos extremos, uma transação se comporta da seguinte maneira:
- SELECT: se as tuplas necessárias não existirem, uma transação deverá ser abortada e revertida porque as variáveis desta instrução SELECT serão necessárias abaixo.
- INSERT: se estiver inserindo um PK duplicado em uma tabela, a transação deverá ser abortada e revertida.
- UPDATE e DELETE: se atualizar/excluir uma tupla inexistente, a instrução será ignorada.