Consumo de recursos de Synapse SQL

En este artículo se describen los modelos de consumo de recursos de Synapse SQL.

Grupo de SQL sin servidor

El grupo de SQL sin servidor es un servicio de pago por consulta que no requiere que se elija el tamaño correcto. El sistema se ajusta automáticamente en función de sus requisitos, lo que le libera de administrar la infraestructura y elegir el tamaño adecuado para la solución.

Grupo de SQL dedicado: unidades de almacenamiento de datos (DWU) y unidades de almacenamiento de datos de proceso (cDWU)

Se incluyen recomendaciones acerca de cómo elegir el número ideal de unidades de almacenamiento de datos (DWU) para optimizar el precio y el rendimiento y cómo cambiar el número de unidades.

Unidades de almacenamiento de datos

Un grupo de Synapse SQL representa una colección de recursos analíticos que se aprovisionan. Los recursos analíticos se definen como una combinación de CPU, memoria y E/S. Estos tres recursos se agrupan en unidades de escalado de proceso denominadas Unidades de almacenamiento de datos (DWU). Una DWU representa una medida abstracta y normalizada de recursos de proceso y rendimiento. Un cambio en el nivel de servicio modifica el número de DWU que están disponibles para el sistema. A su vez, este cambio ajusta el rendimiento y el costo del sistema.

Para obtener un mayor rendimiento, puede aumentar el número de unidades de almacenamiento de datos. Para obtener un menor rendimiento, reduzca las unidades de almacenamiento de datos. Los costos de almacenamiento y de proceso se facturan por separado, por lo que cambiar las unidades de almacenamiento de datos no afecta a los costos de almacenamiento.

El rendimiento de las unidades de almacenamiento de datos se basa en estas métricas de carga de trabajo de almacenamiento de datos:

  • Con qué rapidez una consulta de almacenamiento de datos estándar puede examinar un gran número de filas y, después, realizar una agregación compleja. Esta es una operación de gran consumo de E/S y de CPU.
  • Con qué rapidez el almacenamiento de datos puede ingerir datos de Azure Storage Blob o de Azure Data Lake. Esta es una operación de gran consumo de red y CPU.
  • Con qué rapidez el comando T-SQL CREATE TABLE AS SELECT puede copiar una tabla. Esta operación implica la lectura de datos del almacenamiento, su distribución entre los nodos del dispositivo y su nueva escritura en el almacenamiento. Esta es una operación de gran consumo de CPU, E/S y red.

Aumentar las DWU:

  • Cambia linealmente el rendimiento del sistema para exámenes, agregaciones e instrucciones CTAS.
  • Aumenta el número de lectores y escritores para las operaciones de carga de PolyBase.
  • Aumenta el número máximo de consultas simultáneas y ranuras de simultaneidad.

Objetivo de nivel de servicio

El objetivo de nivel de servicio (SLO) es la opción de escalabilidad que determina el nivel de costo y el rendimiento del almacenamiento de datos. Los niveles de servicio de Gen2 se miden en unidades de almacenamiento de datos de proceso (cDWU); por ejemplo, DW2000c. Los niveles de servicio de Gen1 se miden en DWU; por ejemplo, DW2000.

El objetivo de nivel de servicio (SLO) es la opción de escalabilidad que determina el nivel de costo y el rendimiento del almacenamiento de datos. Los niveles de servicio del grupo de SQL dedicado Gen2 se miden en unidades de almacenamiento de datos (DWU); por ejemplo, DW2000c.

Nota

Azure Synapse Analytics Gen2 ha agregado recientemente funcionalidades de escalado adicionales compatibles con niveles de proceso tan bajos como 100 cDWU. Los almacenes de datos existentes actualmente en Gen1 que requieren los niveles de proceso más bajos ahora pueden actualizarse a Gen2 en las regiones que están actualmente disponibles sin ningún costo adicional. Si esto no se admite aún en su región, aún puede actualizar a una región admitida. Para obtener más información, vea Actualización a Gen2.

En T-SQL, el valor de SERVICE_OBJECTIVE determina el nivel de servicio y el nivel de rendimiento del grupo de SQL dedicado.

CREATE DATABASE mySQLDW
(Edition = 'Datawarehouse'
 ,SERVICE_OBJECTIVE = 'DW1000c'
)
;

Niveles de rendimiento y unidades de almacenamiento de datos

Cada nivel de rendimiento usa una unidad de medida ligeramente diferente para sus unidades de almacenamiento de datos. Esta diferencia se refleja en la factura, ya que la unidad de escala se traduce directamente en la facturación.

  • Los almacenamientos de datos de Gen1 se miden en unidades de almacenamiento de datos (DWU).
  • Los almacenamientos de datos de Gen2 se miden en unidades de almacenamiento de datos de proceso (cDWU).

Tanto las DWU como las cDWU admiten el escalado vertical y la reducción vertical del proceso, así como pausar el proceso cuando no es necesario usar el almacén de datos. Estas operaciones son a petición. El nivel Gen2 usa una memoria caché basada en disco local en los nodos de proceso para mejorar el rendimiento. Al escalar o pausar el sistema, se invalida la memoria caché y es necesario un período de calentamiento de la memoria caché para conseguir un rendimiento óptimo.

A medida que aumenta el número de unidades de almacenamiento de datos, también aumentan linealmente los recursos informáticos. Gen2 proporciona el mejor rendimiento de consultas y la mayor escalabilidad. Los sistemas Gen2 también aprovechan al máximo el uso de la memoria caché.

Límites de capacidad

Cada servidor SQL Server (por ejemplo, myserver.database.windows.net) tiene una cuota de unidad de transacción de base de datos (DTU) que permite un número específico de unidades de almacenamiento de datos. Para más información, consulte los límites de capacidad de administración de cargas de trabajo.

Evaluación del número de unidades del almacenamiento de datos necesarias

El número ideal de unidades de almacenamiento de datos depende en gran medida de la carga de trabajo y de la cantidad de datos que se hayan cargado en el sistema.

Pasos para encontrar la mejor DWU para la carga de trabajo:

  1. Comience por seleccionar una DWU más pequeña.
  2. Supervise el rendimiento de su aplicación a medida que prueba cargas de datos en el sistema, observando el número de DWU seleccionadas en comparación con el rendimiento que observe.
  3. Identifique los requisitos adicionales para períodos de máxima actividad periódicos. Puede que las cargas de trabajo que muestran picos y aumentos de actividad significativos se deban escalar con frecuencia.

Un grupo de SQL es un sistema de escalado horizontal que puede aprovisionar grandes cantidades de procesos y consultar cantidades considerables de datos. Para ver sus verdaderas capacidades de escalado, especialmente en DWU más grandes, se recomienda escalar el conjunto de datos para asegurar que tiene suficientes datos como para alimentar las CPU. Para probar la escala, se recomienda usar al menos 1 TB.

Nota

El rendimiento de las consultas solo aumenta con más paralelización si el trabajo se puede dividir entre nodos de proceso. Si ve que el escalado no cambia el rendimiento, es posible que deba ajustar el diseño de las tablas o de las consultas. Para obtener instrucciones para el ajuste de consultas, vea Manage user queries (Administración de consultas de usuarios).

Permisos

Para cambiar las unidades de almacenamiento de datos es necesario disponer de los permisos descritos en ALTER DATABASE.

Los roles integrados de Azure, como Colaborador de SQL DB y Colaborador de SQL Server, pueden cambiar la configuración de DWU.

Ver la configuración de DWU actual

Para ver la configuración actual de DWU:

  1. Abra el Explorador de objetos de SQL Server en Visual Studio.
  2. Conéctese a la base de datos maestra asociada al servidor SQL lógico.
  3. Seleccione en la vista de administración dinámica sys.database_service_objectives. Este es un ejemplo:
SELECT  db.name [Database]
,        ds.edition [Edition]
,        ds.service_objective [Service Objective]
FROM    sys.database_service_objectives   AS ds
JOIN    sys.databases                     AS db ON ds.database_id = db.database_id
;

Cambiar unidades de almacenamiento de datos

Azure portal

Para cambiar DWU:

  1. Abra Azure Portal, abra la base de datos y seleccione Escalar.

  2. En Escalar, mueva el control deslizante izquierdo o derecho para cambiar el valor de DWU.

  3. Seleccione Guardar. Aparece un mensaje de confirmación. Seleccione para confirmar o No para cancelar.

PowerShell

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Para cambiar las DWU, use el cmdlet de PowerShell Set-AzSqlDatabase. En el ejemplo siguiente se establece el objetivo de nivel de servicio en DW1000 para la base de datos MySQLDW que se hospeda en el servidor MyServer.

Set-AzSqlDatabase -DatabaseName "MySQLDW" -ServerName "MyServer" -RequestedServiceObjectiveName "DW1000c"

Para más información, consulte los cmdlets de PowerShell para Azure Synapse Analytics

T-SQL

Con T-SQL, puede ver la configuración actual de DWU, modificarla y comprobar el progreso.

Para cambiar las DWU:

  1. Conéctese a la base de datos maestra asociada al servidor.
  2. Use la instrucción TSQL ALTER DATABASE. En el ejemplo siguiente se establece el objetivo de nivel de servicio en DW1000c para la base de datos MySQLDW.
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

API de REST

Para cambiar las DWU, utilice la API REST Create or Update Database (Creación o actualización de base de datos). En el ejemplo siguiente se establece el objetivo de nivel de servicio en DW1000c para la base de datos MySQLDW, que se hospeda en el servidor MyServer. El servidor está en un grupo de recursos de Azure denominado ResourceGroup1.

PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}?api-version=2014-04-01-preview HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
    "properties": {
        "requestedServiceObjectiveName": DW1000
    }
}

Para ver más ejemplos de API REST, consulte el artículo sobre las API REST para Azure Synapse Analytics.

Comprobar el estado de los cambios de DWU

Los cambios de DWU pueden tardar varios minutos en completarse. Si va a realizar una operación de escalabilidad automática, considere la posibilidad de implementar la lógica para asegurarse de que se han completado ciertas operaciones antes de pasar a realizar otra acción.

La comprobación del estado de la base de datos a través de varios puntos de conexión le permitirá implementar correctamente la automatización. El portal muestra una notificación tras al finalizar una operación y el estado actual de las bases de datos, pero no permite la comprobación programática del estado.

No se puede comprobar el estado de la base de datos para las operaciones de escalabilidad horizontal con Azure Portal.

Para comprobar el estado de los cambios de DWU:

  1. Conéctese a la base de datos maestra asociada al servidor.
  2. Envíe la consulta siguiente para comprobar el estado de la base de datos.
SELECT    *
FROM      sys.databases
;
  1. Envíe la consulta siguiente para comprobar el estado de la operación.
SELECT    *
FROM      sys.dm_operation_status
WHERE     resource_type_desc = 'Database'
AND       major_resource_id = 'MySQLDW'
;

Esta DMV devuelve información sobre varias operaciones de administración en el grupo de SQL dedicado, como la operación y el estado de esta, que es IN_PROGRESS o COMPLETED.

Flujo de trabajo de escalado

Cuando se inicia una operación de escalado, el sistema elimina primero todas las sesiones abiertas y revierte todas las transacciones abiertas para garantizar un estado coherente. Para las operaciones de escalado, el escalado solo se producirá una vez completada esta reversión transaccional.

  • Para una operación de escalado vertical, el sistema desasocia todos los nodos de proceso, aprovisiona los nodos de proceso adicionales y luego se vuelve a asociar a la capa de almacenamiento.
  • Para una operación de reducción vertical, el sistema desasocia todos los nodos de proceso y luego solo vuelve a asociar los nodos necesarios para la capa de almacenamiento.

Pasos siguientes

Para más información acerca de cómo administrar el rendimiento, consulte Clases de recursos para la administración de cargas de trabajo y Límites de memoria y simultaneidad.