Pregunta

  • ¿Cuál es el nivel óptimo de simultaneidad que la implementación en C++ de BerkeleyDB puede razonablemente apoyo?
  • Cuántos hilos he machucando el DB antes de que el rendimiento comienza a sufrir a causa de la contención de recursos?

He leído el manual y saber cómo establecer el número de bloqueos, armarios, base de datos de tamaño de página, etc.pero me gustaría algún consejo de alguien que tiene experiencia en el mundo real con el BDB de la concurrencia.

Mi aplicación es bastante sencillo, voy a estar haciendo presenta y pone de registros que son de alrededor de 1 kb cada una.No hay cursores, no la eliminación.

No hay solución correcta

Otros consejos

Depende de qué tipo de aplicación que usted está construyendo.La creación de un representante escenario de prueba, y empezar a martillazos de distancia.Entonces usted sabrá la respuesta definitiva.

Además de su caso de uso, sino que también depende de la CPU, memoria, bus frontal, sistema operativo, la configuración de la caché, etcétera.

En serio, prueba de su propio escenario.

Si usted necesita algunos números (que en realidad puede no significar nada en el escenario):

Estoy muy de acuerdo con Dana point:crear un programa de prueba y asegúrese de que el modo en que se accede a los datos imita lo más cerca posible de los patrones que usted espera que su aplicación tenga.Esto es extremadamente importante con BDB debido a los diferentes patrones de acceso de rendimiento muy diferente rendimiento.

Aparte de eso, estas son las condiciones generales de los factores de mayor impacto en el rendimiento:

  1. Método de acceso (que en tu caso supongo que es BTREE).

  2. Nivel de persistencia, con la que ha configurado DBD (por ejemplo, en mi caso el " DB_TXN_WRITE_NOSYNC de medio ambiente de la bandera mejorado el rendimiento de la escritura en un orden de magnitud, pero se pone en peligro la persistencia)

  3. ¿El conjunto de trabajo de ajuste en la memoria caché?

  4. Número de Lecturas Vs.Escribe.

  5. Cómo extender su acceso es (recuerde que el ÁRBOL tiene una página de bloqueo de nivel - para acceder a diferentes páginas con diferentes hilos, es una gran ventaja).

  6. El patrón de acceso - meanig ¿qué probabilidad hay de hilos para bloquear el uno al otro, o incluso de estancamiento, y ¿cuál es su interbloqueo política de resolución (este puede ser un asesino).

  7. Hardware (disco y la memoria caché).

Esto equivale a que el siguiente punto:El escalado de una solución basada en DBD, de modo que ofrece una mayor concurrencia tiene dos maneras de ir sobre él;minimizar el número de bloqueos en su diseño o agregar más hardware.

No esta dependen del hardware, así como el número de hilos y esas cosas?

Me gustaría hacer una prueba sencilla y ejecutar con el aumento de la cantidad de hilos de martilleo y ver lo que nos parece mejor.

Lo que hice al trabajar contra una base de datos de las que se desconoce el rendimiento fue para medir el tiempo de respuesta a mi consulta.Seguí subiendo el hilo de contar hasta el tiempo de vuelta caer, y caer los hilos hasta que el tiempo mejora (bueno, era procesos de mi entorno, pero lo que sea).

Hubo promedios móviles y todo tipo de métricas involucradas, pero el llevar la lección fue:sólo adaptarse a cómo están funcionando las cosas en el momento.Nunca se sabe cuando los Administradores de bases de datos mejorará el rendimiento o el hardware será actualizado, o tal vez otro proceso va a venir a la carga por el sistema mientras se está ejecutando.Para adaptarse.

Ah, y otra cosa:evitar el proceso de interruptores de si se puede - lote de cosas.


Oh, debo dejar esto en claro:todo esto sucedió en tiempo de ejecución, no durante el desarrollo.

Mi manera de entender las cosas, Samba creado tdb para permitir a los "múltiples y concurrentes los escritores"para cualquier archivo de base de datos.Así que si su carga de trabajo tiene varios escritores de su desempeño puede ser malo (como en, la Samba proyecto decidió escribir su propio sistema, al parecer porque no estaba contento con la base de datos Berkeley en este caso).

Por otro lado, si la carga de trabajo que tiene un montón de lectores, entonces la pregunta es qué tan bien su sistema operativo se encarga de múltiples lectores.

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