BLOQUEIO SQL
Ensaios: BLOQUEIO SQL. Pesquise 862.000+ trabalhos acadêmicosPor: diogox3 • 1/8/2014 • 335 Palavras (2 Páginas) • 377 Visualizações
Causas de LOCK SQL Utilizando ANYDAC
• O componente ANYDAC que é responsável por realizar a conexão da aplicação ao banco de dados, possui uma configuração que retorna os registros das pesquisas em blocos, o tamanho dos blocos podem ser definidos pelo usuário, no caso da SOFtran 50-50.
• Esta configuração faz com que uma consulta que retorne mais de 50 registros, mantenha o excedente aguardando no banco de dados até que seja solicitado a sua leitura.
Enquanto não ocorre esta leitura e simultaneamente é enviado um comando de alteração ao banco de dados, este comando fica bloqueado, pois a consulta anterior o mantém nessa condição até que ela seja liberada.
• O que causa uma simples consulta bloquear as alterações?
O configuração do cursor do anydac (ckDefault), faz com que a aplicação gerencie os blocos de consultas pendentes no banco, desta forma se a consulta realizada conter um campo do tipo BLOB, o cursor mantém a pesquisa bloqueada até a leitura final.
• O que pode resolver este problema?
o Como o cursor ckDefault gera mais performance a rotina, podemos mudar a configuração que faz a consulta em blocos para que realize a busca completa, no caso fmAll;
o Mesclar a utilização dos cursores, já que o componente possibilita trabalhar de diferentes formas, será necessário revisar as rotinas mais críticas e alterar o cursor para ckDynamic ou ckDefault conforme for conveniente, desta forma é possível manter a busca em blocos fmOnDemand;
o Revisar os comandos SQL que possuem ‘*’ ou campos do tipo BLOB na busca, retirando os e os fazendo campos do tipo ‘Calculado’, ou até mesmo removendo-os das tabelas criando tabelas específicas para este tipo.
o Utilização do comando NOLOCK nas consultas SQL, a principio a funcionalidade principal deste comando é realizar uma consulta ‘suja’ no banco de dados, porém na prática se utilizado em conjunto com o cursor ckDefault este não esta mantendo a consulta bloqueada, parando as alterações posteriores.
• Alguns Exemplos que Não Ocorreram o LOCK
o Cursor ckDynamic e fmOnDemand:
o Cursor ckDefault, fmOnDemand sem BLOBs no Select:
o Cursor ckDefault e fmAll:
...