SóProvas


ID
126856
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2010
Provas
Disciplina
Banco de Dados
Assuntos

Considere os seguintes tipos de bloqueio utilizados em um sistema de banco de dados, sendo T uma transação que solicitou um bloqueio do tipo indicado sobre a RelVar (variável relacional) R:

. IC: T tem a intenção de definir bloqueios do tipo C sobre tuplas individuais em R, a fim de garantir a estabilidade dessas tuplas enquanto elas estiverem sendo processadas.
. IX: Igual a IC, além disso, T poderia atualizar tuplas individuais em R e, dessa forma, definir bloqueios do tipo X sobre essas tuplas.
. C: T pode tolerar leitores concorrentes, mas não atualizadores concorrentes em R (a própria T não atualizará quaisquer tuplas em R).
. ICX: Combina C e IX, isto é, T pode tolerar leitores concorrentes, mas não atualizadores concorrentes em R. Além disso, T poderia atualizar tuplas individuais em R e, por isso, definir bloqueios do tipo X sobre essas tuplas.
. X: T não pode tolerar qualquer acesso concorrente a R. A própria T poderia ou não atualizar tuplas individuais em R.

Se uma transação A mantém um determinado tipo de bloqueio sobre uma RelVar R qualquer e uma transação distinta B emite uma requisição de bloqueio sobre R que não pode ser satisfeita imediatamente, temos um conflito; caso contrário, temos uma compatibilidade. Uma compatibilidade ocorre, portanto, quando A mantém um bloqueio do tipo

Alternativas
Comentários
  • Muita sigla só para confundir. Muita calma nessa hora :)a) C sobre R e B emite uma requisição do tipo IX.A está usando C sobre R, ou seja, outras transações podem ler a tabela mas A impede que ela seja atualizada. Nem mesmo A pode atualiza-la. Isso é o que está escrito na definição C. Logo, chega B e emite uma requisição IX. IX "pode atualizar tuplas". Opa! Isso A não deixa. ERRADOb) X sobre R e B emite uma requisição do tipo IC.A está usando X sobre R. Nesse caso, segundo definição de X, A pode fazer o que quiser em R, mas não deixa nenhuma outra transação chegar perto (nem pra ler!). Portanto, nem vou tentar saber o que B vai fazer. ERRADOc) IC sobre R e B emite uma requisição do tipo ICX.A usa IC sobre R. IC nada mais é do que C, porém ao invés de operar sobre a tabela (relação) toda IC tem flexibilidade de operar sobre linhas (tuplas) individuais. Aí chega B e pede ICX. ICX nada mais é que C (bloquea a tabela toda para escrita e permite leituras concorrentes) e IX (permite atualizar tuplas especificas). Ou seja, B tranca a tabela toda para alterações e libera somente tuplas especificas para alterações realizads pela própria B. Aqui vemos que se A estiver operando sobre tuplas diferentes de B, não teremos conflitos. CORRETOd) IX sobre R e B emite uma requisição do tipo C.A está usando IX. Neste caso, tuplas individuais estão bloqueadas sendo alteráveis somentes por A. Chega B e pede a tabela toda para si (tipo C) impedindo qualquer outra transação de alterá-la. Isso conflita com as intenções de A. Portanto ERRADOe) ICX sobre R e B emite uma requisição do tipo X.Aqui basta ver que B quer X, ou seja, ninguém pode alterar. Portanto conflita com A que está usando ICX. ERRADO.
  •     T2
        IC IX C ICX X
    T1 IC Sim Sim Sim Sim Não
    IX Sim Sim Não Não Não
    C Sim Não Sim Não Não
    ICX Sim Não Não Não Não
    X Não Não Não Não Não