Pergunta

Eu sou o processamento de alguns arquivos de entrada e de inserir os registros obtidos como O CouchDB documentos.Tenho notado que a inserção de velocidade está diminuindo o ritmo tamanho do banco de dados aumenta.

O que eu faço é:

  1. Ler dados do arquivo de entrada
  2. O processo de dados para obter os documentos estruturados
  3. Colocar os documentos em um buffer local
  4. Assim que a memória intermédia tem de 1000 documentos, realizar uma couchdb bulk insert
  5. Repita até que a entrada de dados foi totalmente processado

Aqui você tem o log da minha atual de execução:

2012-03-15 10:15:58,716 - docs= 10000 rate=2282.38 entries/s
2012-03-15 10:16:46,748 - docs=100000 rate=1822.76 entries/s
2012-03-15 10:17:47,433 - docs=200000 rate=1592.01 entries/s
2012-03-15 10:18:48,566 - docs=300000 rate=1358.32 entries/s
2012-03-15 10:19:54,637 - docs=400000 rate=1572.55 entries/s
2012-03-15 10:21:01,690 - docs=500000 rate=1560.41 entries/s
2012-03-15 10:22:09,400 - docs=600000 rate=1556.22 entries/s
2012-03-15 10:23:16,153 - docs=700000 rate=1550.21 entries/s
2012-03-15 10:24:30,850 - docs=800000 rate=1393.61 entries/s
2012-03-15 10:25:46,099 - docs=900000 rate=1336.83 entries/s
2012-03-15 10:27:09,290 - docs=1000000 rate= 871.37 entries/s
2012-03-15 10:28:31,745 - docs=1100000 rate=1256.36 entries/s
2012-03-15 10:29:53,313 - docs=1200000 rate=1140.49 entries/s
2012-03-15 10:31:29,207 - docs=1300000 rate=1080.79 entries/s
2012-03-15 10:33:23,917 - docs=1400000 rate= 741.65 entries/s
2012-03-15 10:35:45,475 - docs=1500000 rate= 567.96 entries/s
2012-03-15 10:39:04,293 - docs=1600000 rate= 564.01 entries/s
2012-03-15 10:42:20,160 - docs=1700000 rate= 499.29 entries/s
2012-03-15 10:46:06,270 - docs=1800000 rate= 505.04 entries/s
2012-03-15 10:50:24,745 - docs=1900000 rate= 402.14 entries/s
2012-03-15 10:55:23,800 - docs=2000000 rate= 346.19 entries/s
2012-03-15 11:02:03,217 - docs=2100000 rate= 274.59 entries/s
2012-03-15 11:08:21,690 - docs=2200000 rate= 269.57 entries/s

A "taxa" mostra a taxa de inserção dos últimos milhares de documentos, que como você pode ver é degradante muito rápido.

  • Isso é normal?
  • Posso fazer algo para manter uma alta taxa de inserir?
  • Você tem experiência em grandes bancos de dados CouchDB.
  • Quaisquer conselhos que você gostaria de compartilhar?
Foi útil?

Solução

A alta inserir as tarifas são anômalas, causadas por tudo o que encaixe perfeitamente no seu cache de disco.Como o tamanho do banco de dados aumenta, você vai, eventualmente, necessitar de ler dados a partir do disco para atualizar a árvore.Seria melhor para executar um insert de teste por mais tempo, o gráfico e, em seguida, você deve ver que o aumento enorme na frente é a excepção, não a menor, mas mais ou menos constante a taxa que se segue.

A partir de outras threads você já se fez esta pergunta em, outro fator importante é o que você usou totalmente aleatório uuid.Porque o CouchDB é baseado em árvore b+, inserindo totalmente aleatória de ids é o pior dos cenários possíveis para a atualização.O CouchDB é fornecido com um número de uuid algoritmos, o padrão, o chamado 'sequential' retorna valores com muito baixa probabilidade de colisões que ainda estão sequencial suficiente para dar muito melhor inserir o desempenho.

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