14.05.2020, 12:55 | #1 |
Участник
|
Обсудим target_recovery_time_in_seconds ?
Привет всем.
Сегодня столкнулся со странной особенностью параметра target_recovery_time_in_seconds - он весьма сильно может влиять на производительность. Вводные данные. SQL Server 2016 1. База от ax4 созданная изначально в SQL 2008 и перенесеная через бекап. 2. База от ax2012 созданная из базы ax4 через конвертацию данных. Есть запрос. Простой джоин двух табличек по 2 млн записей каждая по кластерному ключу (ItemId) с заполнением строкового поля по 10-15 символов. (Идет перекачка значения из одной таблички в другую) Запрос по базе ax2012 работет 75 секунд. Запрос по базе ax4 работает 40 секунд. Структура табличек одинакова. Почему такая разница? Выяснилось что в базе 2012 которая создавалось с нуля инсталлятором параметр target_recovery_time_in_seconds имеет дефолтное для SQL 2016 значение - 60 секунд. А для базы 4-ки поднятой через бекап, значение 0, поэтому такая разница. Если обнулить этот параметр в базе 12-ки, то этот запрос ускоряется в 2 раза. Вопрос, как правильнее настраивать target_recovery_time_in_seconds для аксапты ? Для SQL2016 у него дефолтное значение 60 (даже для tempDB). Для более ранних версий - 0 Кто-нибудь тюнинговал этот параметр ? P.S. Интересная ссылка в тему: https://www.mssqltips.com/sqlservert...ver-io-spikes/ |
|
Теги |
sql server 2016, target_recovery_time, производительность |
|
|