Dlaczego statystyki aktualizacji pełnego skanowania wykorzystują 100% procesora na SQL Server 2014, kiedy zużywa może 20% procesora na SQL Server 2008 R2 dla tych samych tabel z podobnymi możliwościami sprzętowymi?
Patrzyłem na MAXDOP
inne opcje i naprawdę nie widziałem niczego, co by się wyróżniało. Zdaję sobie sprawę, że mogą istnieć ustawienia, które mogą to powodować, ale ustawienia są bardzo podobne dla obu baz danych (na przykład MAXDOP
wynosi 4 dla obu, przy czym oba mają wiele rdzeni). Oba są wersją Enterprise Edition.
Czy w programie SQL Server 2014 i SQL Server 2008 R2 jest coś „innego”, co mogłoby to wyjaśnić? Mam opcję pamięci na 90% dla obu serwerów. Masz jakieś przemyślenia na temat tego, czego szukać?
Raz w tygodniu uruchamiam statystyki aktualizacji z pełnym skanowaniem (100%) na dwóch serwerach przy użyciu SQL Server 2008 R2 / SP3 i SQL Server 2014 / SP2, a bazy danych mają tę samą strukturę. Na serwerze 2008 R2 statystyki aktualizacji dwóch bardzo dużych tabel zajmują kilka godzin, czego się spodziewam, ale procesor pozostaje w użyciu przez około 20%. Na serwerze 2014 procesor przechodzi w 100% na około 40 minut. Tabele są nieco mniejsze na serwerze 2014. Widzę to za pomocą menu analizy SQL Monitor.
Oto dane wyjściowe pliku dziennika Ola na serwerze SQL 2014, procesor przechodzi w 100% z około 2:10 do 2:45:
Date and time: 2017-06-24 02:10:20
Command: UPDATE STATISTICS [InVA].[dbo].[AuditField] [_WA_Sys_00000005_15502E78] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:07:48
Date and time: 2017-06-24 02:18:08
Date and time: 2017-06-24 02:18:08
Command: UPDATE STATISTICS [InVA].[dbo].[AuditField] [_WA_Sys_00000006_15502E78] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:32:22
Date and time: 2017-06-24 02:50:30
Oto dane wyjściowe pliku dziennika Ola na serwerze SQL 2008 R2 dla dwóch powyższych statystyk, ale procesor może wynosić może 15%:
Date and time: 2017-06-24 03:30:32
Command: UPDATE STATISTICS [InGA].[dbo].[AuditField] [_WA_Sys_00000003_0425A276] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:05:00
Date and time: 2017-06-24 03:35:32
Date and time: 2017-06-24 03:35:32
Command: UPDATE STATISTICS [InGA].[dbo].[AuditField] [_WA_Sys_00000004_0425A276] WITH FULLSCAN
Outcome: Succeeded
Duration: 00:52:31
Date and time: 2017-06-24 04:28:03
Nie mogę uruchomić ich z serwerem maxdop = 1, ponieważ eliminuje to generowanie wszystkich planów równoległych, co może zaszkodzić aplikacji. Planuję pójść w przeciwnym kierunku i zwiększyć go do 8 (na pudełku jest 16 rdzeni) i zobaczyć, co się stanie. Może działać szybciej, aby skrócić czas ustalania procesora. To zadanie działa, gdy użytkownicy w większości znikają.
tempdb
konfiguracja jest taka sama? Można go używać, gdyUPDATE STATISTICS
jest uruchomiony, więc może to również stanowić problem.