Asesor de distribución de Azure Synapse SQL

Se aplica a: grupos de SQL dedicados de Azure Synapse Analytics (anteriormente SQL DW)

En Azure Synapse SQL, cada tabla se distribuye mediante la estrategia elegida por el cliente (round robin, hash distribuido, replicado). La estrategia de distribución elegida puede afectar considerablemente al rendimiento de las consultas.

La característica de asesor de distribución (DA) de Azure Synapse SQL analiza las consultas de los clientes y recomienda las mejores estrategias de distribución para las tablas con el fin de mejorar el rendimiento de las consultas. El cliente puede proporcionar las consultas que el asesor debe tener en cuenta o extraer de consultas históricas disponibles en DMV.

Nota

El asesor de distribución se encuentra en versión preliminar para Azure Synapse Analytics. Las características en versión preliminar están destinadas únicamente a las pruebas y no deben usarse en instancias de producción o en datos de producción. Como característica en versión preliminar, el asesor de distribución está sujeta a cambios en el comportamiento o la funcionalidad. También debe conservar una copia de los datos de prueba si los datos son importantes. El Asesor de distribución no admite tablas distribuidas de varias columnas.

Requisitos previos

  • Ejecute la instrucción T-SQL SELECT @@version para asegurarse de que el grupo de SQL dedicado de Azure Synapse Analytics es la versión 10.0.15669 o posterior. Si la versión es inferior, una nueva versión debería llegar automáticamente a los grupos de SQL dedicados aprovisionados durante su ciclo de mantenimiento.

  • Asegúrese de que las estadísticas estén disponibles y actualizadas antes de ejecutar el asesor. Para más información, consulte los artículos Administración de estadísticas de tabla, CREATE STATISTICS y UPDATE STATISTICS para obtener más detalles sobre las estadísticas.

  • Habilite el asesor de distribución de Azure Synapse para la sesión actual con el comando SET RECOMMENDATIONS T-SQL.

Análisis de la carga de trabajo y generación de recomendaciones de distribución

En el tutorial siguiente se explica el caso de uso de ejemplo para usar la característica del asesor de distribución para analizar las consultas de los clientes y recomendar las mejores estrategias de distribución.

El asesor de distribución solo analiza las consultas que se ejecutan en tablas de usuario.

1. Creación de procedimientos almacenados del asesor de distribución

Para ejecutar el asesor fácilmente, cree dos nuevos procedimientos almacenados en la base de datos. Ejecute el script de CreateDistributionAdvisor_PublicPreview disponible para su descarga en GitHub:

Get-Help Descripción
dbo.write_dist_recommendation Define las consultas en las que analizará el asesor de distribución. Puede proporcionar consultas manualmente o leer de hasta 100 consultas anteriores de las cargas de trabajo reales de sys.dm_pdw_exec_requests.
dbo.read_dist_recommendation Ejecuta el asesor y genera recomendaciones.

Este es un ejemplo de cómo podría ejecutar el asesor.

2a. Ejecución del asesor en la carga de trabajo pasada en DMV

Ejecute los siguientes comandos para leer hasta las últimas 100 consultas de la carga de trabajo para las recomendaciones de análisis y distribución:

EXEC dbo.write_dist_recommendation <Number of Queries max 100>, NULL
go
EXEC dbo.read_dist_recommendation;
go

Para ver qué consultas se analizaron mediante el asesor de distribución, ejecute el script e2e_queries_used_for_recommendations.sql disponible para su descarga en GitHub.

2b. Ejecución del asesor en consultas seleccionadas

El primer parámetro de dbo.write_dist_recommendation debe establecerse en 0 y el segundo parámetro es una lista separada por puntos y comas de hasta 100 consultas que el asesor de distribución analizará. En el ejemplo siguiente, queremos ver la recomendación de distribución para dos instrucciones separadas por punto y coma, select count (*) from t1; y select * from t1 join t2 on t1.a1 = t2.a1;.

EXEC dbo.write_dist_recommendation 0, 'select count (*) from t1; select * from t1 join t2 on t1.a1 = t2.a1;'
go
EXEC dbo.read_dist_recommendation;
go

3. Vista de recomendaciones

El procedimiento almacenado del sistema dbo.read_dist_recommendation devolverá recomendaciones en el siguiente formato cuando se complete la ejecución:

Nombre de la columna Descripción
Table_name Tabla que el asesor de distribución ha analizado. Una línea por tabla independientemente del cambio en la recomendación.
Current_Distribution Estrategia de distribución de tabla actual.
Recommended_Distribution Distribución recomendada. Esto puede ser el mismo que Current_Distribution si no se recomienda ningún cambio.
Distribution_Change_Command Comando T-SQL de CTAS para implementar la recomendación.

4. Implementación del consejo

  • Ejecute el comando CTAS proporcionado por el asesor de distribución para crear nuevas tablas con la estrategia de distribución recomendada.
  • Modifique las consultas para que se ejecuten en tablas nuevas.
  • Ejecute consultas en tablas antiguas y nuevas para comparar las mejoras de rendimiento.

Nota

Para que podamos mejorar el Asesor de distribución, rellene esta encuesta rápida.

Solución de problemas

Esta sección contiene escenarios comunes de solución de problemas y errores comunes que puede encontrar.

1. Estado obsoleto de una ejecución anterior del asesor

1a. Síntoma:

Verá este mensaje de error al ejecutar el asesor:

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Mitigación:
  • Compruebe que usa comillas simples '' para ejecutar el asesor en consultas seleccionadas.
  • Inicie una nueva sesión en SSMS y ejecute el asesor.

2. Errores durante la ejecución del asesor

2a. Síntoma:

El panel de "resultado" muestra CommandToInvokeAdvisorString a continuación, pero no muestra RecommendationOutput después.

Por ejemplo, solo verá el conjunto de resultados Command_to_Invoke_Distribution_Advisor.

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor.

Pero no el segundo conjunto de resultados que contiene los comandos T-SQL de cambio de tabla:

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor with a second resultset containing table change T-SQL commands.

2b. Mitigación:
  • Compruebe la salida de CommandToInvokeAdvisorString anterior.

  • Quite las consultas que ya no sean válidas y que se hayan agregado aquí desde las consultas seleccionadas a mano o desde la DMV; para ello, edite la cláusula WHERE en: Consultas consideradas por el asesor de distribución.

3. Error durante el procesamiento posterior de la salida de la recomendación

3a. Síntoma:

Se muestra el siguiente mensaje de error.

Invalid length parameter passed to the LEFT or SUBSTRING function.
3b. Mitigación:

Asegúrese de que tiene la versión más actualizada del procedimiento almacenado desde GitHub:

Comentarios del grupo de productos de Azure Synapse

Para que podamos mejorar el Asesor de distribución, rellene esta encuesta rápida.

Si necesita información que no se proporciona en este artículo, busque en la página de preguntas y respuestas de Microsoft para Azure Synapse, donde puede plantear preguntas a otros usuarios y al grupo de productos de Azure Synapse Analytics.

Supervisamos continuamente este foro para garantizar que sus preguntas las responde otro usuario o alguno de nosotros. Si prefiere formular sus preguntas en Stack Overflow, también tenemos un foro de Stack Overflow acerca de Azure Synapse Analytics.

Para las solicitudes de características, use la página de comentarios de Azure Synapse Analytics. Al agregar solicitudes o votar por otras nos ayuda a centrarnos en las características más demandadas.

Pasos siguientes