sql >> Base de Datos >  >> RDS >> Database

Velocidades y alimentaciones de rendimiento secuencial

He estado hablando sobre la importancia del rendimiento de rendimiento secuencial para SQL Server durante bastante tiempo. El rendimiento secuencial es de vital importancia para muchas operaciones comunes en SQL Server, que incluyen:

  1. Restauraciones y copias de seguridad completas de la base de datos
  2. Trabajo de creación y mantenimiento de índices
  3. Inicializar suscripciones e instantáneas de replicación
  4. Inicializar réplicas de AlwaysOn AG
  5. Inicializar réplicas de bases de datos
  6. Iniciando archivos secundarios de envío de registros
  7. Cargas de trabajo de consultas de almacenamiento de datos relacionales
  8. Operaciones ETL de almacenamiento de datos relacionales

A pesar de la importancia del rendimiento secuencial para SQL Server, sigo viendo a muchas personas que se enfocan solo en el rendimiento y la latencia de E/S aleatorias, ignorando en gran medida el rendimiento de rendimiento secuencial. Mientras piensa en el rendimiento del rendimiento secuencial, debe considerar la ruta completa de los datos, desde que están en reposo en sus medios de almacenamiento hasta que los consumen los núcleos de su procesador.

Según el tipo de tecnología de almacenamiento que utilice, puede estar conectado a su servidor host mediante una tarjeta de interfaz de red (NIC) Ethernet o una tarjeta adaptadora de canal host (HCA) InfiniBand. Este tipo de conexión es más común para iSCSI SAN y para recursos compartidos de archivos de bloque de mensajes de servidor remoto (SMB) 3.0. Microsoft TechNet tiene una buena referencia sobre este tema, llamada Mejora del rendimiento de un servidor de archivos con SMB Direct.

El rendimiento secuencial teórico de un solo dispositivo NIC/HCA (por puerto) se muestra en la Figura 1:

Figura 1:rendimiento teórico de NIC/HCA

En caso de que se pregunte a qué se refieren InfiniBand (QDR) o Infiniband (FDR), InfiniBand Trade Association mantiene una hoja de ruta de InfiniBand que muestra el historial y los avances planificados en el ancho de banda de InfiniBand durante los próximos años. Infiniband tiene una lista de acrónimos que describen el rendimiento relativo de un enlace InfiniBand como se muestra a continuación:

  • SDR:tasa de datos única
  • DDR:doble velocidad de datos
  • QDR:velocidad de datos cuádruple
  • FDR:catorce velocidades de datos
  • EDR:velocidad de datos mejorada
  • HDR:alta velocidad de datos
  • NDR:próxima velocidad de datos

Las SAN tradicionales de canal de fibra (FC) suelen utilizar uno o más adaptadores de bus de host (HBA) que tienen uno o más puertos para cables ópticos que se conectan a un conmutador FC o directamente a la propia SAN FC. Todavía es relativamente raro ver un uso generalizado de HBA FC de 16 Gb, por lo que la mayoría de los servidores aún tienen HBA FC de 4 Gb u 8 Gb.

El rendimiento secuencial teórico de un solo dispositivo HBA (por puerto) se muestra en la Figura 2:

Figura 2:rendimiento teórico de HBA

Independientemente del tipo de dispositivo de interfaz o tecnología que esté utilizando, debe preocuparse por el tipo de ranura de bus de expansión en la que está conectado en su servidor host. Según la antigüedad de su servidor y el tipo de procesador que esté utilizando, esto puede tener un gran impacto en el ancho de banda total que puede admitir la ranura del bus. Las ranuras Peripheral Component Interconnect Express (PCIe) Gen 3 tienen el doble de ancho de banda por carril que una ranura PCIe Gen 2 anterior. Puede determinar cuántas y qué tipo de ranuras de expansión tiene en su servidor host consultando las especificaciones y la documentación de su marca y modelo de servidor. Hasta ahora, solo los procesadores de la familia Intel Xeon E3 v2, Xeon E3 v3, Xeon E5, Xeon E5 v2, Xeon E5 v3 y Xeon E7 v2 admiten ranuras PCIe Gen 3. Cualquier cosa anterior a esta tendrá ranuras PCIe Gen 2, o tal vez incluso ranuras PCIe Gen 1 si es extremadamente antiguo (en términos informáticos).

El rendimiento secuencial teórico de una sola ranura PCIe se muestra en la Figura 3:

Figura 3:Rendimiento teórico de la ranura de expansión

Desde la introducción de la microarquitectura Intel Nehalem en 2008, todos los procesadores de servidor Intel 2P y más grandes han sido compatibles con Intel QuickPath Interconnect (QPI) para las conexiones entre los procesadores y la memoria en un servidor, lo que brinda a estos nuevos procesadores soporte para el acceso no uniforme a la memoria. (NUMA), que reemplazó al antiguo bus frontal (FSB). NUMA mejora la escalabilidad bastante significativamente a medida que aumenta la cantidad de procesadores físicos en un sistema, especialmente cuando tiene cuatro o más procesadores físicos en un sistema host.

Los procesadores Intel modernos tienen controladores de memoria integrados que admiten Intel QPI. Cuando observe las especificaciones de un procesador Intel en particular en la base de datos ARK en línea, podrá ver su rendimiento QPI nominal en GigaTransfers por segundo (GT/seg). Una GigaTransfer por segundo es simplemente mil millones de operaciones que transfieren datos por segundo.

Por ejemplo, un procesador Intel Xeon E5-2667 v3 moderno y de gama alta (Haswell-EP) tiene una velocidad Intel QPI de 9,6 GT/seg, mientras que un procesador Intel Xeon E5503 más antiguo y de gama baja (Nehalem-EP) tiene una Velocidad Intel QPI de solo 4,8 GT/seg. Incluso entre los procesadores de la misma generación de microarquitectura, verá variaciones en la velocidad Intel QPI nominal. Por ejemplo, en la familia Haswell-EP de 22 nm, el procesador Intel Xeon E5-2603 v3 de gama baja tiene una potencia de 6,4 GT/seg, mientras que el procesador Intel Xeon E5-2660 v3 de gama alta tiene una potencia de 9,6 GT/seg. Los procesadores Intel Xeon E5, E5 v2 y E5 v3 tienen dos enlaces QPI por procesador, mientras que los procesadores de la familia Intel E7 y E7 v2 tienen tres enlaces QPI por procesador.

El rendimiento secuencial teórico de un solo enlace Intel QPI se muestra en la Figura 4:

Figura 4:rendimiento teórico de Intel QPI

Según la antigüedad de su servidor host, el procesador exacto que esté utilizando y el tipo, la velocidad y la cantidad de memoria instalada, tendrá diferentes cantidades de rendimiento secuencial teórico disponibles de cada módulo de memoria. Todos los procesadores Intel modernos tienen controladores de memoria integrados que controlan la cantidad y la frecuencia de la memoria que admitirá el procesador. Los servidores host antiguos más recientes utilizarán memoria DDR3, mientras que los procesadores Haswell-EP (familia Intel Xeon E5 v3) de última generación admiten memoria DDR4. La memoria DDR4 admite velocidades más altas, mayor rendimiento, mayor densidad de memoria, menor consumo de energía y mayor confiabilidad en comparación con la memoria DDR3.

El rendimiento secuencial teórico de un solo módulo de memoria se muestra en la Figura 5:

Figura 5:Rendimiento teórico del módulo de memoria

Al observar los componentes individuales en un sistema nuevo existente o planificado, debe estar atento a los componentes que no coinciden que pueden introducir cuellos de botella de rendimiento secuencial artificiales en el sistema. Por ejemplo, es posible que tenga un servidor nuevo con procesadores de gama alta que esté paralizado por el hecho de que utiliza un HBA FC de 4 Gb para acceder a una SAN. Otro ejemplo podría ser una tarjeta de almacenamiento flash PCIe muy rápida o un controlador RAID que se instaló en una ranura PCIe 2.0 x4 de bajo ancho de banda, lo que limitó artificialmente el rendimiento secuencial total del dispositivo.

Sé que ha sido mucha información técnica para digerir, especialmente para las personas que no son entusiastas del hardware. Creo que la idea principal que debe extraer de este artículo es que el rendimiento secuencial es muy importante para muchas tareas y cargas de trabajo comunes de SQL Server. Los detalles de bajo nivel sobre procesadores, tipos de memoria, ranuras de expansión y dispositivos de expansión en realidad marcan una gran diferencia en el rendimiento de rendimiento secuencial que obtendrá de un servidor y su subsistema de almacenamiento. Tener un buen rendimiento secuencial hace que su vida sea mucho más fácil como profesional de bases de datos, lo que le permite brindar soporte a su organización a un nivel mucho más alto.