Trabalhando em um site de volume razoavelmente alto. Existem alguns exemplos de tabelas - a tabela de clientes que é muito atingida.
O problema
Estamos escrevendo um trecho de código que seleciona um grupo de clientes e envia malas diretas, etc. (nada de missão crítica). Essas seleções geralmente resultam em cerca de 20.000 registros. Obviamente, não queremos que os acessos regulares à tabela do cliente sejam bloqueados por essas instruções select.
Seguimos o caminho de fazer essas leituras readUncommitted, pois as operações nos dados não são absolutamente críticas para a missão.
No entanto, em vez de fazer essas seleções massivas, se no código fizermos uma seleção com um limite e um deslocamento e continuarmos em loop, isso causaria menos bloqueios no banco de dados.
Em outras palavras - 20 instruções select, cada uma recuperando 1.000 registros, seriam mais desejáveis do que 1 instrução select recuperando 20.000 registros em termos de redução de bloqueio, etc.
Qualquer sugestão seria muito apreciada.