Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:SQL Server на виртуальной машине Azure
В этой статье вы узнаете, как повысить производительность ваших рабочих нагрузок на SQL Server, работающих на виртуальных машинах Azure, используя локальное эфемерное хранилище SSD, доступное на некоторых виртуальных машинах Azure. Например, переместив tempdb
системную базу данных на локальный SSD-диск или используя локальный SSD-диск для расширения буферного пула.
Обзор
Локальный диск SSD, подключенный к определенным виртуальным машинам Azure, предоставляет оптимизированное эфемерное хранилище — высокопроизводительный диск, физически подключенный к хост-компьютеру. Это эфемерное хранилище повторно создается при деактивации или перемещении виртуальной машины (например, когда она находится на техническом обслуживании или изменении размера). Независимо от того, что размещение системной базы данных SQL Server tempdb
в эфемерном хранилище не представляет риска, так как база данных повторно создается при каждом перезапуске SQL Server.
Размещение tempdb
на эфемерном диске рекомендуется, так как оптимизированная низкая задержка и высокий объем операций ввода-вывода в секунду может значительно повысить производительность рабочих нагрузок, которые сильно зависят от временных объектов, в том числе:
- Запросы на обработку больших наборов записей
- Создание и обслуживание индексов
- Уровни изоляции версий строк
- Временные таблицы
- Триггеры
Однако, так как локальный диск SSD не является постоянным, его содержимое и разрешения теряются при остановке, освобождении виртуальной машины или перемещении на новый узел. Это требует тщательного планирования с учетом следующих соображений:
-
Перенастройка при перезапуске:
tempdb
необходимо перенастроить для использования эфемерного диска (обычно D:) при каждом перезапуске виртуальной машины. Для образов виртуальных машин SQL Server из Azure Marketplace этот процесс автоматизирован с помощью расширения агента IaaS SQL, что упрощает задачу управления, создавая папки и обрабатывая разрешения автоматически при запуске виртуальной машины. Однако если вы вручную установили SQL Server, необходимо настроитьtempdb
использование эфемерного диска вручную при каждом перезапуске виртуальной машины. Этот процесс можно автоматизировать с помощью PowerShell и планировщика задач. -
Эксклюзивное использование:
tempdb
должно быть единственными данными, хранящимися на локальном ssd-диске. Постоянные данные , такие как файлы данных, файлы журналов или резервные копии, не должны размещаться в эфемерном хранилище, так как они будут потеряны при каждом перезапуске виртуальной машины или освобождении.
Предпосылки
Прежде чем настроить tempdb
для использования эфемерного хранилища, вам потребуется следующее:
- Подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись.
- SQL Server вручную установлен на виртуальную машину Azure.
-
Временный инициализированный диск. На виртуальных машинах Azure временный диск обычно устанавливается в качестве
D:
диска. Если у вас другая конфигурация, измените инструкции соответствующим образом.
Замечание
В этой статье предполагается, что вы установили SQL Server вручную, так как tempdb
автоматически настроено использовать эфемерное хранилище при развертывании SQL Server на образе виртуальной машины Azure из Azure Marketplace.
Настройка tempdb для использования эфемерного хранилища
Во время периода обслуживания можно настроить SQL Server tempdb
для использования эфемерного диска с помощью Transact-SQL. Рассмотрим следующее:
- База
tempb
данных может иметь несколько файлов данных, таких какtempdb.mdf
,tempdb2.md
иtempdb3.md
в зависимости от конфигурации SQL Server. ДляMODIFY FILE
необходимо выполнить команду, чтобы перенастроитьtempdb
его для использования эфемерного диска, напримерD:\SQLTemp
. - Вы можете запросить sys.master_files (где database_id = 2) для идентификации всех
tempdb
файлов данных.
Создайте папку на локальном ssd-диске, например
D:\SQLTemp
.Откройте SQL Server Management Studio (SSMS) и подключитесь к вашему экземпляру SQL Server.
Выполните следующие команды T-SQL, чтобы настроить
tempdb
для использования эфемерного диска:USE MASTER GO ALTER DATABASE tempdb MODIFY FILE (NAME= tempdev, FILENAME= 'D:\SQLTemp\tempdb.mdf') -- to move data files GO ALTER DATABASE tempdb MODIFY FILE (name = templog, filename = 'D:\SQLTemp\templog.ldf') -- to move log files GO
Перезапустите экземпляр SQL Server, чтобы применить изменения.
Убедитесь, что
tempdb
используется временный диск, выполнив следующую команду T-SQL:USE tempdb GO EXEC sp_helpfile GO
Проверьте папку на эфемерном диске, чтобы убедиться, что
tempdb
файлы созданы в папкеD:\SQLTemp
.
Автоматизация конфигурации tempdb при запуске
Так как содержимое на эфемерном диске теряется при перезапуске виртуальной машины, SQL Server не запускается, если tempdb
папка не создана до запуска SQL Server. PowerShell можно использовать для автоматизации создания папки до запуска службы SQL Server.
Чтобы автоматизировать настройку tempdb при запуске, выполните следующие действия.
- Настройка служб: Установите ручной запуск для служб SQL Server и агента SQL Server. Это предотвращает автоматическое запуск этих файлов до создания папки.
- Создайте скрипт PowerShell , который создает папку на эфемерном диске и запускает службы SQL Server и агента SQL.
- Запланируйте выполнение скрипта при запуске системы с помощью запланированной задачи Windows. Настройте задачу для запуска, независимо от того, вошел пользователь в систему или нет, используя учетную запись.
Более подробные сведения по каждому шагу приведены в следующих разделах.
Настройка режима запуска
Поскольку вы хотите, чтобы сценарий создавал папку перед запуском SQL Server, необходимо настроить службы SQL Server и SQL Agent на ручной запуск. Для этого выполните следующие действия.
Откройте Диспетчер конфигурации SQL Server.
Выберите службы SQL Server в левой области.
Щелкните правой кнопкой мыши службу SQL Server и выберите "Свойства ", чтобы открыть окно "Свойства ".
В окне "Свойства" выберите вкладку "Служба ".
На вкладке "Служба" используйте раскрывающийся список, чтобы изменить режим запускана вручную:
Чтобы сохранить изменения, нажмите кнопку "Применить" , а затем нажмите кнопку "ОК ", чтобы закрыть окно.
Повторите эти действия для службы агента SQL Server .
Создание скрипта PowerShell
Создайте скрипт PowerShell, который:
- Создает папку на эфемерном диске.
- Запускает службу SQL Server.
- Запускает службу агента SQL.
Скопируйте и вставьте следующий скрипт, измените его по мере необходимости и сохраните его в виде файла PowerShell на диске ОС, например C:\Scripts\SQLStartup.ps1
:
$SQLService="SQL Server (MSSQLSERVER)"
$SQLAgentService="SQL Server Agent (MSSQLSERVER)"
$tempfolder="D:\SQLTEMP"
if (!(test-path -path $tempfolder)) {
New-Item -ItemType directory -Path $tempfolder
}
Start-Service $SQLService
Start-Service $SQLAgentService
Замечание
Сценарий предполагает, что экземпляр SQL Server является экземпляром по умолчанию. Если вы используете именованный экземпляр, замените MSSQLSERVER
именем экземпляра SQL Server.
Создание запланированной задачи для запуска скрипта
Создайте запланированную задачу для запуска скрипта PowerShell при запуске. Для этого выполните следующие действия.
Откройте планировщик задач из меню "Пуск".
В разделе "Действия" выберите "Создать базовую задачу" , чтобы открыть окно "Создать задачу".
На вкладке "Создание базовой задачи " введите имя задачи, например
SQL-startup
и укажите описание. Выберите Далее.На вкладке "Триггеры" установите флажок "При запуске компьютера " и нажмите кнопку "Далее".
На вкладке "Действия" нажмите кнопку "Пуск программы " и нажмите кнопку "Далее".
На вкладке "Пуск программы" введите и в поле
powershell.exe
введите путь к скрипту, например:-ExecutionPolicy Bypass -File C:\Scripts\SQLStartup.ps1
Просмотрите сводку на вкладке "Готово " и нажмите кнопку "Готово ", чтобы создать задачу:
Тестирование скрипта
Перезапустите виртуальную машину для тестирования скрипта. После перезапуска виртуальной машины убедитесь, что файлы данных tempdb
находятся на эфемерном диске и что запущены службы SQL Server и агента SQL.
Настройка расширения буферного пула
Вы можете дополнительно повысить производительность SQL Server, настроив расширение буферного пула для использования локального ssd-диска на виртуальных машинах Azure. Эта функция расширяет пул буферов в памяти с помощью файла на диске для повышения пропускной способности ввода-вывода для рабочих нагрузок с большим объемом памяти, превышающих доступную ОЗУ. Так как локальное ssd (эфемерное хранилище) обеспечивает низкую задержку и высокую производительность, это идеальное расположение для этого расширения.
При настройке расширения буферного пула укажите размер файла в килобайтах (КБ), мегабайтах (МБ) или гигабайтах (ГБ). Рекомендуемый размер обычно составляет от 4 до 8 раз, чем параметр [max_server_memory], настроенный для SQL Server, хотя для выпуска Standard максимальное значение ограничивается в 4 раза (выпуск Enterprise позволяет до 32 раз). Например, если для max_server_memory задано значение 16 ГБ, необходимо настроить расширение буферного пула размером 64–128 ГБ, в соответствии с требованиями выпуска SQL Server и рабочей нагрузки.
Если указанный путь существует на эфемерном диске (например D:\SQLTEMP\
, для включения расширения буферного пула), выполните следующую команду T-SQL в SQL Server Management Studio (SSMS) после подключения к экземпляру:
ALTER SERVER CONFIGURATION
SET BUFFER POOL EXTENSION ON
( FILENAME = 'D:\SQLTEMP\ExtensionFile.BPE' , SIZE = <size> [ KB | MB | GB ] )
Связанный контент
- Что такое SQL Server на виртуальных машинах Azure Windows?
- Часто задаваемые вопросы о SQL Server на виртуальных машинах Windows
- Руководство по ценам на SQL Server на виртуальных машинах Azure
- Новые возможности SQL Server на виртуальных машинах Azure?
- Контрольный список: рекомендации для SQL Server на виртуальных машинах Azure
- Общие сведения об управляемых дисках Azure