Sorgu en iyi duruma getiricisi Microsoft SQL Server 2005 veya Microsoft SQL Server 2008'in aşağıdaki bilgi türlerinden bir en uygun sorgu planlamasını belirlemek için kullanır:
- Veritabanı meta verileri
- Donanım ortamı
- Veritabanı oturum durumu
Genellikle, sorgu en iyi duruma getiricisi bir <a0>test</a0> sistemindeki davranışı yeniden oluşturmak istiyorsanız, tüm bu aynı tür bilgi benzetimini yapmak gerekir.
Microsoft Müşteri Destek Hizmetleri'ne veritabanı meta verilerinin bir komut dosyası oluşturmak isteyebilir. Microsoft Müşteri Destek Hizmetleri'ne, bu komut veritabanı meta verilerin en iyi duruma getiricisi sorunu araştırmak için kullanır. Bu makalede, istatistikleri komut dosyası oluşturmak için gereken adımları açıklar. Bu makalede, sorgu en iyi duruma getiricisi bilgileri kullanma şeklini de anlatılmaktadır.
Komut dosyası oluşturmak için bu adımları izlemeden önce SQL Server 2005 kullanıyorsanız, SQL Server Management Studio'yu sürümü SQL Server 2005 Service Pack 2 veya sonraki bir sürümü olduğundan emin olun. Komut dosyası Sihirbazı, SQL Server 2005'te SQL Server Management Studio'yu önceki sürümlerini kullanıyorsanız, doğru çalışması için tüm gerekli seçenekleri için bu makaledeki adımları içermiyor.
Tüm veritabanını komut dosyası
Clone, istatistikleri yalnızca bir veritabanı oluşturduğunuzda, daha kolay ve daha güvenilir tüm veritabanı yerine, tek tek nesneler için komut dosyası komut dosyası olabilir. Tüm veritabanını komut dosyası aşağıdaki faydaları alırsınız:
- Sorunu yeniden oluşturmak için gerekli olan bağımlı nesnelerin eksik olan sorunlarını da önlersiniz.
- Gerekli olan nesneleri seçmek için önemli ölçüde daha az adımlar gerektirir.
Not Bir veritabanı için bir komut dosyası oluşturma ve nesne binlerce veritabanı için meta veriler içerir, komut dosyası işlemini önemli ölçüde CPU kaynaklarını tüketir. Yoğun olmayan saatlerde komut dosyası oluşturma öneririz. Veya, ikinci seçenek, tek tek nesneler için komut dosyası oluşturmak için kullanabilirsiniz.
Sorgunuz tarafından başvuruda bulunulan her bir veritabanını komut dosyası için <a0></a0>, aşağıdaki adımları izleyin:
- SQL Server Management Studio'yu açın.
- Object Explorerveritabanları ' nı genişletin ve sonra da komut dosyası oluşturmak istediğiniz veritabanını bulun.
- Veritabanını farenin sağ düğmesiyle tıklayın, Görevler ' in üzerine gelin ve sonra Kodları oluştur'ı tıklatın.
- Komut dosyası Sihirbazı'nda doğru veritabanına'nin seçili olduğunu doğrulayın. Komut dosyası tüm nesneleri seçili veritabanındaki onay kutusunu tıklatıp seçin ve ileri ' yi tıklatın.
- Komut dosyası seçenekleri Seç iletişim kutusunda, aşağıdaki tabloda listelenen değere varsayılan değeri aşağıdaki ayarları değiştirin.
Bu tabloyu kapaBu tabloyu aç
| Komut dosyası seçeneği | Değer seçmek için |
|---|
| ANSI doldurma | True |
| Devam etmek hata komut dizileri | True |
| Komut dosyası bağımlı nesneleri oluştur | True |
| Sistem kısıtlama adları içerir. | True |
| Komut dosyası harmanlama | True |
| Komut dosyası veritabanı oluşturma | True |
| Komut dosyası oturumu açma | True |
| Komut dosyası nesne düzeyi izinler | True |
| Komut dosyası istatistikleri | Komut dosyası istatistikleri ve çubuk grafikler |
| Komut dosyası dizinleri | True |
| Komut dosyası Tetikleyicileri | True |
Not Şema dbo farklı oturumlar tarafından sahip olunan nesne içermeyen Kod oturumlar seçeneğini ve Komut dosyası nesne düzeyi izinler seçeneğini gerekli olmayabilir. - Ileri ' yi tıklatın.
- Dosya için komut dosyası</a0> seçeneğini tıklatın ve sonra da bir dosya adı girin.
- Son ' u tıklatın.
Komut dosyasını tek tek nesneler
Tam veritabanı komut dosyası yerine belirli bir sorgu tarafından başvurulan yalnızca komut dosyası tek tek nesne olabilir. Tüm veritabanı nesnelerini SCHEMABINDING, WITH yan tümcesi kullanarak oluşturulan sürece, ancak, bağımlılık bilgilerini
sys.depends</a0> sistem tablosundaki her zaman doğru olmayabilir. Bu bilgi aşağıdaki sorunlardan biri neden olabilir:
- Komut dosyası işlemini bir bağımlı nesne komut.
- Kodlama işlemi yanlış sırada nesneleri komut dosyası. Komut dosyasının başarıyla çalışabilmesi için <a0></a0>, el ile oluşturulan kodu düzenlemeniz gerekir.
Bu nedenle, tek tek nesneler için veritabanı çok sayıda nesne vardır ve komut dosyası yoksa uzun götürecek komut dosyası önerilmez. Komut dosyasını tek tek nesneler kullanmanız gerekiyorsa, şu adımları izleyin:
- SQL Server Management Studio'yu veritabanları ' nı genişletin ve sonra da komut dosyası oluşturmak istediğiniz veritabanını bulun.
- Veritabanını farenin sağ düğmesiyle tıklayın, Komut dosyası veritabanı olarak öğesinin üzerine gelin, CREATE için için işaretleyin ve Dosya</a1>'ı tıklatın.
- Bir dosya adı girin ve sonra da <a2>Kaydet</a2>'i tıklatın.
Ana veritabanı kapsayıcısı komut dosyası. Bu kapsayıcı, dosya, dosya gruplarını, veritabanı ve özellikleri içerir. - Veritabanını farenin sağ düğmesiyle tıklayın, Görevler ' in üzerine gelin ve sonra Kodları oluştur'ı tıklatın.
- Doğru veritabanı'nın seçili olduğundan emin olun ve sonra ileri ' yi tıklatın.
- Komut dosyası seçenekleri Seç iletişim kutusunda, aşağıdaki tabloda listelenen değere varsayılan değeri aşağıdaki ayarları değiştirin.
Bu tabloyu kapaBu tabloyu aç
| Komut dosyası seçeneği | Değer seçmek için |
|---|
| ANSI doldurma | True |
| Devam etmek hata komut dizileri | True |
| Sistem kısıtlama adları içerir. | True |
| Komut dosyası bağımlı nesneleri oluştur | True |
| Komut dosyası harmanlama | True |
| Komut dosyası oturumu açma | True |
| Komut dosyası nesne düzeyi izinler | True |
| Komut dosyası istatistikleri | Komut dosyası istatistikleri ve çubuk grafikler |
| <a1>Komut</a1> USE DATABASE | True |
| Komut dosyası dizinleri | True |
| Komut dosyası Tetikleyicileri | True |
Not Şema dbo farklı oturumlar tarafından sahip olunan nesne içermeyen Kod oturumlar seçeneğini ve Komut dosyası nesne düzeyi izinler seçeneğini gerekli olmayabilir. - Nesne türleri Seç iletişim kutusunda, sorunlu sorgu başvuran tüm veritabanı nesne türlerini seçin.
Örneğin, sorgu, yalnızca tablolara başvuran Tablolar seçin. Sorgu bir görünüme başvuruyor, görünümler ve tablolar'ı seçin. Kullanıcı tanımlı bir işlev sorunlu sorgu kullanılıyorsa, işlevler ' i seçin. - Sorgu tarafından başvurulan tüm nesne türlerini seçtikten sonra ileri ' yi tıklatın.
- 7. Adımda seçtiğiniz her bir veritabanı nesnesi türü için BIR iletişim kutusu görüntülenir. Her iletişim kutusunda, belirli tabloları, görünümleri, işlevler veya diğer veritabanı nesnelerini seçin ve ileri ' yi tıklatın.
- Dosya için komut dosyası</a0> seçeneğini tıklatın ve sonra 3. adımda girilen aynı dosya adını belirtin.
- Komut dosyası'nı başlatmak için son ' u tıklatın.
Komut dosyası, komut dosyası tamamlandığında, Microsoft Destek mühendisine gönderin. Microsoft Destek mühendisine, ayrıca aşağıdaki bilgiler isteyebilir:
- Işlemci ve ne kadar fiziksel bellek varsa sayısı da dahil olmak üzere donanım yapılandırma
- Sorguyu çalıştırdığınızda etkin SET seçenekleri
Not Zaten bu bilgileri SQLDiag rapor veya bir SQL Profiler izlemesi göndererek sağladığınız. Siz de başka bir yöntemi bu bilgileri sağlamak için kullanmış olabilirsiniz.
Bilgileri nasıl kullanılır
Aşağıdaki tablolarda, nasıl sorgu en iyi duruma getiricisi a query plan seçmek için bu bilgileri kullanır açıklanmasına yardımcı olur.
Meta veriler
Bu tabloyu kapaBu tabloyu aç
| Kısıtlamaları | Sorgu en iyi duruma getiricisi kısıtlamaları contradictions sorguyu temel şemaya arasındaki algılamak için sık kullanılır. Örneğin, sorgu, bir "WHERE col = 5" yan tümcesi ve bir "CHECK (col < 5)" Denetim kısıtlaması varsa, hiçbir satır eşleştirileceğini sorgu en iyi duruma getiricisi bilir.
Sorgu en iyi duruma getiricisi benzer türde bir nullability hakkında kesintiler yapar. Örneğin, "WHERE col IS NULL" yan tümcesi true veya false nullability sütunun bağlı ve bir dış birleşim dış tablodan sütun olup olduğu bilinmektedir. FOREIGN KEY kısıtlamaları varlığını önem ve uygun bir birleşim sırasını belirlemek kullanışlıdır. Sorgu en iyi duruma getiricisi birleştirmeler elemek veya yüklemler basitleştirmek için kısıtlama bilgileri kullanabilirsiniz. Bu değişiklikler, temel tablolar erişmek için gereksinimin kaldırabilirsiniz. |
| Statistics | Yoğunluk ve dizin ve istatistikler anahtarının önüne sütun dağıtımını gösteren bir çubuk grafik, istatistik bilgilerini içerir. Yüklemi yapısına bağlı olarak, sorgu en iyi duruma getiricisi yoğunluğu, histogram veya her ikisini de önem düzeyini bir yüklemi tahmin etmek için kullanabilirsiniz. Güncel istatistikleri doğru önem düzeyi tahminleri için gereklidir. Önem düzeyi tahminleri, işleç, maliyet tahmini, girdi olarak kullanılır. Bu nedenle, en uygun sorgu planları almak için iyi bir önem düzeyi tahminleri olması gerekir. |
| Tablo boyutu (satır ve sayfa sayısı) | Sorgu en iyi duruma getiricisi çubuk ve yoğunluk belirli bir yüklemi true veya false olma olasılığını hesaplamak için kullanır. Son önem düzeyi tahmini olasılığı alt işleciyle döndürülen satırların sayısını çarparak hesaplanır. GÇ maliyet tahmini bir etmen tablosunda veya dizin sayfa sayısıdır. Tablo boyutunu tarama maliyetini hesaplamak için kullanılır ve bir dizin arama sırasında erişilen bir sayfa sayısını tahmin ettiğinizde yararlı olur. |
| Veritabanı Seçenekleri | Birkaç veritabanı seçenekleri, en iyi duruma getirme etkileyebilir. Sorgu en iyi duruma getiricisi oluşturur Yeni bir istatistik veya güncel değil güncelleştirme istatistikleri olup olmadığını AUTO_CREATE_STATISTICS ve AUTO_UPDATE_STATISTICS Seçenekler'i etkiler. Giriş sorguyu, sorgu en iyi duruma getiricisi için el için önce giriş sorgu parametreli PARAMETERIZATION düzeyini etkiler. Parameterization önem düzeyi tahmini etkileyebilir ve eşleşen karşı dizin oluşturulmuş görünümler ve diğer en iyi duruma getirmeleri türleri de engelleyebilirsiniz. DATE_CORRELATION_OPTIMIZATION ayarı sütunlar arasındaki bağıntıları aramak en iyi duruma getiricisi neden olur. Bu ayar, önem ve maliyet tahmini etkiler. |
Ortam
Bu tabloyu kapaBu tabloyu aç
| Oturum SET seçenekleri | Etkiler mi ayarlama ANSI_NULLS "NULL NULL =" ifade doğru olarak değerlendirilir. Önem düzeyi tahmini dış birleştirmeler için geçerli ayarı bağlı olarak değişebilir. Ayrıca, belirsiz ifadeler de değişebilir. Örneğin, "col NULL =" ifade ayarına göre farklı olur. Ancak, "col IS NULL" ifade her zaman aynı şekilde değerlendirir. |
| Donanım Kaynakları | Sıralama ve karma işleçleri maliyeti, göreli SQL Server için kullanılabilir bellek miktarına bağlıdır. Örneğin, sorgu en iyi duruma getiricisi verileri her zaman biriktirilmesine gerekir biliyor verinin boyutunu önbelleği büyükse, diske. Verilerin boyutunu önbelleği çok küçük, ancak, işlem bellekte yapılmış olması olasıdır. SQL Server sunucunun birden fazla işlemci varsa ve parallelism "MAXDOP" bir ipucu veya parallelism en büyük ölçüde yapılandırma seçeneğini kullanarak devre dışı değil farklı en iyi duruma getirmeleri da dikkate alır. |
| SQL Server stok birimi (SKU) tutma | Bazı özellikler, yalnızca belirli sürümleri SQL Server 2005'in veya SQL Server 2008'in üzerine etkinleştirilir. Örneğin, dizin oluşturulmuş görünümler karşı sorgu eşleşen yalnızca SQL Server 2005 Enterprise Edition oluşur. Benzer şekilde, planı kılavuzları karşı eşleşen SQL Server 2000 Standard Edition ve SQL Server 2005 Enterprise Edition için sınırlıdır. |