Otimização de Consultas em Banco de Dados

Classificado em Computação

Escrito em em português com um tamanho de 3,87 KB.

Indexação

Resposta: Indexação é o processo de sumarizar um arquivo de registros com base em um atributo. O desempenho em tempo de execução aumenta porque primeiro acessamos o arquivo de índice, e este campo indicará o caminho para o registro a ser consultado. Este ganho de tempo pode ser muito alto em muitos casos. O espaço de armazenamento diminui porque, além de armazenar o arquivo de registros, também armazenamos o arquivo de índices.

  • Índice primário: Possui o mesmo número de itens do arquivo de dados. O arquivo deve estar ordenado por este campo e ser único (esparso).
  • Índice secundário: Possui o mesmo número de itens do arquivo de dados. O arquivo de dados não precisa estar ordenado nem ser único (denso).
  • Índice Cluster: Possui o mesmo número de valores distintos que tenho no campo. Arquivo ordenado por este campo e não precisa ser único (esparso).
  • Índice esparso: Número menor de registros do que o arquivo de dados (exemplo: Cluster).
  • Índice denso: Número de registros igual ao do arquivo de dados (exemplo: Primário).

Starvation

Resposta: Starvation ocorre quando, por exemplo, se prioriza sempre a transação mais nova, e as mais velhas não conseguem ser executadas, entrando em estado de espera contínua. Ocorre porque é preciso estabelecer uma regra de priorização das transações para resolver Deadlocks. Uma possível solução é alternar a priorização das transações.

Exemplo de Consulta SQL

SELECT C.DeptoNome, A.DependenteNome, A.DataNasc

FROM DEPENDENTE A, EMPREGADO B, DEPARTAMENTO C

WHERE B.Depto = C.DeptoSigla

AND B.Salario > 2000

AND A.MatriculaEmp = B.Matricula

AND A.Sexo = 'M'

Escalonamento de Transações

T¹ = r(x), w(y), w(x), r(z), c

T² = w(z), r(x), r(y), r(z), c

T³ = r(y), r(z), w(x), r(x), w(z), c

Sa = r3(y), w2(z), r2(x), r1(x), r3(z), r2(y), w3(x), w1(y), r3(x), w3(z), w1(x), r1(z), c2, c3, c1

Resposta: Não, porque a operação r(z) da transação T¹ não se encontra no escalonamento.

Resposta: Ele é recuperável. Apesar de haver conflitos, a ordem dos commits permite que uma operação seja desfeita sem precisar desfazer um commit. Após confirmada, nenhuma transação precisará ser desfeita.

Seriabilidade

Resposta: Não é seriável, pois possui um ciclo.

Legenda: "D" significa que, depois de usado, foi deletado, ou seja, já foi commitado ou morto por deadlock.

Deadlock

Deadlock: Uma transação T2 espera a liberação do bloqueio de T1, e T1 espera a liberação do bloqueio de T2. Mata a transação mais recente em bloqueio exclusivo e, no timestamp, a mais antiga.

É seriável se não possuir ciclo.

ACID

  • Atomicidade: Uma transação é uma unidade atômica e não pode ser subdividida. Deve ser executada integralmente ou não executada.
  • Consistência: Uma transação deve levar o banco de dados de um estado consistente (satisfaz restrições especificadas no esquema) para outro estado consistente.
  • Isolamento: Uma transação deve parecer estar sendo executada isoladamente das outras. A execução de uma transação não deve sofrer interferência de outras sendo executadas concorrentemente.
  • Durabilidade: As alterações confirmadas por uma transação devem persistir no banco de dados, independentemente de falhas.

Entradas relacionadas: