Compartir a través de


Asesor de distribución en 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 Distributed, Replicated). La estrategia de distribución elegida puede afectar considerablemente al rendimiento de las consultas.

La característica Del 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 para 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 está actualmente en versión preliminar para Azure Synapse Analytics. Las características en versión preliminar están diseñadas solo para pruebas y no deben usarse en instancias de producción ni en datos de producción. Como característica en versión preliminar, el Asesor de distribución está sujeto a cambios en el comportamiento o la funcionalidad. Mantenga también una copia de los datos de prueba si los datos son importantes. El Asesor de distribución no admite tablas distribuidas de varias columnas.

Prerrequisitos

  • Ejecute la instrucción SELECT @@version T-SQL 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 obtener más información, consulte los artículos Administrar estadísticas de tabla, CREATE STATISTICS y UPDATE STATISTICS para obtener más información 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. Crear 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 desde GitHub:

Comando Descripción
dbo.write_dist_recommendation Define las consultas que serán analizadas por DA. Puede proporcionar consultas manualmente o leer hasta 100 consultas anteriores de las tareas de procesamiento reales en 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 realizar 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 analizaron DA, ejecute el script de e2e_queries_used_for_recommendations.sql disponible para su descarga desde 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 y select count (*) from t1;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. Ver recomendaciones

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

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

4. Implementar los consejos

  • 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 nuevas tablas.
  • Ejecute consultas en tablas antiguas y nuevas para compararlas con las mejoras de rendimiento.

Nota:

Para ayudarnos a 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 "resultados" muestra CommandToInvokeAdvisorString debajo, pero no muestra RecommendationOutput debajo.

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

Captura de pantalla de la salida de un resultado de T-SQL que muestra el Command_to_Invoke_Distribution_Advisor.

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

Captura de pantalla de la salida de un resultado de T-SQL que muestra el Command_to_Invoke_Distribution_Advisor con un segundo conjunto de resultados que contiene comandos T-SQL de cambio de tabla.

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

  • Quite las consultas que ya no sean válidas y que se hayan agregado aquí desde las consultas seleccionadas manualmente o desde el DMV mediante la edición de la cláusula WHERE en: Consultas consideradas por DA.

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

3a. Síntoma:

Verá 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 ayudarnos a mejorar el Asesor de distribución, rellene esta encuesta rápida.

Si necesita información no proporcionada en este artículo, busque la página de preguntas y respuestas de Microsoft para Azure Synapse es un lugar para que pueda plantear preguntas a otros usuarios y al grupo de productos de Azure Synapse Analytics.

Supervisamos activamente este foro para asegurarnos de que otro usuario o uno de nosotros responda a sus preguntas. Si prefiere formular sus preguntas en Stack Overflow, también tenemos un foro de Stack Overflow de Azure Synapse Analytics.

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

Pasos siguientes