SQL Server'ı yeniden başlatmak hızlandırıyor mu?


22

Bazı DBA'ların SQL Server'ı çok sık, bazen de gece yeniden başlattıklarını farkettim. Bazı hafızayı boşaltmak, belki de sorguları hızlandırmak için yaptıklarına inanıyorum. Yeniden başlatma sonrası sorgu planlarının yeniden derlenmesi gerektiğini biliyorum, ancak bu uygulama için net bir fayda olup olmadığını merak ediyorum.

SQL Server'ı günlük olarak yeniden başlatmanın daha hızlı çalışmasını sağladığı doğru mu?

Yanıtlar:


37

Sunucuyu yeniden başlatmak, muhtemelen performans için en zarar verici şeylerden biridir. Bu, veriler için soğuk bir önbellek, sorgu planları için soğuk bir önbellek zorladığınız anlamına gelir ve tüm SQL Server iç önbellekleri de işlem sırasında iptal edilir. Operasyonel istatistik DMV'lerinde toplanan tüm istatistikleri çöpe atarak, başarılı bir şekilde araştırma yapma şansınızı azalttığınızdan bahsetmeyin.

Bu uygulamayı destekleyen resmi bir rehberlik yoktur, herhangi bir iyi uygulama saygın çalışmasında bahsettiğimi hiç görmedim, bu sayede bir uygulama olarak bahsettiğim saygın bir uzmandan hiç duymadım. Yapma


Katılmıyorum. SQL Server, güvenlik düzeltme eklerinin ve MS yükseltmelerinin düzenli olarak yeniden başlatılmasını gerektiren bir Windows sunucusunda barındırılmaktadır. Daha iyi SQL tasarımının performans sorunlarını çözmenin ve sunucunun yeniden başlatılmasına güvenmemenin anahtarı olduğuna inanıyorum, ancak bazen gerekli bir adımdır.
Fandango68

27

Diğer cevaplar iyi olsa da, önemli bir parça eksik: Windows'un dosya önbelleği.

64 bit Windows'ta, Windows'un dosyaları önbelleğe almak için kullanacağı bellek miktarında bir sınır yoktur. Windows sisteminizi belleği tamamen kuru kaldırabilir ve bu noktada diske geçmeye başlarsınız. Birkaç yerde belgelenmiştir:

SQL Server'ı yeniden başlatarak, SQL'i bellekten vazgeçmeye zorlar, böylece Windows'un daha fazlasını elde etmesine izin verir ve çağrı geçici olarak durur. SQL, sıfıra yakın bellek kullanımında tekrar başlayacak ve kademeli olarak artacaktır ve kutu yeniden belleği dolduğunda, yeniden başlatma geçici olarak yardımcı olacaktır. Tüm işletim sistemini yeniden başlatarak, Windows'un dosya önbelleğini de kullanmaya zorlarsınız.

Gerçek düzeltme: Windows sunucusundan dosya kopyalamayı durdurun veya yukarıdaki blog yazılarında belirtildiği gibi Dinamik Dosya Önbellek Hizmeti ile kullanılan dosya önbelleği miktarını sınırlayın.


3
+1 Sorunun farkındaydı, önbelleğin dinamik önbellek hizmeti kullanılarak sınırlandırılabileceğinin farkında değildi.
Mark Storey-Smith

Belleği bir MIN ve MAX'a "sabitleme" uygulaması (aynı KB miktarında olsalar da olsa da olabilir), SQL Server'ın yalnızca önceden tanımlanmış miktarda MIN / MAX RAM kullanmasını sağlamaya yardımcı olur mu? Ağ istekleri çalışmaya devam etmek için. Bu benim uygulamamdı ve çok iyi çalıştı. Başka düşüncen var mı?
SnapJag

@SnapJag - mutlaka değil, çünkü SQL minimum miktarı hemen tüketmez. SQL sıfırdan başlar ve ihtiyaca göre yavaş yavaş yükselir.
Brent Ozar 12:12

11

Sorguları hızlandırırsa, parametre koklama söz konusu olabilir. Bir çöplük planı önbelleğe alınırsa ve uygun olmayan sonraki çağrılara uygulanırsa, yeniden başlatma mucizesi ortak / doğru planın önbelleğe alınmasına izin verir. Bu durumda, davranışı diğerinin belirttiği gibi düzeltmenin çok daha iyi yolları var. Ancak kutuyu yeniden başlatmayı bırakana kadar, kök neden analizi yapmanın bir yolu yoktur.


Bu kabul edilen cevap olmalıydı. Doğru SQL tasarımı ve plan tasarımı, sunucunun yeniden başlatılmasına gerek kalmaması için çok önemlidir, ancak sunucu ilkeleri nedeniyle - güvenlik düzeltme ekleri vb. Gibi
Fandango68

11

Hizmet özelliklerini değiştirmediyseniz veya hemen yürürlüğe girmesini istediğiniz başlangıç ​​izlerini ayarlamadıkça, SQL Server'ı yeniden başlatmamalısınız.

@RemusRusanu bir çok noktaya değindiği gibi, çok fazla önbellek temizler ve SQL Server'ın pek çok gereksiz başlangıç ​​çalışması yapmasına neden olur .

Bu sunucunun özel bir SQL Server / veritabanı sunucusu olmadığı anlaşılıyor. Bir üretim veritabanı sunucusunun bir veritabanı sunucusu olmak için tek bir amacı ... olması en iyisidir. Bu durumda, işletim sistemi için yeterince bellek ve kaynak ayırır ve diğer her şeyi SQL Server'a verirsiniz. Bu, diğer uygulamalara veya sunucu rollerine aç kalmamanızı sağlar.


2

Her şeyi doğru yapıyorsanız, MSSQL Sunucunuzu Yeniden Başlatmanız / Yeniden Başlatmanız gerekmeyeceği fikrine katılıyorum.
Bana göre bu, herkesin yetkin olduğu senaryo için geçerlidir ve her şeyi düzeltebilirsiniz.

Ben bir DBA değilim. Bir Yazılım Mimarı ve sıfırdan tüm Veritabanı Şemaları bina ve içerdiğini ve bunun bir parçası değilim maalesef , kesinlikle olması 3. Taraf Veritabanları ile çalışan YOK üzerinde kontrol.
Ana 3. Parti Veritabanlarımızdan birini yaratan ve koruyan insanlar, zar zor işlevsel kıldı.

Ben de Güvenlik Uzmanı veya Ağ Mühendisi olmadığımı mı söyledim?

  • En az bir Büyük Pencere İşletim Sistemi Güncellemesi, Güvenlik Güncelleştirmesi, BIOS Güncelleştirmesi, OS / MSSQL Hizmet Paketi veya MSSQL Toplu Güncelleme, her iki ayda bir ortaya çıkması zorunludur.
  • Bunları zamanında uygulamak, Sunucunuzu her üç ayda bir yeniden başlatmak / yeniden başlatmak anlamına gelir.
  • Bir Intranet içinde çalışırken bile, neden Güvenlik Güncelleştirmeleri'ni uygulamıyorsunuz?
  • PHI Intranet web sitelerimizde SSL’e sahip olmama izin verilirse, hiçbir ağ yapılamaz olmadığı için yapardım. Ben paranoyakım sanırım.


Bana göre soru şu şekilde olur: SQL Server'ı her 3 ayda bir daha sık yeniden başlatmalı mıyım?

Çizelgeleme Ekstra bir inçlik performans vaadi için yeniden başlatmalar, yağmur için dans etmek gibidir.
Belki gelecektir, belki gelmeyebilir, ama neyin yağmurda yağacağını kesin olarak bilemezsiniz.

  • Düzenli bakım nedeniyle sunucuyu yeniden başlattıktan sonra önemli bir performans artışı olduğunu fark ederseniz, bunun neden olduğunu araştırmalısınız.
  • Sorun yaşıyorsanız ve bunlara neyin yol açtığını bilmiyorsanız, bellek sızıntısı gibi bir şey bulmak için hizmetleri ve işleri durdurarak değişkenlerinizi azalttığınız zaman (bunun gibi aşırı durumlarda) bazı servisleri açıkken sunucunuzu yeniden başlatabilir / yeniden başlatabilirsiniz. kapalı (veya izleri açık) diğer hizmetleri neden olarak reddetmenize yardımcı olur.

Söylediğin gibi değil ASLA bir sorunu gidermek ya da yük devretme doğrulamak için yeniden başlatın bunun gerekiyor, ama ben bunu rastgele meydana gelen bilinmeyen bir performans sorununu tutmak için zamanlama yeniden başlatıldığında bir sorun var.

Bunun tek istisnası, her hafta veya iki kez yeniden başlatmanın çalışmaya devam etmesinin tek yolu gibi göründüğü ve onu düzeltmenize ve hatta dokunmanıza izin verilmeyen haydut bir 3. Taraf Veritabanını yönetmenizdir.
O zaman bile, düzeltmeleri aramalı, bunları sahibiyle paylaşmalı ve çözülene kadar cehennemi yükseltmelisin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.