Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se explica cómo calcular y administrar los costos del grupo de SQL sin servidor en Azure Synapse Analytics:
- Estimación de la cantidad de datos procesados antes de emitir una consulta
- Uso de la característica de control de costos para establecer el presupuesto
Comprenda que los costos de los pools de SQL sin servidor en Azure Synapse Analytics son solo una parte de los costos mensuales en su factura de Azure. Si usa otros servicios de Azure, se le facturan todos los servicios y recursos de Azure usados en la suscripción de Azure, incluidos los servicios de terceros. En este artículo se explica cómo planear y administrar los costos del grupo de SQL sin servidor en Azure Synapse Analytics.
Datos procesados
Los datos procesados son la cantidad de datos que el sistema almacena temporalmente mientras se ejecuta una consulta. Los datos procesados constan de las siguientes cantidades:
- Cantidad de datos leídos del almacenamiento. Esta cantidad incluye:
- Datos obtenidos al leer los datos.
- Datos leídos durante la lectura de metadatos (para formatos de archivo que contienen metadatos, como Parquet).
- Cantidad de datos en resultados intermedios. Estos datos se transfieren entre nodos mientras se ejecuta la consulta. Incluye la transferencia de datos al punto de conexión, en un formato sin comprimir.
- Cantidad de datos escritos en el almacenamiento. Si usa CETAS para exportar el conjunto de resultados al almacenamiento, la cantidad de datos escritos se agrega a la cantidad de datos procesados para la parte SELECT de CETAS.
La lectura de archivos desde el almacenamiento está muy optimizada. El proceso usa:
- Captura previa, que podría agregar cierta sobrecarga a la cantidad de datos leídos. Si una consulta lee un archivo completo, no hay ninguna sobrecarga. Si un archivo se lee parcialmente, como en las consultas TOP N, se leen un poco más datos mediante la captura previa.
- Analizador de valores separados por comas (CSV) optimizado. Si usa PARSER_VERSION='2.0' para leer archivos CSV, las cantidades de datos leídos del almacenamiento aumentan ligeramente. Un analizador CSV optimizado lee los archivos en paralelo, en fragmentos de tamaño igual. Los fragmentos no contienen necesariamente filas completas. Para asegurarse de que se analizan todas las filas, el analizador CSV optimizado también lee pequeños fragmentos de fragmentos adyacentes. Este proceso agrega una pequeña cantidad de sobrecarga.
Statistics
El optimizador de consultas del grupo de SQL sin servidor se basa en estadísticas para generar planes de ejecución de consultas óptimos. Puede crear estadísticas manualmente. De lo contrario, el grupo de SQL sin servidor los crea automáticamente. En cualquier caso, las estadísticas se crean mediante la ejecución de una consulta independiente que devuelve una columna específica a una frecuencia de muestreo proporcionada. Esta consulta tiene una cantidad asociada de datos procesados.
Si ejecuta la misma consulta o cualquier otra consulta que se beneficiaría de las estadísticas creadas, las estadísticas se reutilizan si es posible. No hay datos adicionales procesados para la creación de estadísticas.
Cuando se crean estadísticas para una columna Parquet, solo se lee la columna correspondiente de los archivos. Cuando se crean estadísticas para una columna CSV, se leen y analizan archivos completos.
Redondeo
La cantidad de datos procesados se redondea hasta el MB más cercano por consulta. Cada consulta tiene un mínimo de 10 MB de datos procesados.
Qué datos no se incluyen en el procesamiento.
- Metadatos de nivel de servidor (como inicios de sesión, roles y credenciales de nivel de servidor).
- Bases de datos que crea en su punto de conexión. Esas bases de datos solo contienen metadatos (como usuarios, roles, esquemas, vistas, funciones insertadas con valores de tabla [TVF], procedimientos almacenados, credenciales con ámbito de base de datos, orígenes de datos externos, formatos de archivo externos y tablas externas).
- Si usa la inferencia de esquema, los fragmentos de archivo se leen para deducir los nombres de columna y los tipos de datos, y la cantidad de datos leídos se agrega a la cantidad de datos procesados.
- Instrucciones del lenguaje de definición de datos (DDL), excepto la instrucción CREATE STATISTICS porque procesa los datos del almacenamiento en función del porcentaje de ejemplo especificado.
- Consultas de solo metadatos.
Reducción de la cantidad de datos procesados
Puede optimizar la cantidad de datos por consulta procesados y mejorar el rendimiento mediante la creación de particiones y la conversión de los datos a un formato comprimido basado en columnas como Parquet.
Ejemplos
Imagine tres tablas.
- La tabla population_csv está respaldada por 5 TB de archivos CSV. Los archivos se organizan en cinco columnas de tamaño igual.
- La tabla population_parquet tiene los mismos datos que la tabla population_csv. Está respaldado por 1 TB de archivos Parquet. Esta tabla es más pequeña que la anterior debido a que los datos se comprimen en formato Parquet.
- La tabla very_small_csv está respaldada por 100 KB de archivos CSV.
Consulta 1: SELECT SUM(population) FROM population_csv
Esta consulta lee y analiza los archivos completos para obtener valores de la columna de población. Los nodos procesan fragmentos de esta tabla, y la suma de población de cada fragmento se transfiere entre nodos. La suma final se transfiere al destino final.
Esta consulta procesa 5 TB de datos más una pequeña sobrecarga para transferir sumas de fragmentos.
Consulta 2: SELECT SUM(population) FROM population_parquet
Al consultar formatos comprimidos y basados en columnas como Parquet, se leen menos datos que en la consulta 1. Verá este resultado porque el grupo de SQL sin servidor lee una sola columna comprimida en lugar de todo el archivo. En este caso, se lee 0,2 TB. (Cinco columnas de tamaño igual son de 0.2 TB cada una.) Los nodos procesan fragmentos de esta tabla, y la suma de población de cada fragmento se transfiere entre nodos. La suma final se transfiere a su endpoint.
Esta consulta procesa 0,2 TB más una pequeña cantidad de sobrecarga para transferir sumas de fragmentos.
Consulta 3: SELECT * FROM population_parquet
Esta consulta lee todas las columnas y transfiere todos los datos en un formato sin comprimir. Si el formato de compresión es 5:1, la consulta procesa 6 TB porque lee 1 TB y transfiere 5 TB de datos sin comprimir.
Consulta 4: SELECT COUNT(*) FROM very_small_csv
Esta consulta lee archivos completos. El tamaño total de los archivos en el almacenamiento de esta tabla es de 100 KB. Los nodos procesan fragmentos de esta tabla y la suma de cada fragmento se transfiere entre los nodos. La suma final se transfiere al destino.
Esta consulta procesa ligeramente más de 100 KB de datos. La cantidad de datos procesados para esta consulta se redondea hasta 10 MB, como se especifica en la sección Redondeo de este artículo.
Control de costos
La característica de control de costos en el grupo de SQL sin servidor permite establecer el presupuesto para la cantidad de datos procesados. Puede establecer el presupuesto en TB de datos procesados durante un día, semana y mes. Al mismo tiempo, puede tener uno o varios presupuestos establecidos. Para configurar el control de costos para el grupo de SQL sin servidor, puede usar Synapse Studio o T-SQL.
Configuración del control de costos para el grupo de SQL sin servidor en Synapse Studio
Para configurar el control de costos para el grupo de SQL sin servidor en Synapse Studio, vaya a la sección Administrar en el menú de la izquierda, luego seleccione el elemento Grupo de SQL en Grupos de análisis. Al mantener el puntero sobre el grupo de SQL sin servidor, observará un icono para el control de costos: haga clic en este icono.
Una vez que haga clic en el icono de control de costos, aparecerá una barra lateral:
Para establecer uno o varios presupuestos, haga clic primero en el botón de opción Activar para un presupuesto que desee establecer, luego escriba el valor entero en el cuadro de texto. La unidad del valor es TB. Una vez configurados los presupuestos que quería hacer clic en el botón Aplicar situado en la parte inferior de la barra lateral. Eso es todo, ya está establecido el presupuesto.
Configuración del control de costos para el grupo de SQL sin servidor en T-SQL
Para configurar el control de costos para el grupo de SQL sin servidor en T-SQL, debe ejecutar uno o varios de los procedimientos almacenados siguientes.
sp_set_data_processed_limit
@type = N'daily',
@limit_tb = 1
sp_set_data_processed_limit
@type= N'weekly',
@limit_tb = 2
sp_set_data_processed_limit
@type= N'monthly',
@limit_tb = 3334
Para ver la configuración actual, ejecute la siguiente instrucción T-SQL:
SELECT * FROM sys.configurations
WHERE name like 'Data processed %';
Para ver la cantidad de datos que se procesaron durante el día, la semana o el mes actuales, ejecute la siguiente instrucción T-SQL:
SELECT * FROM sys.dm_external_data_processed
Superación de los límites definidos en el control de costos
En caso de que se supere cualquier límite durante la ejecución de la consulta, no se finalizará la consulta.
Cuando se supera el límite, se rechazará la nueva consulta con el mensaje de error que contiene detalles sobre el período, límite definido para ese período y los datos procesados durante ese período. Por ejemplo, en caso de que se ejecute una nueva consulta, donde el límite semanal se establece en 1 TB y se superó, el mensaje de error será:
Query is rejected because SQL Serverless budget limit for a period is exceeded. (Period = Weekly: Limit = 1 TB, Data processed = 1 TB))
Pasos siguientes
Para obtener información sobre cómo optimizar las consultas para el rendimiento, consulte Procedimientos recomendados para el grupo de SQL sin servidor.