Será que múltiplas conexões para um banco de dados de vários segmentos de um aumento aplicação inserção desempenho consultas?

StackOverflow https://stackoverflow.com/questions/605607

Pergunta

Aqui eu estou lidando com um banco de dados que contém dezenas de milhões de registros. Tenho uma aplicação que se conecta ao banco de dados, recebe todos os dados de uma única coluna em uma tabela e faz alguma operação sobre ele e atualiza-lo (para SQL Server - usando cursores).

Para milhões de registros que está tomando muito, muito ... muito tempo para atualização. Então, eu quero torná-lo mais rápido,

  1. usando vários segmentos com uma conexão independente para cada segmento.

ou

  1. usando uma única conexão ao longo de todos os fios para disparar as consultas de atualização.

Qual deles é mais rápido, ou se você tiver quaisquer outras idéias plz explicar.

Eu preciso de uma solução que é independente do tipo de banco de dados, ou mesmo se você sabe soluções específicas para cada tipo de db, por favor responda.

Foi útil?

Solução

O aumento de velocidade que você está tentando alcançar não vai funcionar. Ao contrário, ele vai abrandar o processamento global como o banco de dados tem agora também para manter múltiplas conexões / sessões / transações em sincronia.

Mantenha com o menor número de conexões / operações quanto possível para operações repetitivas e comparáveis. Se leva muito tempo para o seu gosto, talvez tentar analisar se as consultas podem ser otimizados de alguma forma. Também ter um olhar para extensões específicas do banco de dados (ou seja, operações em massa) adequado para o seu problema.

Outras dicas

Tudo depende do banco de dados eo hardware que está sendo executado.

Se o banco de dados pode fazer uso de processamento simultâneo e evita contenção em recursos compartilhados (por exemplo, bloqueios de base de página iria abranger vários registros, registro base não). recursos compartilhados neste caso incluem hardware, uma única caixa de núcleo não será capaz de executar atividades intensivas múltiplas CPUs (por exemplo análise SQL) verdadeiramente em paralelo.

Rede de latência é algo que você pode ajudar a aliviar com inserções concorrentes, mesmo se o banco de dados em si não é capaz de explorar concorrência.

Tal como acontece com qualquer questão de desempenho não é substituto para testar em seu cenário específico.

Se possível, tente usar o procedimento armazenado a todos fazer o processamento e atualizar os registros.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top