O que é controle de simultaneidade?

Na programação de gerenciamento de dados, o controle de simultaneidade é um mecanismo projetado para garantir que resultados precisos sejam gerados por operações simultâneas. Esses resultados também devem ser obtidos em tempo hábil. O controle de simultaneidade é frequentemente visto em bancos de dados em que há um cache de informações pesquisáveis ​​para os usuários obterem.

Os programadores tentam projetar um banco de dados de forma que o efeito de transações importantes nos dados compartilhados seja serialmente equivalente. O que isso significa é que os dados que fazem contato com conjuntos de transações estariam em um determinado estado em que os resultados são obtidos se todas as transações forem executadas em série e em uma ordem específica. Às vezes, esses dados são inválidos como resultado de serem modificados por duas transações simultaneamente.

Existem várias maneiras de garantir que as transações sejam executadas uma após a outra, incluindo o uso de exclusão mútua, bem como a criação de um recurso que decide quais transações têm acesso. Isso é um exagero, no entanto, e não permitirá que um programador se beneficie do controle de simultaneidade em um sistema distribuído. O controle de simultaneidade permite a execução simultânea de várias transações, mantendo essas transações afastadas umas das outras, garantindo linearização. Uma maneira de implementar o controle de simultaneidade é o uso de um bloqueio exclusivo em um recurso específico para execuções de transações em série que compartilham recursos. As transações bloquearão um objeto destinado a ser usado e, se alguma outra transação fizer uma solicitação para o objeto bloqueado, essa transação precisará aguardar o desbloqueio do objeto.

A implementação desse método em sistemas distribuídos envolve gerenciadores de bloqueios - servidores que emitem bloqueios de recursos. Isso é muito semelhante aos servidores para exclusões mútuas centralizadas, onde os clientes podem solicitar bloqueios e enviar mensagens para a liberação de bloqueios em um recurso específico. A preservação da execução serial, no entanto, ainda é necessária para o controle de simultaneidade. Se duas transações separadas acessam um conjunto de objetos semelhante, os resultados precisam ser semelhantes e como se essas transações fossem executadas em uma ordem específica. Para garantir a ordem de acesso a um recurso, o bloqueio bifásico é introduzido, o que significa que as transações não podem permitir novos bloqueios após o lançamento de um bloqueio separado.

No bloqueio bifásico para controle de simultaneidade, sua fase inicial é considerada a fase crescente, onde a transação adquire o bloqueio necessário. A próxima fase é considerada uma fase de encolhimento, na qual a transação tem seus bloqueios liberados. Há problemas com esse tipo de bloqueio. Se as transações abortarem, outras transações poderão usar dados de objetos modificados e desbloqueados por transações abortadas. Isso resultaria no cancelamento de outras transações.

OUTRAS LÍNGUAS

Este artigo foi útil? Obrigado pelo feedback Obrigado pelo feedback

Como podemos ajudar? Como podemos ajudar?