Pregunta

Estoy procesando algunos archivos de entrada e insertando los registros obtenidos como Documentos de couchdb. Me he dado cuenta de que la velocidad de inserción está disminuyendo en el ritmo con Aumento del tamaño de la base de datos.

lo que hago es:

  1. leer datos del archivo de entrada
  2. Procesar los datos para obtener los documentos estructurados
  3. Pon los documentos en un búfer local
  4. Tan pronto como el búfer tenga 1000 documentos, realice un inserto a granel de CouchDB
  5. Repetir hasta que los datos de entrada se hayan procesado completamente
  6. Aquí tienes el registro de mi ejecución actual:

    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
    

    La "tasa" muestra la tasa de inserción de los últimos mil documentos, que como puedes ver se está degradando muy rápido.

    • es esto normal?
    • ¿Puedo hacer algo para mantener una alta tasa de inserción?
    • ¿Tiene experiencia con las bases de datos de Big CouchDB?
    • ¿Algún consejo que le gustaría compartir?
¿Fue útil?

Solución

Las tasas de inserción altas son anómalas, causadas por todo lo que encaja perfectamente en el caché de su disco.A medida que aumenta el tamaño de su base de datos, eventualmente deberá leer datos desde el disco para actualizar el BTREE.Sería mejor ejecutar una prueba de inserción por más tiempo, gránela, y luego debe ver que la enorme punta en la parte delantera es la rareza, no la velocidad inferior pero más o menos constante que lo sigue.

De otros hilos Ha hecho esta pregunta, otro factor significativo es que usó UUID completamente aleatorios.Debido a que CouchDB se basa en B + Tree, insertando ID de inserción aleatorio es el peor escenarios posibles para la actualización.Los barcos de CouchDB con varios algoritmos uuidos, los valores predeterminados, llamados valores de devoluciones 'secuenciales' con una probabilidad muy baja de las colisiones que aún son lo suficientemente secuenciales para dar un rendimiento de inserción mucho mejor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top