Esta es una pregunta puramente teórica. Digamos que tengo una aplicación implementada en varios servidores.
- Un equilibrador de carga,
- Servidores de aplicaciones múltiples / escalables
- Un servidor de base de datos (único) (por el momento)
En las dos primeras partes, sé qué buscar. Pero, ¿qué pasa con el servidor de la base de datos? ¿Qué tipo de hardware debo buscar?
- ¿La frecuencia de la CPU es relevante para un servidor de base de datos?
- ¿Son relevantes las CPU de núcleo múltiple?
- ¿La RAM es más importante que la CPU?
PD: Supongamos que la base de datos elegida es MySQL o PostgreSQL.
mysql
postgresql
performance
Zenklys
fuente
fuente
Respuestas:
Para PostgreSQL, la potencia de la CPU puede ser muy relevante, especialmente si un porcentaje bastante alto del conjunto de trabajo activo de sus datos se ajusta en la RAM. La mayoría de las bases de datos con las que he trabajado han tenido la potencia de la CPU como el principal cuello de botella la mayor parte del tiempo. (Acabo de comprobar vmstat en un servidor que aloja sitios web con millones de visitas por día que alojan más de 5 TB de espacio en la base de datos, y nunca vi más del 2% de tiempo de espera en disco, pero vi un pico de 12% de tiempo de CPU del usuario).
Dado que PostgreSQL está basado en procesos, cualquier proceso solo puede ejecutarse tan rápido como un núcleo, pero en una combinación como la que tenemos en el servidor mencionado anteriormente, con un alto volumen de solicitudes pequeñas, la CPU total en todos los núcleos es lo más importante. Para la misma potencia total de CPU, PostgreSQL generalmente funcionará mejor con menos núcleos más rápidos que muchos núcleos más lentos.
Hasta el punto en que se almacena en caché un alto porcentaje de su conjunto de datos activo, agregar RAM generalmente mostrará más beneficios por el dinero que agregar núcleos. Después de tener suficiente caché, el beneficio de RAM adicional disminuye y es mejor aumentar la potencia de la CPU.
Para obtener más detalles sobre este tema en lo que respecta a PostgreSQL, no creo que haya una mejor fuente que PostgreSQL 9.0 High Performance de Greg Smith . (Divulgación completa, fui un revisor técnico del libro, pero no obtuve ningún beneficio financiero basado en las ventas).
fuente
Estrictamente desde una perspectiva MySQL, esa es una pregunta muy cargada
Si bien la CPU y la placa base son más rápidas, otros obstáculos pueden interferir. Tales cuellos de botella incluyen:
Cada pequeña ventaja ayuda, pero tengo que decir que no porque la velocidad de la CPU, en sí misma, no mejora los cuellos de botella antes mencionados. Después de todo, ¿qué bien puede hacer un RaceCar de Fórmula Uno con un paracaídas abierto o con un gorila de 800 libras al volante?
Eso depende completamente de la versión de MySQL que esté ejecutando. MySQL 5.1 InnoDB Plugin, MySQL 5.5 y XtraDB de Percona Server tienen configuraciones que DEBE CONFIGURAR CORRECTAMENTE para que InnoDB acceda a todos los núcleos. El verdadero incentivo para hacerlo se debe al hecho de que algunas versiones anteriores de MySQL LEFT UNCONFIGURED son más rápidas que las versiones más nuevas, como lo mencioné en mis publicaciones anteriores:
Por lo tanto, si no está dispuesto a configurar InnoDB para acceder a todas las CPU, tener múltiples núcleos no le compra absolutamente nada .
Oh si por supuesto. La configuración de memoria para MySQL implica la configuración
Solicitar muy poca o demasiada combinación de estas cosas y MySQL regresa para morderte. Una CPU más rápida con MySQL mal configurada para RAM solo hace que MySQL lo muerda más rápido.
fuente
En términos simples, necesita RAM y rendimiento de E / S (latencia + velocidad de lectura + velocidad de escritura) para bases de datos.
La elección de 4 o 6 núcleos o 2.5 GHz vs 3 GHz no es realmente relevante (supongo que no tiene que elegir entre un P3-450 con 32 GB de RAM o el último Xeon con 1 GB de RAM).
Si está vinculado a la CPU, entonces tiene otros problemas (diseño deficiente, índices deficientes, intercambio, servidor no dedicado, etc.)
fuente