Saya memiliki ~ 10 hari instalasi lama WinServer2012R2 dan SQL Server Express 2016 untuk pengujian. Saya satu-satunya pengguna di mesin ini. Database dengan .bak dari SQL Server 2005 dari ~ 250MB dipulihkan tanpa masalah. Setelah reboot mesin proses "SQL Server NT - 64 Bit" menggunakan CPU 0%.
Setelah beberapa menit atau beberapa jam dan beberapa pertanyaan sederhana (tidak ada pembaruan / sisipan!) Dari penggunaan SSMS CPU "SQL Server NT - 64 Bit" tiba-tiba melonjak hingga ~ 15% dan tetap di sana, bahkan ketika idle. Dari titik itu pada pertanyaan yang biasanya memakan waktu kurang dari satu detik tiba-tiba membutuhkan waktu 2 menit. Selama permintaan aktual, penggunaan CPU TIDAK bertambah. Server menjadi hampir tidak dapat digunakan dalam kondisi ini.
Hanya menghubungkan SQL Server Profiler kemudian mengambil> 30sec. Di samping pertanyaan saya sendiri, saya hanya melihat sangat sedikit pertanyaan dari SQLServerCEIP / SQLTELEMETRY, ~ 3 per menit.
Restart SQL-Server tidak menyelesaikannya. Penggunaan CPU melompat kembali ke ~ 15%. Bahkan setelah jam SQL-Server tidak pulih. Hanya me-reboot seluruh mesin yang menyelesaikan masalah.
Karena ini adalah instalasi "out of the box", hanya ada database kecil, hampir tidak ada pertanyaan, hanya saya sebagai pengguna dan mungkin tidak ada kunci, banyak artikel tentang masalah kinerja SQL-Server biasa berbicara tentang banyak hal yang tidak benar-benar berlaku di sini. Tampaknya SQL-Server secara eksklusif ingin berkonsentrasi pada beberapa tugas internal.
Ini adalah mesin virtual dengan RAM 2GB dan dual Xeon pada 2GHz. Saya juga punya VS2016 dan sangat cepat. Tidak ada antivirus, bahkan Windows Defender. Sudah terlambat di sini. Saya akan mencoba sp_whoisactive besok. Saya benar-benar bertanya-tanya APA yang dilakukan SQL-Server di sana ... Di mesin sebelumnya dengan 1 GB DB yang sama berjalan di bawah SQLServer2005 selama 10 tahun tanpa masalah ...
Saya bukan ahli SQL-Profiler. Di mana saya harus mulai mencari?
sumber
auto_update_statistics_async
dihidupkan.Jawaban:
Karena utilisasi CPU Anda rendah (dan Anda memiliki set CPU yang hebat), saya akan memeriksa tekanan memori terlebih dahulu. Dengan SQL Express 2016 Anda terbatas pada memori 1410 MB, tetapi VM Anda hanya memiliki 2GB. Berikan VM Anda 1GB lebih banyak memori dan lihat apakah itu membantu. Anda juga dapat memeriksa log SQL Server Anda jika paging memori ke file.
Jika itu tidak berhasil, coba atur pengaturan basis data LEGACY_CARDINALITY_ESTIMATION ke ON. Referensi: Menggunakan Tingkat Kompatibilitas DB 130 dengan CE Lama di SQL Server 2016 . Kami mengalami ini dengan beberapa peningkatan kami; hasil akan bervariasi dengan setiap basis data.
sumber
Patch berikut menjelaskan masalah yang sama. Mungkin patut dicoba:
https://support.microsoft.com/en-us/help/3195888/fix-high-cpu-usage-causes-performance-issues-in-sql-server-2016
sumber