it-swarm.asia

Apakah memulai ulang SQL Server mempercepatnya?

Saya telah memperhatikan bahwa beberapa DBA me-restart SQL Server sangat sering, kadang-kadang bahkan setiap malam. Saya percaya mereka melakukannya untuk membebaskan memori, atau mungkin untuk mempercepat permintaan juga. Saya tahu bahwa setelah restart permintaan rencana harus dikompilasi ulang, tetapi bahkan termasuk bahwa saya bertanya-tanya apakah ada manfaat bersih untuk praktik ini.

Apakah benar me-restart SQL Server setiap hari membuatnya berjalan lebih cepat?

22
MAK

Restart server mungkin adalah salah satu hal yang paling merusak kinerja. Itu berarti Anda memaksa cache dingin untuk data, cache dingin untuk rencana kueri, dan semua cache internal SQL Server juga nuked dalam proses. Belum lagi dengan membuang semua statistik yang dikumpulkan dalam statistik operasional DMV, Anda mengurangi peluang Anda untuk menyelidiki sesuatu dengan sukses.

Tidak ada panduan resmi yang mendukung praktik ini, saya belum pernah melihatnya disebutkan dalam praktik yang memiliki reputasi baik, saya tidak pernah mendengar seorang ahli terkemuka pernah menyebut ini sebagai praktik. Jangan lakukan itu.

37
Remus Rusanu

Sementara jawaban lain baik, mereka melewatkan bagian penting: cache file Windows.

Pada Windows 64-bit, tidak ada batasan untuk jumlah memori yang akan digunakan Windows untuk menyimpan file. Windows dapat menguras sistem Anda benar-benar kering memori, dan pada saat itu, Anda akan mulai bertukar ke disk. Sudah didokumentasikan di beberapa tempat:

Dengan me-restart SQL Server, Anda memaksa SQL untuk menyerah memori, sehingga membiarkan Windows mendapatkan lebih banyak, dan paging berhenti sementara. SQL akan mulai lagi pada penggunaan memori mendekati nol dan secara bertahap naik, dan ketika kotak kehabisan memori lagi, restart akan membantu sementara. Dengan me-restart seluruh OS, Anda juga akan memaksa penggunaan file cache Windows.

Cara mengatasinya: berhenti menyalin file dari server Windows atau membatasi jumlah cache file yang digunakan dengan Layanan Cache File Dinamis seperti yang didokumentasikan dalam posting blog di atas.

28
Brent Ozar

Jika mempercepat kueri, sniffing parameter mungkin terlibat. Jika rencana omong kosong di-cache dan diterapkan pada panggilan berikutnya yang tidak sesuai, maka keajaiban rebooting memungkinkan rencana umum/benar untuk di-cache. Jika itu masalahnya, ada cara yang jauh lebih baik untuk memperbaiki perilaku seperti yang telah ditunjukkan oleh orang lain. Tetapi sampai mereka berhenti me-reboot kotak, tidak ada cara untuk melakukan analisis akar penyebab.

11
billinkc

Anda seharusnya tidak me-restart SQL Server kecuali Anda telah mengubah properti layanan atau mengatur jejak startup yang Anda ingin segera lakukan.

Sebagai @RemusRusanu telah menyatakan banyak poin, ia membersihkan banyak cache dan menyebabkan SQL Server melakukan banyak pekerjaan startup yang tidak perl.

Sepertinya server ini bukan SQL Server/database server khusus. Ini adalah praktik terbaik untuk memiliki server basis data produksi yang hanya memiliki satu tujuan ... untuk menjadi server basis data. Dalam hal ini, Anda akan menyisihkan cukup memori dan sumber daya untuk OS dan memberikan segalanya untuk SQL Server. Ini akan membuat Anda tidak kelaparan aplikasi lain atau peran server.

11
Thomas Stringer

Saya setuju dengan sentimen bahwa jika Anda melakukan semuanya dengan benar, maka Anda mungkin tidak perlu me-Reboot/Restart MSSQL Server Anda.
Bagi saya ini berlaku untuk skenario di mana semua orang kompeten dan Anda dapat memperbaiki apa pun.

Saya bukan DBA. Saya seorang Arsitek Perangkat Lunak dan bagian dari itu melibatkan membangun seluruh Skema Basis Data dari awal dan, sayangnya , bekerja dengan Basis Data Pihak ke-3 yang benar-benar saya miliki NO kontrol.
Orang-orang, yang menciptakan dan memelihara salah satu dari Database Pihak ke-3 utama kami, nyaris membuatnya berfungsi.

Apakah saya menyebutkan saya juga bukan Pakar Keamanan atau Insinyur Jaringan?

  • Setidaknya satu Pembaruan OS Jendela Utama, Pembaruan Keamanan, Pembaruan BIOS, Paket Layanan OS/MSSQL, atau Pembaruan Kumulatif MSSQL terikat untuk keluar setiap satu atau dua bulan.
  • Menerapkan ini pada waktu yang tepat berarti me-reboot/Restart Server Anda sekitar setiap kuartal.
  • Bahkan ketika beroperasi di dalam Intranet, mengapa Anda tidak menerapkan Pembaruan Keamanan?
  • Jika saya diizinkan memiliki SSL di situs web Intranet PHI kami, saya akan melakukannya karena tidak ada jaringan yang sempurna. Saya paranoid saya kira.


Bagi saya pertanyaan itu kemudian menjadi: Haruskah saya Restart SQL Server lebih sering daripada setiap 3 bulan?

Penjadwalan Mulai kembali untuk janji satu inci tambahan kinerja, seperti menari untuk hujan.
Mungkin itu akan datang, mungkin tidak, tetapi Anda tidak akan tahu pasti apa yang menyebabkan hujan.

  • Jika Anda melihat tonjolan kinerja yang signifikan setelah me-reboot server karena pemeliharaan rutin, maka Anda harus menyelidiki mengapa itu terjadi.
  • Jika Anda mengalami masalah, dan tidak yakin apa yang menyebabkannya, maka saat Anda mengurangi variabel dengan menghentikan layanan dan pekerjaan untuk menemukan sesuatu seperti kebocoran memori (dalam kasus ekstrem seperti ini) mungkin me-reboot/memulai ulang server Anda dengan beberapa layanan berubah off (atau jejak dihidupkan) akan membantu Anda mengesampingkan layanan lain tersebut sebagai penyebabnya.

Saya tidak suka mengatakan Anda [~ # ~] tidak pernah [~ # ~] perlu Restart untuk memecahkan masalah menerbitkan atau memverifikasi failover, tetapi saya do memiliki masalah dengan penjadwalan Mulai ulang agar masalah kinerja yang tidak diketahui tidak terjadi secara acak.

Pengecualian Hanya untuk ini adalah jika Anda mengelola Basis Data Pihak Ketiga yang nakal tempat mem-boot-ulangnya satu atau dua minggu tampaknya menjadi satu-satunya cara untuk membuatnya beroperasi dan Anda tidak diizinkan untuk memperbaiki atau bahkan menyentuhnya.
Bahkan saat itu, Anda harus mencari perbaikan, membaginya dengan pemilik, dan membangkitkan neraka sampai selesai.

2
MikeTeeVee