Поделиться через


Управление затратами для бессерверного пула SQL в Azure Synapse Analytics

В этой статье объясняется, как оценить затраты на бессерверный пул SQL и управлять ими в Azure Synapse Analytics:

  • Оценка объема данных, обработанных перед выдачой запроса
  • Использование функции управления затратами для задания бюджета

Узнайте, что затраты на бессерверный пул SQL в Azure Synapse Analytics являются лишь частью ежемесячных расходов в счете Azure. Если вы используете другие службы Azure, вы оплачиваете все службы и ресурсы Azure, используемые в подписке Azure, включая сторонние службы. В этой статье объясняется, как спланировать затраты на бессерверный пул SQL в Azure Synapse Analytics и управлять ими.

Обработанные данные

Обработанные данные — это объем данных, которые система временно сохраняет во время выполнения запроса. Обработанные данные состоят из следующих объемов:

  • Объем данных, считываемых из хранилища. Эта сумма включает:
    • Данные считываются при чтении данных.
    • Данные считываются при чтении метаданных (для форматов файлов, содержащих метаданные, например Parquet).
  • Объем данных в промежуточных результатах. Эти данные передаются между узлами во время выполнения запроса. Он включает передачу данных в конечную точку в несжатом формате.
  • Объем данных, записанных в хранилище. Если вы используете CETAS для экспорта результирующих наборов в хранилище, то объем записанных данных добавляется в объем данных, обработанных для части SELECT CETAS.

Чтение файлов из хранилища очень оптимизировано. Этот процесс использует:

  • Предварительная выборка, которая может добавить некоторые издержки на объем чтения данных. Если запрос считывает весь файл, то накладные расходы отсутствуют. Если файл считывается частично, например в запросах TOP N, считывается немного больше данных с помощью предварительной выборки.
  • Оптимизированный CSV-парсер. Если вы используете PARSER_VERSION='2.0' для чтения CSV-файлов, объемы данных, считываемых из хранилища, немного увеличиваются. Оптимизированный средство синтаксического анализа CSV параллельно считывает файлы в блоках с равным размером. Фрагменты не обязательно содержат целые строки. Чтобы обеспечить синтаксический анализ всех строк, оптимизированный средство синтаксического анализа CSV также считывает небольшие фрагменты смежных блоков. Этот процесс добавляет небольшое количество накладных расходов.

Статистика

Оптимизатор запросов бессерверного пула SQL использует статистику для создания оптимальных планов выполнения запросов. Статистику можно создать вручную. В противном случае бессерверный пул SQL создает их автоматически. В любом случае статистика создается путем выполнения отдельного запроса, возвращающего определенный столбец по заданной частоте выборки. Этот запрос содержит связанный объем обработанных данных.

Если вы запускаете тот же или любой другой запрос, который будет использовать созданную статистику, то статистика повторно используется, если это возможно. Для создания статистики не обрабатываются дополнительные данные.

При создании статистики для столбца Parquet только соответствующий столбец считывается из файлов. При создании статистики для столбца CSV все файлы считываются и анализируются.

Округление

Объем обработанных данных округляется до ближайшего МБ на запрос. Каждый запрос имеет не менее 10 МБ обработанных данных.

Что не включается в обработанные данные

  • Метаданные уровня сервера (например, имена входа, роли и учетные данные на уровне сервера).
  • Базы данных, создаваемые в конечной точке. Эти базы данных содержат только метаданные (например, пользователи, роли, схемы, представления, встроенные функции с табличным значением [TVFs], хранимые процедуры, учетные данные с областью базы данных, внешние источники данных, форматы внешних файлов и внешние таблицы).
    • Если вы используете вывод схемы, фрагменты файлов считываются для вывода имен столбцов и типов данных, а объем считываемых данных добавляется к объему обработанных данных.
  • Операторы языка определения данных (DDL), за исключением оператора CREATE STATISTICS, который обрабатывает данные из хранилища на основе заданного процента выборки.
  • Запросы только для метаданных.

Уменьшение объема обработанных данных

Вы можете оптимизировать объем данных, обработанных по запросу, и повысить производительность путем секционирования и преобразования данных в сжатый формат на основе столбцов, например Parquet.

Примеры

Представьте себе три таблицы.

  • Таблица population_csv поддерживается 5 ТБ CSV-файлов. Файлы организованы в пяти столбцах одинакового размера.
  • В таблице population_parquet есть те же данные, что и таблица population_csv. Он основывается на 1 ТБ файлов Parquet. Эта таблица меньше предыдущей, так как данные сжимаются в формате Parquet.
  • Таблица very_small_csv основана на CSV-файлах объемом 100 КБ.

Запрос 1. SELECT SUM(population) FROM population_csv

Этот запрос считывает и анализирует целые файлы, чтобы получить значения для столбца совокупности. Узлы обрабатывают фрагменты этой таблицы, и сумма населения для каждого фрагмента передается от одного узла к другому. Окончательная сумма передается в конечную точку.

Этот запрос обрабатывает 5 ТБ данных плюс небольшую дополнительную нагрузку на перенос сумм фрагментов.

Запрос 2. SELECT SUM(population) FROM population_parquet

При запросе сжатых и столбцовых форматов, таких как Parquet, меньше данных считывается, чем в запросе 1. Этот результат отображается, так как бессерверный пул SQL считывает один сжатый столбец вместо всего файла. В этом случае считывается 0,2 ТБ. (Пять столбцов одинакового размера — 0,2 ТБ каждый.) Узлы обрабатывают фрагменты этой таблицы, а сумма совокупности для каждого фрагмента передается между узлами. Окончательная сумма передается в конечную точку.

Этот запрос обрабатывает 0,2 ТБ плюс небольшой накладной расход на передачу сумм фрагментов.

Запрос 3. SELECT * FROM population_parquet

Этот запрос считывает все столбцы и передает все данные в несжатом формате. Если формат сжатия равен 5:1, запрос обрабатывает 6 ТБ, так как он считывает 1 ТБ и передает 5 ТБ несжатых данных.

Запрос 4. SELECT COUNT(*) FROM very_small_csv

Этот запрос считывает целые файлы. Общий размер файлов в хранилище для этой таблицы составляет 100 КБ. Узлы обрабатывают фрагменты этой таблицы, а сумма для каждого фрагмента передается между узлами. Окончательная сумма передается в конечную точку.

Этот запрос обрабатывает чуть более 100 КБ данных. Объем данных, обработанных для этого запроса, округляется до 10 МБ, как указано в разделе округления этой статьи.

Управление затратами

Функция управления затратами в бессерверном пуле SQL позволяет задать бюджет для объема обработанных данных. Вы можете задать бюджет в ТБ данных, обработанных в течение дня, недели и месяца. Одновременно можно задать один или несколько бюджетов. Чтобы настроить управление затратами для бессерверного пула SQL, можно использовать Synapse Studio или T-SQL.

Настройка управления затратами для бессерверного пула SQL в Synapse Studio

Чтобы настроить управление затратами для бессерверного пула SQL в Synapse Studio, перейдите к пункту Управление в меню слева, затем выберите элемент пула SQL в Аналитических пулах. При наведении указателя на бессерверный пул SQL вы заметите значок для управления затратами — щелкните этот значок.

Навигация по управлению затратами

Щелкнув значок управления затратами, появится боковая панель:

Конфигурация управления затратами

Чтобы задать один или несколько бюджетов, сначала нажмите кнопку "Включить переключатель" для заданного бюджета, чем введите целочисленное значение в текстовом поле. Единица для значения — TBS. После того как вы настроили нужные бюджеты, нажмите кнопку "Применить" в нижней части боковой панели. Это так, теперь вы устанавливаете бюджет.

Настройка управления затратами для бессерверного пула SQL в T-SQL

Чтобы настроить управление затратами для бессерверного пула SQL в T-SQL, необходимо выполнить одну или несколько следующих хранимых процедур.

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

Чтобы просмотреть текущую конфигурацию, выполните следующую инструкцию T-SQL:

SELECT * FROM sys.configurations
WHERE name like 'Data processed %';

Чтобы узнать, сколько данных было обработано в течение текущего дня, недели или месяца, выполните следующую инструкцию T-SQL:

SELECT * FROM sys.dm_external_data_processed

Превышение ограничений, определенных в управлении затратами

Если во время выполнения запроса превышено любое ограничение, запрос не будет завершен.

Если ограничение превышено, новый запрос будет отклонен с сообщением об ошибке, которое содержит сведения о периоде, определенное ограничение за этот период и данные, обработанные в течение этого периода. Например, если выполняется новый запрос, в котором еженедельное ограничение равно 1 ТБ и превышено, сообщение об ошибке будет следующим:

Query is rejected because SQL Serverless budget limit for a period is exceeded. (Period = Weekly: Limit = 1 TB, Data processed = 1 TB))

Дальнейшие действия

Чтобы узнать, как оптимизировать запросы на производительность, ознакомьтесь с рекомендациями по бессерверному пулу SQL.