33 votos

¿Cómo prueba de carga y capacidad de planificación para bases de datos?

Este es un canónica pregunta acerca de la capacidad de diseño de bases de datos.

Relacionado con:

Estoy mirando para crear un canónica de la cuestión de los métodos y herramientas de planificación de la capacidad para bases de datos. Esta es la intención de ser un canónica de la pregunta.

Obviamente, el flujo de trabajo general es:

  • Poner el escenario en el lugar
  • Agregar el monitoreo
  • Agregar el tráfico
  • Evaluar los resultados
  • Remediar basado en resultados
  • Enjuague, repita hasta que razonablemente feliz

Por favor, siéntase libre para describir las diferentes herramientas y técnicas para los diferentes servidores web, frameworks, etc., así como las mejores prácticas.

24voto

voretaq7 Puntos 63415

El disco y la RAM la Planificación de la Capacidad

Planificación de disco y la capacidad de memoria de un servidor de base de datos es un arte negro. Más es mejor. Más rápido es mejor.

Como pautas generales ofrezco las siguientes:

  • Quieres más espacio en disco que usted NUNCA necesite.
    Tome su mejor estimación de cuánto espacio en disco que usted necesita para los próximos 3-5 años, a continuación, haga doble.
  • Usted querrá suficiente memoria RAM para mantener sus índices de base de datos en memoria, gestionar su mayor consulta al menos dos veces más, y todavía tiene suficiente espacio para una sana OS caché de disco.
    El índice de tamaño dependerá de su base de datos, y todo lo demás depende en gran medida el conjunto de datos y de consulta/DB estructura. Voy a ofrecer hasta "Al menos 2 veces el tamaño de su tabla más grande" como una sugerencia, pero tenga en cuenta que esta sugerencia se descompone en gran almacenamiento de datos de las operaciones donde el más grande de la tabla pueden ser decenas o cientos de gigabytes.

Cada proveedor de base de datos tiene algunas instrucciones sobre la optimización del rendimiento de tu disco/memoria/OS kernel -- Pasar algún tiempo con esta documentación antes de la implementación. Que será de ayuda.


La carga de trabajo de Benchmarking y la Planificación de la Capacidad

Suponiendo que no implementado todavía...

Muchos sistemas de bases de datos de la nave con Herramientas de evaluación comparativa, Por ejemplo, Postgres barcos con pgBench.
Estas herramientas debe ser su primera parada en la evaluación comparativa de rendimiento de base de datos. Si es posible, debe ejecutar en todos los nuevos servidores de base de datos para obtener una sensación de "¿cuánto trabajo" el servidor de DB puede hacer.

Armado ahora con un crudo de referencia que es, ABSOLUTELY MEANINGLESS vamos a considerar un enfoque más realista de la evaluación comparativa: Cargar el esquema de base de datos y escribir un programa que rellena con datos ficticios, a continuación, ejecute la aplicación de las consultas con los datos.
Esto comparativas tres cosas importantes: 1. El servidor de base de datos (hardware) 2. El servidor de base de datos (software) 3. Su diseño de base de datos, y cómo interactúa con (1) y (2) anteriores.

Tenga en cuenta que esto requiere mucho más esfuerzo que la simple pre-construidos puntos de referencia como pgBench: tienes Que escribir algo de código para hacer el poblamiento, y puede que tenga que escribir algo de código para hacer las consultas y reportes de tiempo de ejecución.
Este tipo de pruebas también es sustancialmente más precisa: Puesto que usted está trabajando con su esquema y las consultas que usted puede ver cómo se realizan, y se le ofrece la oportunidad de perfil y mejorar su base de datos y consultas.

Los resultados de estas evaluaciones son una visión idealizada de la base de datos. Para estar seguro asumir que sólo podrá alcanzar el 50 y el 70% de este rendimiento en el entorno de producción (siendo el resto un cojín que le permiten controlar el crecimiento inesperado, fallas del hardware, cambios de la carga de trabajo, etc.).


De que sea demasiado tarde! Es en la producción!

Una vez que sus sistemas están en producción es demasiado tarde para "punto de referencia" -- Se puede activar el registro de las consultas/temporización brevemente y ver cuánto tiempo las cosas para la ejecución, y se puede ejecutar algunos de los "test de estrés" de las consultas en contra de los grandes conjuntos de datos durante las horas de descanso. También puede buscar en el sistema de CPU, memoria y e/S (disco ancho de banda) a la utilización para tener una idea de cómo muy cargado es.
Por desgracia, todas estas cosas van a hacer es darle a usted una idea de lo que el sistema está haciendo, y un vago concepto de cómo cercano a la saturación es.
Que nos lleva a...


Monitoreo Continuo

Todos los puntos de referencia en el mundo no le ayudará si su sistema es de repente viendo nuevas/diferentes patrones de uso.
Para mejor o peor implementaciones de bases de datos no son estáticas: que Sus desarrolladores puedan cambiar las cosas, el conjunto de datos crecerá (que parece que nunca se encogen), y los usuarios que de alguna manera va a crear locos combinaciones de eventos que nunca predijo en las pruebas.

Con el fin de hacer la planificación de capacidad adecuada para la base de datos será necesario implementar algún tipo de supervisión del rendimiento para que le avise cuando el rendimiento de la base de datos ya no está cumpliendo con sus expectativas. En que punto se puede considerar acciones correctivas (hardware nuevo esquema DB o consulta de los cambios para optimizar el uso de los recursos, etc.).


Nota: Este es un nivel muy alto y guía genérica para cambiar el tamaño de la base de datos de hardware y averiguar cuánto abuso puede tomar. Si usted todavía no está seguro acerca de cómo determinar si un sistema cumple con sus necesidades, usted debe hablar con un experto en bases de datos.
También hay un StackExchange sitio dedicado específicamente a la gestión de bases de datos: dba.stackexchange.com. Buscar a su pregunta de archivo o navegar por las etiquetas específicas para su motor de base de datos para obtener más información sobre la optimización del rendimiento.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: