Паралельне оновлення статистики


14

У SQL Server 2008 чи новіших версіях є UPDATE STATISTICS WITH FULLSCANоднопоточна операція чи вона може використовувати паралелізм? Як щодо оновлення статистики з вибіркою за замовчуванням - чи можна використовувати паралелізм? Я не бачу параметр із зазначенням MAXDOPстатистики оновлення.

Відповіді:


22

Паралельне оновлення статистики доступне з SQL Server 2005. Це задокументовано у статті TechNet "Статистика, що використовується оптимізатором запитів у Microsoft SQL Server 2005" :

Екстракт статті

Якщо виконується повне сканування (явно запитуване чи ні), внутрішній запит, згенерований для збору даних, має загальну форму:

SELECT
    StatMan([SC0])
FROM 
(
    SELECT TOP 100 PERCENT
        [Column] AS [SC0]
    FROM [Table] WITH (READUNCOMMITTED)
    ORDER BY [SC0]
) AS _MS_UPDSTATS_TBL
OPTION (MAXDOP 16)

Зверніть увагу на MAXDOPпідказку (хоча користувач не може вказати підказку вручну). Там, де зібрані вибіркові статистичні дані, внутрішній запит використовує TABLESAMPLEпункт, який запобігає паралелізму. Двигун також генерує MAXDOP 1підказку на внутрішній запит, який трохи зайвий.

Якщо вам коли-небудь потрібно зменшити паралелізм, MAXDOPпідказку у внутрішньому запиті можна замінити за допомогою Resource Governor (лише для Enterprise).

SQL Server 2016 додає паралельне оновлення вибіркової статистики.


1

Починаючи з SQL Server 2016 SP2, ви можете використовувати MAXDOPопцію.

Оновлення додає підтримку опції MAXDOP для CREATE STATISTICS та UPDATE STATISTICS :

Це оновлення додає підтримку опції MAXDOP для CREATE STATISTICS та UPDATE STATISTICS у Microsoft SQL Server 2016 та 2017. Це дозволяє переопрацювати налаштування за замовчуванням для максимальної ступеня паралелізму (MAXDOP), що вказано на рівні бази даних або сервера.

Примітка: Отримана ступінь паралелізму обмежується налаштуваннями групи MAX_DOP групи завантаженості, якщо використовується Управління ресурсами.

Наприклад, припустимо, що використовується таблиця Sales.SalesOrderDetail і на ній вже створено кілька статистичних даних. У цьому випадку наступний сценарій оновлює кожну статистику із ступенем паралельності, рівного 8.

UPDATE STATISTICS Sales.SalesOrderDetail WITH MAXDOP = 8

-3

ОНОВЛЕНА СТАТИСТИКА не має ніякого внутрішнього паралелізму. Не має значення, чи працюєте ви з FULLSCAN або SAMPLING. Звичайно, ви можете запустити кілька команд ОНОВЛЕННЯ СТАТИСТИКИ одразу, кожна в іншому з'єднанні, через декілька завдань агента SQL або інший підхід. Залежно від вашої точної ситуації з обладнанням і даними, ви можете виявити, що просто перевстановлення таблиць відбувається швидше, ніж ОНОВЛЕННЯ СТАТИСТИКИ з FULLSCAN і, можливо, кращий варіант.


Я прошу вибачення за заниження, але ви поняття не маєте, про що говорите. З цієї довідки msdn.microsoft.com/en-us/library/dd535534(v=sql.100).aspx "Паралельний збір статистики для повного сканування: для статистики, зібраної за допомогою повного сканування, створення єдиного об'єкта статистики можна зробити паралельно для як нерозділені, так і розділені таблиці. " Однак я не в змозі побачити паралелізм, коли я використовую ОНОВЛЕННУ СТАТИСТИКУ з повним скануванням на таблиці 30 мільйонів рядків
SQL Learner

Крім того, оновлення stat приймає блокування стабільності схеми, тому якщо ви запустите інші статистичні дані оновлення, воно зачекає, поки не завершиться раніше.
SQL Learner

4
@SQLLearner: Без образи, але незалежно від правильності цієї відповіді, чому ви задаєте це питання, якщо ви прочитали цю довідку? Це дає відповідь на все, що ви запитали. Якщо ви не бачите паралелізму для свого конкретного сценарію, відредагуйте це питання, щоб вказати це та будь-які інші релевантні деталі.
Джон Сейгель

Джон Сейгел знайшов і прочитав посібник після того, як поставив запитання, проте, переглядаючи Інтернет, все ще не впевнений, чи може статистика оновлення використовувати паралелізм.
SQL Learner

4
Ви праві, що стосується білого паперу та sql2008. Я щойно прочитав ту білу книжку; інформація в моїй голові застаріла. У мене було багато проблем з sql2005 або, можливо, навіть sql2000 щодо перепланування, оновлення статистики, FULLSCAN проти зразка, часу, необхідного для виконання робочих місць та стохастичної якості даних на сторінках статистики. Я здогадуюсь, що весь цей біль зараз - вода під мостом. Я б сказав, що ви можете паралельно запускати ОНОВЛЕННЯ ДЕРЖАВИ на різних таблицях, але це здається більшим клопотом, ніж це коштує, і у вас може бути занадто багато суперечок вводу / виводу, щоб воно було варте.
протока Дарина
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.