Симптоми
Да предположим, че имате група за наличност Always On (AG) в SQL Server 2016 и 2017. Когато обработвате заявка за четене във вторична реплика, производителността може да бъде много по-бавна от основната реплика поради честите чакания на DIRTY_PAGE_TABLE_LOCK.
Причина
Този проблем възниква поради раздор между заявката за четене и нишката за връщане и защото таблицата е заключена.
Решение
Тази корекция е включена в следните актуализации за SQL Server:
Кумулативна актуализация 8 за SQL Server 2017 г.
Кумулативна актуализация 1 за SQL Server 2016 Service Pack 2
Кумулативна актуализация 9 за SQL Server 2016 Service Pack 1
За компилациите за SQL Server
Всяка нова компилация за SQL Server съдържа всички горещи поправки и корекции на защитата, които са били в предишната компилация. Препоръчваме ви да инсталирате най-новата компилация за вашата версия на SQL Server:
Заобиколно решение
За да заобиколите този проблем, можете да използвате една нишка за връщане вместо паралелна нишка за връщане, като разрешите trace Flag 3459.
Повече информация
Когато се изпълняват заявки само за четене в четима вторична реплика, нишките на заявката се опитват да приложат чакащи операции за връщане на регистрационни файлове и трябва да си сътрудничат с работни нишки за повтаряне с DIRTY_PAGE_TABLE_LOCK изчаквания, които могат често да се генерират и забавят както повтарянето, така и производителността на заявките, ако има едновременни работни натоварвания за повторно изпълнение. Проблемът с производителността, свързан с чакането на DIRTY_PAGE_TABLE_LOCK, е адресиран в кумулативното издание на актуализацията за SQL Server 2016 SP и SQL Server 2017 г., споменати в тази статия.
За повече информация можете да видите следния блог в Група за достъпност вторичен модел и производителност на повтарящи се реплики.
Статут
Microsoft потвърди, че това е проблем в продуктите на Microsoft, които са изброени в раздела "Отнася се за".
Препратки
Научете повече за терминологията , която Microsoft използва за описване на актуализациите на софтуера.