Controle de concorrncia baseado em bloqueios de chaves de
ndice e uso de rvore B+. Obedincia s regras do bloqueio de duas fases. O Bloqueio em duas fases pode ser aplicado para o controle de concorrncia em ndices. A abordagem tradicional prejudica o desempenho pois a pesquisa sempre iniciar pela raiz da arvore de ndices. Ex: Uma transao T quer inserir um registro (W), a raiz ser bloqueada em modo exclusivo. Logo, ocorre a interrupo de todas as outras transaes que desejam acessar o ndice. Aproveitando a estrutura de arvore do ndice, pode-se desenvolver outro esquema de controle de concorrncia. Quando uma pesquisa no ndice (leitura) estiver sendo executada, um caminho na rvore percorrido da raiz folha; assim, uma vez que um n j tenha sido acessado, os ns de nvel acima no seriam acessados novamente. Logo, para bloqueios de leitura, uma vez que o bloqueio no n filho seja obtido, o bloqueio no pai pode ser liberado. Quando uma insero (gravao) estiver sendo aplicada a um n folha, este deve ser bloqueado em modo exclusivo; entretanto, se esse n no estiver cheio, a insero no causar alteraes em ns de ndice de nvel acima na rvore, implicando que eles no necessitam estar bloqueados exclusivamente. Uma abordagem conservadora para inseres: Bloquear o n raiz em modo exclusivo e, ento, acessar o n filho apropriado da raiz. Se o n filho no estiver cheio, o bloqueio no n raiz pode ser liberado. Essa abordagem pode ser aplicada em todo o caminho da rvore at a folha. Uma abordagem alternativa mais otimista para inseres: Requisitar e manter bloqueios compartilhados nos ns que levam ao n folha, com um bloqueio exclusivo na folha. Se a insero causar diviso na folha, a mesma se propagaria para ns de nvel acima; nesse caso, os bloqueios em tais ns podem ser alterados para o modo exclusivo. Registros Fantasmas O problema de registro fantasma (phanton) ocorre quando um novo registro que esteja sendo inserido pela transao T satisfaz a mesma condio que um conjunto de registros acessados por outra transao T'. Por exemplo, T est inserindo um registro de EMPREGADO cujo NumDepto = 5, enquanto T' est acessando todos os registros de EMPREGADO cujo NumDepto = 5. Se a ordem serial equivalente for T seguida de T', ento T' ler o novo registro de EMPREGADO. Para a ordem serial T seguida de T, o novo registro no ser considerado. As transaes conflitam logicamente e um registro fantasma pode aparecer repentinamente no banco de dados. Se outras operaes nas duas transaes conflitarem, o conflito causado pelo registro fantasma pode no ser reconhecido pelo protocolo de controle de concorrncia. Uma soluo para detectar um registro fantasma usar o bloqueio de ndice. Se a entrada de ndice for bloqueada antes que o registro possa ser acessado, ento o conflito do registro fantasma pode ser detectado. A transao T' solicitaria um bloqueio de leitura na entrada de ndice para NumDepto = 5, e T solicitaria um bloqueio de escrita na mesma entrada antes que se coloque o bloqueio propriamente nos registros. Assim, uma vez que o bloqueio de ndice gera conflito, o conflito do fantasma seria detectado.