Ознаки
Припустімо, що у вас є група постійного доступності (AG) у SQL Server 2016 і 2017. Під час обробки запиту на читання додаткової репліки продуктивність може бути набагато повільніше, ніж основна репліка через часті DIRTY_PAGE_TABLE_LOCK очікування.
Причина
Ця проблема виникає через суперечки між запитом на читання та повторенням потоку, а також через те, що таблицю заблоковано.
Спосіб вирішення
Це виправлення включено в такі оновлення для SQL Server:
Сукупний пакет оновлень 8 для SQL Server 2017
Сукупний пакет оновлень 1 для SQL Server 2016 із пакетом оновлень 2
Сукупне оновлення 9 для пакета оновлень 1 SQL Server 2016
Про збірки SQL Server
Кожна нова збірка для SQL Server містить усі виправлення та виправлення системи безпеки, які були в попередній збірці. Радимо інсталювати найновішу збірку для своєї версії SQL Server.
Інші способи вирішення
Щоб вирішити цю проблему, можна використовувати один повторити потік замість паралельного повторити потік, увімкнувши трасування позначка 3459.
Додаткові відомості
Коли запити, доступні лише для читання, виконуються в додатковій реплікі, яку можна прочитати, потоки запитів намагаються застосувати операції повторення журналу, що очікують, і потрібно співпрацювати з повторити робочі потоки з очікуванням DIRTY_PAGE_TABLE_LOCK , що часто створюється та сповільнюється як повторення, так і продуктивність запиту, якщо є одночасне повторення завантаженості. У сукупному випуску для пакета оновлень SQL Server 2016 із пакетом оновлень 2016 і SQL Server 2017, згаданій у цій статті, вирішено проблему продуктивності, пов'язану з очікуванням DIRTY_PAGE_TABLE_LOCK.
Докладні відомості див. в наведеному нижче блозі про модель повторного повторення додаткової репліки групи доступності та продуктивність.
Стан
Корпорація Майкрософт підтвердила, що це проблема в продуктах Microsoft, перелічених у розділі "Стосується".
Посилання
Дізнайтеся про термінологію , яка використовується корпорацією Майкрософт для опису оновлень програмного забезпечення.