Как улучшить распараллеливание выполнения запросов для одного пользователя в Azure SQL Datawarehouse? - PullRequest
1 голос
/ 07 января 2020

У нас есть новая панель отчетов, которая загружается в наше веб-приложение, откуда данные поступают из Azure SQLDataWareHouse.

Панель инструментов состоит из ~ 8-10 плиток, каждая из которых отображает различные метрики. c, загружено другим запросом.

Различные запросы выполняются из веб-приложения с использованием простого кода ADO. NET для подключения к DW с учетной записью пользователя dashboard.

Я читал обе статьи на Пределы памяти и параллелизма и Ресурсные классы но есть кое-что, что я просто не понимаю.

Для нашего уровня обслуживания DW (Gen2 - DW200 c), Сервер должен поддерживать выполнение 8 одновременных запросов. Точно так же мы добавили нашего пользователя dashboard в группу ресурсов staticrc80, которая должна предоставить ему доступ ко всем 8 слотам параллелизма.

Но это, похоже, не помогает. Правильно ли я понимаю, что независимо от этих конфигураций ресурсов, он все равно будет выполнять запрос sinlge только для одного пользователя за раз? И что несколько запросов, выполняемых под одной и той же учетной записью пользователя, все еще будут поставлены в очередь?

Одна из альтернатив, по-видимому, заключается в том, что у меня может быть отдельная учетная запись пользователя для каждой плитки, сделать 8 отдельных соединений, выполнить 8 отдельных запросов, где каждой учетной записи запроса назначается роль staticrc10.

Я что-то упустил здесь. Этот DW предназначен для одного приложения с одной учетной записью пользователя. Как настроить эту учетную запись с точки зрения ресурсов classe et c ..., чтобы в полной мере использовать распределение ресурсов 8 запросов paralell / 200 DWU.

Ответы [ 2 ]

1 голос
/ 07 января 2020

несколько запросов, выполненных под одной и той же учетной записью пользователя, все еще будут поставлены в очередь?

Ваше наблюдаемое поведение может не иметь ничего общего со слотами параллелизма. Возможно, клиент отправляет не все запросы параллельно. Клиентское соединение с SQL сервером (или Synapse) может обрабатывать только один запрос за раз. Клиент может открыть столько соединений, сколько ему нужно, но обычно они этого не делают. Вы чаще всего видите два соединения на клиента.

Отступая, если вы работаете над улучшением производительности панели мониторинга, рассматривали ли вы Кэширование набора результатов ? Он предназначен для улучшения времени отклика для распространенных запросов, что часто происходит с плитками панели инструментов.

1 голос
/ 07 января 2020

Согласно документации , класс ресурсов stati c staticrc80 в DWU200 c использует 8 слотов ресурсов, поэтому, если DWU200 c имеет максимум 8 одновременных слотов, я бы ожидал одно соединение, чтобы использовать их все, и поэтому ваши параллельные запросы будут ставиться в очередь по одному.

static resource classes and concurrency slots Рассмотрите возможность переключения вашего пользователя на staticrc10, что позволит 8 одновременных запросов. Не нужно делать 8 разных пользователей.

Могу я спросить, используете ли вы Power BI? Кроме того, DWU200 c довольно низок для любой рабочей нагрузки, на самом деле он просто для того, чтобы все работало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...