Jadi, di SQL Server 2016, pembaruan statistik menggunakan mode sampel sekarang berjalan secara paralel di bawah tingkat kompatibilitas 130, dan ini adalah cara kerjanya secara default, untuk semua pembaruan statistik otomatis dan manual. Ini dijelaskan secara singkat di sini:
- Penambahan Pengoptimal Kueri di SQL Server 2016
(Dokumentasi juga telah diperbarui, baik topik Tingkat Kompatibilitas maupun topik STATISTIK PEMBARUAN.)
Namun, bukankah lebih baik untuk dapat menentukan berapa banyak CPU yang benar-benar dapat digunakan untuk operasi ini (selain hanya mengizinkan batas 16)? Saya pikir dapat membatasi ini menjadi 4 atau 8 akan menjadi hal yang jelas dan logis untuk didukung. Khususnya untuk pelanggan yang menjalankan sistem dengan 16 inti atau lebih sedikit, atau beberapa instans dalam satu kotak, yang tidak dapat mengandalkan fitur Perusahaan seperti Resource Governor (yang sebagian besar Pelanggan Perusahaan tidak dapat diganggu untuk menggunakannya, IMHO).
Pembenaran bisnis untuk ini akan sama dengan pembenaran yang digunakan untuk menambahkan dukungan MAXDOP REBUILD, DBCC CHECKDB dan keluarga operasi pemeliharaannya, dll. Anda ingin mencegah jenis aktivitas ini mengambil alih semua inti, tanpa melakukan sesuatu yang drastis seperti mematikan pembaruan otomatis atau menggunakan MAXDOP di seluruh instance – karena tidak semua orang memiliki masa pemeliharaan yang mewah.
Dan dalam kasus ini, MAXDOP di seluruh instance tidak akan membantu , karena SQL Server 2016 RTM memiliki bug di mana MAXDOP diabaikan untuk pembaruan statistik sampel. Perbaikan akan segera dilakukan, tetapi saya pikir Anda harus tahu; jika ini menyebabkan Anda bermasalah, satu opsi adalah menggunakan tingkat kompatibilitas yang lebih rendah.
Tetapi saya akan mengulangi sesuatu yang sering saya katakan:Tingkat kompatibilitas menjadi terlalu ramai. Jika saya ingin statistik sampel paralel di database saya tetapi saya memiliki regresi estimasi kardinalitas yang cukup untuk memerlukan CE lama, saya harus memilih satu atau yang lain.
Dan hal lain:Gubernur Sumber Daya berlebihan untuk kasus penggunaan ini, dan membatasi penggunaan inti dari pembaruan statistik seharusnya tidak benar-benar menjadi fitur Perusahaan (seperti REBUILD dan CHECKDB yang disebutkan di atas). Tolong jangan beri tahu saya bahwa RG adalah alternatif yang dapat diterima, karena itu hanya mungkin untuk pengguna dengan klasifikasi beban kerja Edisi Perusahaan *dan* yang harus dibatasi oleh MAXDOP sepanjang waktu . Saya harus dapat membatasi ini dengan operasi tertentu (atau, katakanlah, hanya untuk tabel terbesar/masalah saya), bukan dengan membatasi seluruh sesi login.
Bagaimana saya berharap mereka akan melakukannya
Idealnya, kita akan dapat mengatur ini pada tingkat basis data, menggunakan opsi KONFIGURASI LINGKUP DATABASE baru, dan pada tingkat pernyataan, menggunakan sintaks OPTION (MAXDOP n) yang sudah dikenal. Tingkat pernyataan akan menang, dan setiap pembaruan statistik mode sampel (termasuk otomatis) tanpa petunjuk MAXDOP eksplisit akan kembali ke pengaturan tingkat basis data. Ini akan memungkinkan saya untuk menetapkan MAXDOP 4, misalnya, untuk semua pembaruan statistik otomatis yang terjadi pada waktu yang tidak terduga, tetapi 8 atau 16 untuk operasi manual di jendela pemeliharaan yang diketahui. Sebagai salah satu contoh.
Jika Anda ingin memilih ini, silakan lihat item Connect berikut, dan tambahkan alasan bisnis untuk ini (ala Michael Campbell):
- Hubungkan #628971 :Tambahkan parameter MAXDOP ke Update Stats
Tentu saja, item itu sudah ada sejak 2010, jadi tidak disebutkan sama sekali tentang jalur KONFIGURASI CAKUPAN DATABASE, itulah sebabnya saya meninggalkan komentar juga.
Sementara itu, jika Anda ingin menonaktifkan paralelisme untuk mode sampel, ada tanda jejak untuk secara efektif kembali ke perilaku yang lebih lama (Anda juga dapat melakukan ini dengan kembali ke tingkat kompatibilitas kurang dari 130, tetapi saya tidak merekomendasikan ini karena itu mempengaruhi banyak hal lainnya). Saya akan memperbarui ruang ini ketika saya telah diberi izin untuk mengungkapkan bendera jejak secara publik, tetapi saat ini, Microsoft memegangnya erat-erat.