Mengapa statistik pembaruan pindai penuh menggunakan 100% CPU pada SQL Server 2014 ketika mungkin menggunakan 20% CPU pada SQL Server 2008 R2, untuk tabel yang sama, dengan kemampuan perangkat keras yang serupa?
Saya telah melihat MAXDOP
, opsi lain, dan benar-benar melihat tidak ada yang menonjol. Saya menyadari bahwa mungkin ada pengaturan yang dapat menyebabkan ini, tetapi pengaturannya sangat mirip untuk kedua basis data (misalnya, MAXDOP
adalah 4 untuk keduanya, dengan keduanya memiliki beberapa inti). Keduanya adalah Edisi Perusahaan.
Apakah ada sesuatu yang "berbeda" dalam SQL Server 2014 versus SQL Server 2008 R2 yang dapat menjelaskan hal ini? Saya memiliki opsi memori sebesar 90% untuk kedua server. Adakah pemikiran tentang apa yang harus dicari?
Saya menjalankan pembaruan statistik dengan pemindaian penuh (100%) seminggu sekali di dua server menggunakan SQL Server 2008 R2 / SP3 dan SQL Server 2014 / SP2, dan database memiliki struktur yang sama. Pada server R2 2008, statistik pembaruan dari dua tabel yang sangat besar membutuhkan waktu beberapa jam, itulah yang saya harapkan, tetapi CPU tetap di bawah 20% atau lebih pemanfaatan sepanjang waktu. Di server 2014, CPU berjalan ke 100% selama sekitar 40 menit. Tabel sedikit lebih kecil di server 2014. Saya melihat ini dengan menggunakan menu analisis Monitor SQL.
Berikut ini adalah output dari file log Ola pada SQL Server 2014, CPU menjadi 100% dari sekitar 2:10 hingga 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
Berikut ini adalah output dari file log Ola pada 2008 R2 SQL Server untuk dua statistik di atas, tetapi CPU pergi ke mungkin 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
Saya tidak bisa menjalankannya dengan server maxdop = 1 karena itu menghilangkan semua pembuatan paket paralel, dan itu bisa merusak aplikasi. Saya berencana untuk pergi ke arah yang berlawanan dan meningkatkannya menjadi 8 (ada 16 core di kotak) dan melihat apa yang terjadi. Dapat berjalan lebih cepat untuk mengurangi lamanya waktu CPU dipatok. Pekerjaan ini berjalan saat sebagian besar pengguna pergi.
tempdb
konfigurasinya sama? Itu bisa digunakan saatUPDATE STATISTICS
sedang berjalan, sehingga bisa juga menjadi masalah.