← Questões de Banco de Dados

Banco de Dados · FUNDATEC · 2023

Questão comentada de Banco de Dados

Existem dois tipos de prevenção de deadlock quando se utiliza timestamp para controle de concorrência: ESPERAR-MORRER e FERIR-ESPERAR. Suponha que as transações T1, T2 e T3 tenham timestamps 5, 10 e 15, respectivamente. No esquema ESPERAR-MORRER, se T3 solicitar um item de dado mantido por T2, então _____ será desfeita. Já no esquema FERIR-ESPERAR, se T1 solicitar um item de dado mantido por T2, então o item de dado será liberado de _____, e _____ será desfeita. Se T3 solicitar um item mantido por T2, então _____ esperará. Assinale a alternativa que preenche, correta e respectivamente, as lacunas do trecho acima.

Gabarito: A

Em controle de concorrência com timestamps, a ideia é simples: o número menor representa a transação mais antiga, e isso manda no jogo. No esquema ESPERAR-MORRER (wait-die), se uma transação mais nova pede um item que está com uma mais velha, ela nao fica esperando: ela é desfeita. Se for a mais velha pedindo algo da mais nova, ela pode esperar. Já no FERIR-ESPERAR (wound-wait), acontece o inverso: a transação mais velha “fere” a mais nova, fazendo a mais nova ser abortada; se a pedinte for mais nova, ela espera. Aplicando aos dados da questão: T1 tem timestamp 5, T2 tem 10 e T3 tem 15. No ESPERAR-MORRER, T3 pede um item mantido por T2. Como T3 é mais nova que T2, ela nao espera: ela é desfeita. Esse primeiro espaço, portanto, é T3. No FERIR-ESPERAR, se T1 pedir um item mantido por T2, T1 é mais antiga. Logo, T2 é que deve liberar o item, porque será desfeita. Depois, se T3 pedir um item mantido por T2, T3 é mais nova que T2, então T3 espera. Por isso, a sequência correta é: T3 - T2 - T2 - T3, que corresponde à alternativa A. Esse é um tema clássico de prova: basta lembrar que no wait-die a transação nova morre, e no wound-wait a transação velha fere.

Continue treinando

Questões relacionadas