В вашем сценарии Polybase должен подключаться к файлам внешнего источника, распаковывать их, а затем гарантировать, что они соответствуют вашему определению (схеме) внешней таблицы, а затем разрешают таргетинг содержимого на запрос. Когда вы обрабатываете большое количество текстовых файлов в одноразовом режиме импорта, нет ничего действительно кэш-памяти, поскольку он имеет дело с новым контентом каждый раз. Короче говоря, ваш сценарий вычисляется тяжело.
Azure Blob Storage будет (в настоящее время) до максимума около 1,250MB/сек, так что если пропускная способность не вблизи максить это, то самый лучший способ улучшить производительность, чтобы обновить DWU на вашем складе SQL данных. В фоновом режиме это будет распространять вашу рабочую нагрузку на больший кластер (больше серверов). SQL Data Warehouse DWU можно масштабировать либо вверх, и вниз в считанные минуты.
Если у вас есть огромные тома и максимальный размер хранилища, используйте несколько учетных записей хранилища для распространения нагрузки.
Другие альтернативы включают в себя освобождение Polybase от работы с распаковкой как часть процесса загрузки или промежуточного процесса. Сделайте это изнутри Azure, где пропускная способность сети в центре обработки данных быстро растет.
Вы также можете рассмотреть возможность использования Azure Data Factory для выполнения работы. See here для поддерживаемых форматов файлов. Поддерживается GZip. Используйте операцию копирования для копирования из хранилища Blob в SQL DW.
Также смотрите, чтобы:
- CTAS (Создать таблицу в качестве Select), самый быстрый способ перемещения данных из внешних таблиц для внутреннего хранения в Azure хранилища данных.
- Creating statistics для ваших внешних таблиц, если вы собираетесь запрашивать их повторно. SQL Data Warehouse не создает статистику автоматически, как SQL Server, и вам нужно сделать это самостоятельно.
Когда вы имеете в виду деградацию - вы имеете в виду, что со временем вы становитесь медленнее или просто медленны вообще? –
Медленно в целом. – Fastidious
Какой класс ресурсов вы используете? Рассмотрите возможность использования [largeerc] (https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-best-practices#use-larger-resource-class-to-improve- производительность запросов) для повышения производительности за счет сокращения параллелизма. Если вы подключены как пользователь admin по умолчанию, то их класс ресурсов по умолчанию будет небольшим и не может быть изменен. DWU400 довольно низок для чего-либо, почему бы не 1000, 2000 или 6000 временно, а затем снизить его, когда ваш CTAS сделан? Это одна из действительно полезных функций Azure SQL Data Warehouse, а также пауза. – wBob