Оптимизация производительности путем обновления выделенного пула SQL (ранее — хранилище данных SQL) в Azure Synapse Analytics

Tip

Microsoft Fabric Data Warehouse — это реляционное хранилище корпоративного масштаба на основе озера данных, с архитектурой, готовой к будущему, встроенной ИИ и новыми функциями. Если вы не знакомы с хранилищем данных, начните с Fabric Data Warehouse. Существующие рабочие нагрузки выделенного пула SQL могут обновляться до Fabric для доступа к новым возможностям в области науки о данных, аналитики в реальном времени и отчетности.

Обновите выделенный пул SQL (ранее — хранилище данных SQL) до последнего поколения оборудования и архитектуры хранилища Azure.

Зачем выполнять обновление

Вы можете легко перейти на оптимизированный для вычислений выделенный пул SQL 2-го поколения (ранее — хранилище данных SQL) на портале Azure, если такая возможность поддерживается в вашем регионе. Если ваш регион не поддерживает самостоятельное обновление, можно перейти на поддерживаемый регион или дождаться, когда функция самостоятельного обновления станет доступна в вашем регионе. Выполните обновление сейчас, чтобы воспользоваться преимуществами последнего поколения оборудования Azure и усовершенствованной архитектуры хранилища, включая повышенную производительность, масштабируемость и неограниченное хранение по столбцам.

Внимание

Это обновление применимо к выделенным пулам SQL уровня Compute Optimized Gen1 (ранее SQL DW) в поддерживаемых регионах.

Перед началом

  1. Проверьте, поддерживает ли ваш регион перенос хранилища 1-го поколения в хранилище 2-го поколения. Обратите внимание на даты автоматического переноса. Чтобы избежать конфликтов с автоматизированным процессом, запланируйте ручной перенос на дату, предшествующую дате запуска автоматизированного процесса.

  2. Если вы находитесь в регионе, который еще не поддерживается, регулярно проверяйте, не был ли ваш регион добавлен в список поддерживаемых, или выполните обновление с помощью восстановления в поддерживаемый регион.

  3. Если ваш регион не поддерживается, выполните обновление на портале Azure.

  4. Выберите предлагаемый уровень производительности для выделенного пула SQL (ранее SQL DW) на основе текущего уровня производительности в категории Compute Optimized Gen1, используя приведенное ниже соответствие:

    Уровень "Оптимизировано для вычислений 1-го поколения" Уровень Gen2, оптимизированный для вычислений
    DW100 DW100c
    DW200 DW200c
    DW300 DW300c
    DW400 DW400c
    DW500 DW500c.
    DW600 DW500c.
    DW1000 DW1000c
    DW1200 DW1000c
    DW1500 DW1500c
    DW2000 DW2000c
    DW3000 DW3000c
    DW6000 DW6000c

Примечание.

Предлагаемые уровни производительности не являются прямым преобразованием. Например, мы рекомендуем перейти с DW600 на DW500c.

Обновление в поддерживаемом регионе с помощью портала Azure

  • Миграцию из хранилища 1-го поколения в хранилище 2-го поколения на портале Azure невозможно отменить. Нет процедуры для возврата к первому поколению.
  • Выделенный пул SQL (ранее — SQL DW) должен быть активным для миграции на Gen2.

Перед началом

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Перенос Azure PowerShell с AzureRM на Az.

  • Войдите на портал Azure.
  • Убедитесь, что выделенный пул SQL (ранее — SQL DW) запущен — это необходимо для выполнения миграции на Gen2.

Команды обновления PowerShell

  1. Если будет приостановлено обновление выделенного пула SQL уровня "Оптимизировано для вычислений 1-го поколения" (прежнее название — хранилище данных SQL), возобновите выделенный пул SQL (ранее — хранилище данных SQL).

  2. Будьте готовы к непродолжительному простою.

  3. Определите все ссылки на код, связанные с уровнями производительности 1-го поколения "Оптимизировано для вычислений" и измените их на эквивалентный уровень производительности 2-го поколения "Оптимизировано для вычислений" Ниже представлены два примера, в которых нужно обновить ссылки на код перед обновлением:

    Исходная команда PowerShell 1-го поколения:

    Set-AzSqlDatabase -ResourceGroupName "myResourceGroup" -DatabaseName "mySampleDataWarehouse" -ServerName "mynewserver-20171113" -RequestedServiceObjectiveName "DW300"
    

    Изменено на:

    Set-AzSqlDatabase -ResourceGroupName "myResourceGroup" -DatabaseName "mySampleDataWarehouse" -ServerName "mynewserver-20171113" -RequestedServiceObjectiveName "DW300c"
    

    Примечание.

    -RequestedServiceObjectiveName "DW300" изменено на -RequestedServiceObjectiveName "DW300c"

    Исходная команда T-SQL 1-го поколения:

    ALTER DATABASE mySampleDataWarehouse MODIFY (SERVICE_OBJECTIVE = 'DW300') ;
    

    Изменено на:

    ALTER DATABASE mySampleDataWarehouse MODIFY (SERVICE_OBJECTIVE = 'DW300c') ;
    

    Примечание.

    SERVICE_OBJECTIVE = 'DW300' изменено на SERVICE_OBJECTIVE = 'DW300c'

Начало обновления

  1. На портале Azure перейдите к оптимизированному для вычислений выделенному пулу SQL 1-го поколения (ранее — хранилище данных SQL). Если выделенный пул SQL уровня "Оптимизировано для вычислений 1-го поколения" (ранее — хранилище данных SQL), который нужно обновить, приостановлен, возобновите его работу.

  2. Выберите "Обновить до карточки 2-го поколения " на вкладке "Задачи" :

    Примечание.

    Если карта Повысить до Gen2 не отображается на вкладке "Задачи", для типа вашей подписки действуют ограничения в текущем регионе. Отправьте запрос в службу поддержки для утверждения вашей подписки.

  3. Убедитесь, что рабочая нагрузка завершилась и стабилизировалась перед обновлением. Вы испытаете простой в течение нескольких минут, прежде чем ваш выделенный пул SQL (ранее SQL DW) снова станет доступен в качестве выделенного пула SQL уровня Compute Optimized Gen2 (ранее SQL DW).

  4. Выберите Обновить.

  5. Отслеживайте обновление, проверяя состояние в портале Azure. Скорее всего, появится баннер сообщения, указывающий на "Это хранилище данных обновляется до 2-го поколения".

    Первым шагом процесса обновления является масштабирование ("Обновление — автономный режим"), при котором все сеансы будут прерваны, а соединение разорвано.

    Второй шаг процесса обновления — перенос данных ("Обновление — в сети"). Перенос данных является малозаметным фоновым сетевым процессом. Этот процесс медленно перемещает данные столбцов из старой архитектуры хранилища в новую архитектуру хранилища с помощью локального кэша SSD. В течение этого времени выделенный пул SQL (ранее — хранилище данных SQL) будет подключен к сети для выполнения запросов и загрузки. При этом все данные будут доступны для запросов, вне зависимости от того, были ли они перенесены. Перенос данных происходит с разной скоростью в зависимости от их размера, уровня производительности и количества сегментов columnstore.

  6. Дополнительная рекомендация. После завершения операции масштабирования можно ускорить фоновый процесс переноса данных. Вы можете осуществить принудительное перемещение данных, выполнив команду ALTER INDEX ... ПЕРЕСТРОЙТЕ для всех основных таблиц с колонным хранением, которые вы используете при более высоком классе SLO и ресурсе. Эта операция находится в оффлайн-режиме, она будет ухудшать или блокировать другие запросы, но завершится быстрее по сравнению с медленным фоновым процессом, который может занять несколько часов, чтобы завершиться в зависимости от количества и размера ваших таблиц. Тем не менее после завершения этой операции перенос данных будет происходить намного быстрее благодаря новой улучшенной архитектуре хранилища с высококачественными группами строк.

Примечание.

Операция "Alter Index rebuild" — это автономная операция. Таблицы будут недоступны до завершения повторной сборки.

Следующий запрос создает необходимые ALTER INDEX ... REBUILD команды для ускорения миграции данных:

SELECT 'ALTER INDEX [' + idx.NAME + '] ON ['
       + Schema_name(tbl.schema_id) + '].['
       + Object_name(idx.object_id) + '] REBUILD ' + ( CASE
                                                         WHEN (
                                                     (SELECT Count(*)
                                                      FROM   sys.partitions
                                                             part2
                                                      WHERE  part2.index_id
                                                             = idx.index_id
                                                             AND
                                                     idx.object_id =
                                                     part2.object_id)
                                                     > 1 ) THEN
              ' PARTITION = '
              + Cast(part.partition_number AS NVARCHAR(256))
              ELSE ''
                                                       END ) + '; SELECT ''[' +
              idx.NAME + '] ON [' + Schema_name(tbl.schema_id) + '].[' +
              Object_name(idx.object_id) + '] ' + (
              CASE
                WHEN ( (SELECT Count(*)
                        FROM   sys.partitions
                               part2
                        WHERE
                     part2.index_id =
                     idx.index_id
                     AND idx.object_id
                         = part2.object_id) > 1 ) THEN
              ' PARTITION = '
              + Cast(part.partition_number AS NVARCHAR(256))
              + ' completed'';'
              ELSE ' completed'';'
                                                    END )
FROM   sys.indexes idx
       INNER JOIN sys.tables tbl
               ON idx.object_id = tbl.object_id
       LEFT OUTER JOIN sys.partitions part
                    ON idx.index_id = part.index_id
                       AND idx.object_id = part.object_id
WHERE  idx.type_desc = 'CLUSTERED COLUMNSTORE';

Обновление из географического региона Azure посредством восстановления через портал Azure

Создание определяемой пользователем точки восстановления с помощью портала Azure

  1. Войдите на портал Azure.
  2. Перейдите к выделенному пулу SQL (ранее — хранилище данных SQL), для которого необходимо создать точку восстановления.
  3. На панели инструментов страницы "Обзор" нажмите кнопку "Создать точку восстановления".
  4. Укажите имя точки восстановления.

Восстановление активной или приостановленной базы данных с помощью портала Azure

  1. Войдите на портал Azure.

  2. Перейдите к выделенному пулу SQL (ранее — хранилище данных SQL), из которого требуется выполнить восстановление.

  3. На панели инструментов раздела "Обзор " выберите " Восстановить".

  4. Выберите Точки автоматического восстановления или Пользовательские точки восстановления. Для пользовательских точек восстановления выберите имеющуюся точку восстановления или создайте новую. Для сервера выберите Создать, затем выберите сервер в географическом регионе, где поддерживается 2-е поколение.

    Снимок экрана: портал Azure с точками восстановления для выбора.

Восстановление из географического региона Azure с помощью PowerShell

Примечание.

Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как перейти на модуль Az PowerShell, см. статью Перенос Azure PowerShell с AzureRM на Az.

Для восстановления базы данных используйте командлет Restore-AzSqlDatabase.

Примечание.

Вы можете выполнить геовосстановление на Gen2! Для этого в качестве необязательного параметра укажите имя ServiceObjectiveName 2-го поколения (например, DW1000c).

  1. Откройте Windows PowerShell.
  2. Подключитесь к своей учетной записи Azure и выведите список всех подписок, связанных с ней.
  3. Выберите подписку, содержащую базу данных, которую нужно восстановить.
  4. Получите базу данных, которую требуется восстановить.
  5. Создайте запрос на восстановление для базы данных, указав ServiceObjectiveName 2-го поколения.
  6. Проверьте состояние геовосстановленной базы данных.
Connect-AzAccount
Get-AzSubscription
Select-AzSubscription -SubscriptionName "<Subscription_name>"

# Get the database you want to recover
$GeoBackup = Get-AzSqlDatabaseGeoBackup -ResourceGroupName "<YourResourceGroupName>" -ServerName "<YourServerName>" -DatabaseName "<YourDatabaseName>"

# Recover database
$GeoRestoredDatabase = Restore-AzSqlDatabase –FromGeoBackup -ResourceGroupName "<YourResourceGroupName>" -ServerName "<YourTargetServer>" -TargetDatabaseName "<NewDatabaseName>" –ResourceId $GeoBackup.ResourceID -ServiceObjectiveName "<YourTargetServiceLevel>" -RequestedServiceObjectiveName "DW300c"

# Verify that the geo-restored database is online
$GeoRestoredDatabase.status

Примечание.

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

Восстановленная база данных будет поддерживать TDE, если исходная база данных поддерживает TDE.

Если у вас возникли проблемы с выделенным пулом SQL, создайте запрос в службу поддержки и укажите "Обновление до 2-го поколения" в качестве возможной причины.

Обновленный выделенный пул SQL (ранее — хранилище данных SQL) подключен к сети. Чтобы воспользоваться преимуществами расширенной архитектуры, ознакомьтесь с дополнительными сведениями о классах ресурсов.

Следующий шаг