Esta é uma questão de dever de casa.
Para as transações a seguir, indique o nível de isolamento que maximizará a taxa de transferência sem diminuir a integridade do banco de dados. Explique a resposta.
Altere o curso identificado por coursed_id = 'CPSC1350' de um departamento para outro diferente.
A tabela Cursos contém informações sobre os cursos: seu id, seu nome, o departamento que o oferece, o id de seu instrutor e o número máximo de alunos que podem cursar (max_size). Courses(coursed_id: string, cname: string, dept: string, instrutor_id: string, max_size:integer) – Chave Primária: coursed_id – Chave Estrangeira: instrutor_id referências Instrutores
Suponha que o PostgreSQL seja usado.
Eu acredito que a transação pode ser feita usando leitura confirmada porque
- as leituras sujas não estão OK porque há uma atualização em andamento, portanto, uma leitura está envolvida
- leituras não repetíveis estão OK porque é improvável que outra pessoa esteja alterando o valor
- fantasmas estão OK porque não há
SELECT
declarações
Estou no caminho certo?
A questão parece um quebra-cabeça que parece muito simples, mas talvez não tão simples, ou apenas finge ser complexo... Vou tentar o meu melhor para respondê-la como eu a entendo. Peço desculpas se entendi mal algumas dicas óbvias.
Com o PostgreSQL, não há real
Read uncommitted
- você obtém arquivosRead committed
. Citando a documentação :A questão não parece muito clara para mim porque os níveis de isolamento são importantes quando você tem consultas simultâneas e nenhuma outra consulta mencionada, então não me culpe muito se eu perder alguma coisa.
Se colocarmos os níveis de isolamento restantes na ordem "Leitura confirmada"->"Leitura repetível"->"Serializável", a sobrecarga aumentará de acordo. Portanto, precisamos verificá-los na mesma ordem e, uma vez satisfeitos, não há necessidade de verificar os níveis restantes (eles estarão bem, mas com mais sobrecarga). Tanto quanto eu entendo,
UPDATE Courses set dept = 'New department' coursed_id = ’CPSC1350’
faz o trabalho necessário. Na documentação do Postgre que descreve o nível de isolamento confirmado de leitura,Eu diria que estou satisfeito com tal comportamento neste caso, então irei, a
READ COMMITTED
menos que haja outras restrições não mencionadas na pergunta.