Técnica de bloqueio -> uma das técnicas de controle de concorrência para assegurar a propriedade do isolamento de transações. Esta técnica é utilizada para sincronizar o acesso por transações concorrentes aos itens do banco de dados. O bloqueio é utilizado na maioria dos BD atuais. Um lock (bloqueio) é uma variável associada a um item de dados que descreve as possíveis operações que podem ser aplicadas a ele.
Tipos de bloqueios -> binários (lock_item(X) e unlock_item(X)) e compartilhados/exclusivos (read_lock(X), write_lock(X), unlock(X)).
As técnicas de controle de concorrência não-otimistas sempre fazem alguma verificação antes que alguma operação de banco de dados possa ser executada. Ex: técnica de bloqueio.
As técnicas de controle de concorrência otimistas não fazem nenhuma verificação enquanto a transação estiver sendo executada. Ex: validação ou técnicas de certificação.
Fonte: Sistemas de Banco de Dados - ELMASRI e NAVATHE, 4ª edição, Capítulo 18.
Em ambientes com aplicações multi-usuários uma situação comum é a concorrência de dados, onde vários usuários pegam um mesmo dado simultaneamente, e a atualização do mesmo pode ser trabalha de duas maneiras, Otimista ou Pessimista.
Concorrência pessimista trabalha com o conceito de bloqueio do registro na fonte de dados, impedindo que os usuários alterem os dados de uma forma que afeta outros usuários. Quando um usuário executa uma ação que provoca um bloqueio, outros usuários não podem realizar ações que entraria em conflito com o bloqueio até que o proprietário de bloqueio finalize-o. Este modelo é usado principalmente em ambientes onde há contenção pesada de dados, onde o custo de proteção de dados com bloqueios é menor que o custo de reverter as transações se ocorrem conflitos de simultaneidade. Esse modelo não é uma opção escalável quando os usuários estão interagindo com os dados, fazendo com que os registros sejam bloqueados por períodos de tempo relativamente grande.
Em contra-partida, concorrência otimista não bloqueia registros quando lê-os. Quando um usuário deseja atualizar uma linha, o aplicativo deve determinar se outro usuário alterou a linha desde que foi lido. Concorrência otimista é geralmente utilizada em ambientes com baixa contenção de dados, aliviando o servidor do custo adicional de criar e manter locks. Outro ponto é a não necessidade de uma conexão aberta todo o tempo, já que não existe lock no banco, liberando o banco de dados para atender mais requisições.
Fonte: http://marcobaccaro.wordpress.com/2011/07/21/concorrencia-otimista-e-pessimista/