¿Es relevante el rendimiento de la CPU para un servidor de base de datos?

33

Esta es una pregunta puramente teórica. Digamos que tengo una aplicación implementada en varios servidores.

  1. Un equilibrador de carga,
  2. Servidores de aplicaciones múltiples / escalables
  3. 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.

Zenklys
fuente
Bueno, tiene que tener uno.
Preocupado por

Respuestas:

29

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).

kgrittn
fuente
Hola, tengo el libro. ¿Hay alguna página, sección o capítulo en particular al que se refiera? (Por cierto +1 para la perspectiva PostgreSQL)
RolandoMySQLDBA
Gracias por la información sobre PostgreSQL. Revisaré el libro. ;)
Zenklys
1
Cosas buenas de las páginas 21-23
RolandoMySQLDBA
Puedo ver la sabiduría de su segundo párrafo en comparación con las páginas 21-23.
RolandoMySQLDBA
23

Estrictamente desde una perspectiva MySQL, esa es una pregunta muy cargada

¿Frecuencia de CPU relevante para un servidor de base de datos?

Si bien la CPU y la placa base son más rápidas, otros obstáculos pueden interferir. Tales cuellos de botella incluyen:

  • E / S de disco
  • Máximos de conexión
  • Latencia de conexion
  • Rendimiento de consulta por conexión

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?

¿Son relevantes las CPU de núcleo múltiple?

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 .

¿La RAM es más importante que la CPU?

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.

RolandoMySQLDBA
fuente
2
Gran respuesta. Voy a revisar todos esos enlaces, gracias.
Zenklys
6
  • No
  • No

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.)

gbn
fuente
Gracias por la respuesta. ¿Las SSD son una buena opción entonces? ¿Sobre la potencia de la CPU?
Zenklys
@Zenklys: difícil de decir. ¿Qué tamaño de base de datos tienes? ¿Escribir volumen? Leer carga? OLTP o OLAP? etc
gbn
20-30 gb máximo. Relación de lectura / escritura de 10 a 1, solo datos pequeños, OLTP.
Zenklys
2
@Zenklys: en cuyo caso, realmente no importa. Simplemente compre RAM especialmente para MySQL para que se
almacene la
3
No estoy seguro de por qué esta es la respuesta aceptada. Es simplista ya que no considera la aplicación, la carga de trabajo o el tamaño del conjunto de datos. @kgrittn dio una mejor respuesta basada en la experiencia del mundo real y una mejor comprensión de la teoría de la operación para Postgres.
dbenhur