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.