Определение, должна ли таблица или хранимая процедура быть перенесена в In-Memory OLTP

Сборщик производительности транзакций в SQL Server Management Studio помогает оценить, повысит ли In-Memory OLTP производительность приложения базы данных. В отчете об анализе производительности транзакции также показано, сколько работы необходимо выполнить, чтобы включить In-Memory OLTP в приложении. После определения дисковой таблицы, которая переносится в In-Memory OLTP, можно для упрощения миграции таблицы использовать советник по оптимизации для выполнения в памяти. Аналогичным образом Native Compilation Advisor позволяет перенести хранимую процедуру в изначально скомпилированную хранимую процедуру.

В этом разделе обсуждаются следующие темы:

  • Настройка хранилища данных управления.

  • Настройка сбора данных.

  • Создайте отчеты анализа производительности транзакции, чтобы определить таблицы и хранимые процедуры, оказывающие критическое влияние на производительность.

Дополнительные сведения о методологиях миграции см. в разделе Выполняемая в памяти OLTP — стандартные шаблоны рабочей нагрузки и вопросы миграции.

Сборщик данных о производительности транзакции и отчеты анализа производительности транзакции позволяют выполнить следующие задачи.

  • Анализ рабочей нагрузки позволяет определить, улучшится ли производительность OLTP в памяти. Сборщик данных о производительности транзакции собирает и оценивает характеристики производительности вашей рабочей нагрузки. . Отчет анализа производительности транзакции затем порекомендует таблицы и хранимые процедуры, для которых преобразование в In-Memory OLTP будет наиболее полезным.

  • Помощь с планированием и выполнением миграции в OLTP в памяти. Миграция из дисковой таблицы в оптимизированную для памяти таблицу может занять много времени. Помощник по оптимизации для памяти позволит определить несовместимые компоненты в таблице, которые необходимо удалить до перемещения таблицы в In-Memory OLTP. Помощник также позволяет понять последствия переноса таблицы в оптимизированную для памяти таблицу для приложения.

    Можно проверить, будет ли применение In-Memory OLTP полезно для приложения, если потребуется спланировать миграцию в In-Memory OLTP или перенести некоторые таблицы и хранимые процедуры в In-Memory OLTP.

    Важно!

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

Сборщик производительности транзакций и возможность создания отчета по анализу производительности транзакций устанавливаются при выборе средства управления—Базовый или Средства управления—Дополнительно при установке SQL Server 2019 (15.x).

Рекомендации

Рекомендуемый рабочий процесс проиллюстрирован на следующей блок-схеме. Желтые узлы представляют необязательные процедуры.

Рабочий процесс AMR

Для определения базовых показателей производительности можно использовать любой метод, включая, помимо прочего, использование журналов счетчиков производительности или монитора активности SQL Server. Сведения, которые используются при определении базового уровня производительности и сравнении:

  • Использование ЦП SQL Server.

  • Потребление памяти SQL Server.

  • Активность ввода-вывода SQL Server.

  • Пропускная способность транзакций экземпляра при обработке транзакций.

Сборщик данных о производительности транзакции записывает данные каждые 15 минут. Чтобы получить пригодные результаты, запускайте сборщик данных о производительности транзакции как минимум на один час. Чтобы получить наилучший результат, запустите сборщик данных на такое время, какое необходимо для сбора данных для ваших основных сценариев. Создавайте отчет анализа производительности транзакции только после завершения сбора данных.

Настройте сборщик производительности транзакций для запуска на экземпляре SQL Server в рабочей среде и соберите данные на экземпляре SQL Server в среде разработки (тестирования), чтобы обеспечить минимальные затраты. Сведения о том, как сохранить данные в базе данных Data Warehouse управления на удаленном экземпляре SQL Server, см. в статье Настройка сбора данных в удаленном экземпляре SQL Server.

Влияние на производительность

Сборщик данных о производительности транзакции состоит из двух наборов элементов сбора данных.

  • Анализ сведений об использовании таблицы

  • Анализ хранимой процедуры

Наборы элементов сбора собирают данные из трех динамических административных представлений (DMV) через каждые 15 минут и передают данные в базу данных, настроенную на использование в качестве хранилища данных управления. Передача собранных данных почти не оказывает влияния на производительность.

Использование сборщика данных о производительности транзакции

Следующие шаги требуют SQL Server Management Studio в SQL Server 2019 (15.x).

Важно!

Не изменяйте схему (не добавляйте и не удаляйте базы данных, не создавайте и не удаляйте таблицы) во время профилирования. Если схема базы данных изменится во время сбора данных, то база данных может неточно отразиться в отчете.

Настройка хранилища данных управления

Хранилище данных управления должно быть настроено для использования сборщика данных о производительности транзакции.

Версия экземпляра SQL Server, в котором будут собираться данные (профиль), должна быть той же или старше, что и версия SQL Server, в которой настроена Data Warehouse управления.

  1. В обозревателе объектов разверните узел Управление.

  2. Щелкните правой кнопкой мыши Сбор данных и выберите Задачи, а затем — Настроить управление Data Warehouse. Начнется мастер настройки Data Warehouse управления.

  3. Нажмите кнопку Далее, чтобы выбрать базу данных, которая будет выступать в качестве Data Warehouse управления.

  4. Нажмите кнопку Создать , чтобы создать базу данных для хранения данных профиля. Завершив создание базы данных, нажмите кнопку Далее в мастере.

  5. На следующем шаге мастера вы можете добавить пользователей и имена входа. Можно сопоставить имена входа с членствами роли для экземпляра MDW. Этого не требуется для сбора данных из локального экземпляра. Если вы не собираете данные из локального экземпляра, можно предоставить членство в роли базы данных mdw_admin учетной записи, которая будет выполнять профилируемые транзакции. По завершении нажмите кнопку Далее.

  6. Убедитесь, что агент SQL Server запущена.

  7. На следующем экране нажмите кнопку Готово , чтобы выйти из мастера.

Настройка сбора данных в локальном экземпляре SQL Server

Сбор данных требует запуска агент SQL Server. Необходимо настроить только один сборщик данных на сервере.

Сборщик данных можно настроить в SQL Server 2012 или более поздней версии SQL Server.

Настройка сбора данных для передачи в базу данных хранилища данных управления на том же экземпляре.

  1. В обозреватель объектов разверните узел Управление.

  2. Щелкните правой кнопкой мыши Сбор данных, выберите Задачи, а затем — Настройка сбора данных. Начнется мастер настройки сбора данных .

  3. Нажмите кнопку Далее , чтобы выбрать базу данных, которая будет собирать данные профиля.

  4. Выберите текущий экземпляр SQL Server и базу данных Data Warehouse управления на этом экземпляре.

  5. В поле Выберите наборы сборщиков данных, которые вы хотите включить, выберите Наборы сбора данных производительности транзакций. По завершении нажмите кнопку Далее.

  6. Проверьте выбранные параметры. Нажмите кнопку Назад , чтобы изменить параметры. По завершении нажмите кнопку Готово .

Настройка сбора данных на удаленном экземпляре SQL Server

Сбор данных требует агент SQL Server на экземпляре, который будет собирать данные.

Сборщик данных можно настроить в SQL Server 2012 или более поздней версии SQL Server.

Необходимо установить прокси-сервер агент SQL Server с правильными учетными данными, чтобы сборщик данных отправлял данные в базу данных Data Warehouse управления на экземпляре, отличном от того, где будут профилироваться транзакции. Чтобы включить прокси-сервер агент SQL Server, необходимо сначала установить учетные данные с именем входа с поддержкой домена. Имя входа в домен должно быть участником группы mdw_admin для базы данных хранилища данных управления. Сведения о создании учетных данных см. в статье Практическое руководство. Создание учетных данных (SQL Server Management Studio).

Настройка сбора данных для передачи в базу данных хранилища данных управления на другом экземпляре.

  1. В экземпляре, содержающем объекты на диске, которые требуется перенести в In-Memory OLTP, разверните узел Управление в обозреватель объектов.

  2. Щелкните правой кнопкой мыши Сбор данных и выберите Задачи , а затем — Настроить сбор данных. Начнется мастер настройки сбора данных .

  3. Нажмите кнопку Далее , чтобы выбрать базу данных, которая будет собирать данные профиля.

  4. Убедитесь, что база данных Data Warehouse управления существует на другом экземпляре SQL Server.

  5. Выберите другой экземпляр SQL Server и базу данных Data Warehouse управления на этом экземпляре.

    Версия экземпляра SQL Server, в котором будут собираться данные (профиль), должна быть той же или старше, что и версия SQL Server, в которой настроена Data Warehouse управления.

  6. В поле Выберите наборы сборщиков данных, которые вы хотите включить, выберите Наборы сбора данных производительности транзакций.

  7. Выберите Использовать прокси-сервер агент SQL Server для удаленной отправки.

  8. По завершении нажмите кнопку Далее.

  9. Выберите прокси.

    Если вы хотите создать прокси-сервер агент SQL Server,

    1. Нажмите кнопку Создать , чтобы открыть диалоговое окно Новая учетная запись-посредник .

    2. В диалоговом окне Создание учетной записи-посредника введите имя прокси-сервера, выберите учетные данные и при необходимости введите описание. Затем щелкните Субъекты.

    3. Нажмите кнопку Добавить и выберите Роль Msdb .

    4. Выберите dc_proxy и нажмите кнопку ОК. Затем повторно нажмите OK.

    Выбрав правильный прокси-сервер, нажмите кнопку Далее.

  10. Чтобы настроить системные наборы коллекций, проверка Наборы сборок системы и нажмите кнопку Далее.

  11. Проверьте выбранные параметры. Нажмите кнопку Назад , чтобы изменить параметры. Clicck Готово по завершении.

Теперь наборы сбора данных настроены и запущены на вашем экземпляре.

Формирование отчета

Отчеты по анализу производительности транзакций можно создать, щелкнув правой кнопкой мыши базу данных Data Warehouse управления и выбрав Отчеты, управление Data Warehouse и Обзор анализа производительности транзакций.

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

Хранимая процедура с высоким коэффициентом расхода времени ЦП — кандидат для миграции. В отчете отображаются все ссылки на таблицу, поскольку скомпилированные хранимые процедуры могут ссылаться только на таблицы, оптимизированные для памяти, что может увеличить расходы времени при миграции.

Подробный отчет для таблицы состоит из трех разделов.

  • Раздел статистики сканирования

    Этот раздел содержит одну таблицу с собранными статистическими данными о сканированиях таблицы базы данных. Это следующие столбцы:

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

    • Статистика поиска или статистика сканирования диапазона. В этом столбце указывается число уточняющих запросов и сканирований диапазона (индекса и таблиц), выполненных для таблицы во время профилирования. Среднее значение для одной транзакции является приблизительным.

    • Приращение взаимодействия и собственное приращение. В этих столбцах указывается приблизительная сумма прироста производительности уточняющего запроса или сканирования диапазона, которой удалось бы добиться, если бы таблица была преобразована в оптимизированную для памяти таблицу.

  • Раздел статистики блокировки

    В этом разделе представлена таблица, в которой отображаются блокировки для таблицы базы данных. Дополнительные сведения о кратковременных блокировках и блокировках базы данных см. в разделе Архитектура блокировки. Существуют следующие столбцы.

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

    • Статистика кратковременных блокировок. В этих столбцах указывается число ожиданий кратковременных блокировок для запросов к этой таблице. Дополнительные сведения о кратковременных блокировках см. в разделе Кратковременная блокировка. Чем больше это значение, тем больше конфликтов кратковременных блокировок в таблице.

    • Статистика блокировок. В этой группе столбцов указывается число получений и ожиданий блокировок для запросов к этой таблице. Дополнительные сведения о блокировках см. в разделе Основные сведения о блокировке в SQL Server. Чем больше ожиданий, тем больше конфликтов блокировок в таблице.

  • Раздел трудностей с миграцией

    Этот раздел содержит таблицу со сведениями о трудностях, связанных с преобразованием этой таблицы базы данных в оптимизированную для памяти таблицу. Чем выше оценка трудности, тем сложнее преобразовать таблицу. Чтобы просмотреть сведения о преобразовании этой таблицы базы данных, используйте помощник по оптимизации памяти.

Статистика сканирования и состязаний в отчете сведений о таблице собирается и агрегируется из sys.dm_db_index_operational_stats (Transact-SQL).

Подробный отчет для хранимой процедуры состоит из двух разделов.

  • Раздел статистики выполнения

    Этот раздел содержит таблицу с собранными статистическими данными о выполнении хранимой процедуры. Существуют следующие столбцы.

    • Время кэширования. Время, в течение которого план выполнения был кэширован. Если хранимая процедура выходит из кэша плана и заново в него входит, время будет указано для каждого кэша.

    • Всего времени ЦП. Общее время ЦП, затраченное хранимой процедурой во время профилирования. Чем больше это значение, тем больше ресурсов ЦП использовала хранимая процедура.

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

    • Всего промахов кэша. Число промахов кэша (операций чтения из физического хранилища), вызванное выполнением хранимой процедуры во время профилирования.

    • Число выполнений. Количество выполнений этой хранимой процедуры во время профилирования.

  • Раздел ссылок на таблицы

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

Статистика выполнения отчета со сведениями о хранимой процедуре собирается и агрегируется из sys.dm_exec_procedure_stats (Transact-SQL). Ссылки получены из sys.sql_expression_dependencies (Transact-SQL).

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

См. также:

Миграция в In-Memory OLTP