SQL Server'de yalnızca istatistik veritabanı oluşturmak için istatistik betiği oluşturma
Bu makalede, SQL Server'de yalnızca istatistik veritabanı oluşturmak için veritabanı meta verilerini kullanarak istatistik betiği oluşturmayı öğreneceksiniz.
Orijinal ürün sürümü: SQL Server 2014, SQL Server 2012, SQL Server 2008
Özgün KB numarası: 914288
Giriş
DBCC CLONEDATABASE, performans sorunlarını araştırmak için veritabanının yalnızca şema kopyası oluşturmak için tercih edilen yöntemdir. Bu makaledeki yordamı yalnızca kullanamadığınızda kullanın
DBCC CLONEDATABASE.
Microsoft SQL Server'daki sorgu iyileştiricisi, en uygun sorgu planını belirlemek için aşağıdaki bilgi türlerini kullanır:
- veritabanı meta verileri
- donanım ortamı
- veritabanı oturum durumu
Genellikle, bir test sisteminde sorgu iyileştiricisinin davranışını yeniden oluşturmak için tüm bu tür bilgilerin benzetimini yapmanız gerekir.
Microsoft Müşteri Destek Hizmetleri, sorgu iyileştirici sorununu araştırmak için veritabanı meta verilerinin betiğini oluşturmanızı isteyebilir. Bu makalede istatistik betiğini oluşturma adımları ve sorgu iyileştiricisinin bilgileri nasıl kullandığı açıklanır.
Not
Bu veriler içinde kaydedilen anahtarlar PII bilgilerini içerebilir. Örneğin, tablonuzda istatistik içeren bir Telefon numarası sütunu varsa, her adımın yüksek anahtar değeri oluşturulan istatistik betiğinde olur.
Veritabanının tamamını betikle
Yalnızca istatistiklerden oluşan bir kopya veritabanı oluşturduğunuzda, tek tek nesneleri betik oluşturmak yerine veritabanının tamamını betik oluşturmak daha kolay ve daha güvenilir olabilir. Veritabanının tamamını betik olarak kullandığınızda aşağıdaki avantajları elde edebilirsiniz:
- Sorunu yeniden oluşturmak için gereken eksik bağımlı nesnelerle ilgili sorunlardan kaçınırsınız.
- Gerekli nesneleri seçmek için daha az adıma ihtiyacınız vardır.
Bir veritabanı için betik oluşturursanız ve veritabanının meta verileri binlerce nesne içeriyorsa, betik oluşturma işleminin önemli CPU kaynakları tükettiğini unutmayın. Yoğun olmayan saatlerde betiği oluşturmanız önerilir veya tek tek nesneler için betik oluşturmak için Tek Tek Nesneleri Betikle seçeneğini kullanabilirsiniz.
Sorgunuzun başvurduğunu her veritabanını betik olarak kullanmak için şu adımları izleyin:
SQL Server Management Studio açın.
Nesne GezginiVeritabanları'nı genişletin ve betik oluşturmak istediğiniz veritabanını bulun.
Veritabanına sağ tıklayın, Görevler'in üzerine gelin ve Betik Oluştur'a tıklayın.
Betik sihirbazında doğru veritabanının seçili olduğunu doğrulayın. Tüm veritabanının ve tüm veritabanı nesnelerinin betiğini seçmek için tıklayın ve ardından İleri'yi seçin.
Betik Seçeneklerini Seç iletişim kutusunda Gelişmiş düğmesini seçerek varsayılan değerden aşağıdaki tabloda listelenen değere aşağıdaki ayarları değiştirin.
Betik oluşturma seçeneği Seçecek değer Ansi doldurma True Hatada Betik Çalıştırmaya Devam Et True Bağımlı Nesneler için Betik Oluşturma True Sistem Kısıtlama Adlarını Ekle True Betik Harmanlaması True Betik Oturum Açma Bilgileri True Betik Nesne Düzeyi İzinleri True Betik İstatistikleri True Betik Dizinleri True Betik Tetikleyicileri True
Not
Şema dbo dışındaki oturum açma bilgilerine ait nesneler içermediği sürece Betik Oturum Açmaları seçeneği ve Betik Nesne Düzeyi İzinleri seçeneğinin gerekli olmayabileceğini unutmayın.
Değişiklikleri kaydetmek için Tamam'ı seçin ve Gelişmiş Betik Seçenekleri sayfasını kapatın.
Dosyaya Kaydet'i seçin ve Tek dosya seçeneğini belirleyin.
Seçimlerinizi gözden geçirin ve İleri'yi seçin.
Bitir'i seçin.
Tek tek nesneler için betik oluşturma
Veritabanının tamamını betik oluşturmak yerine yalnızca belirli bir sorgu tarafından başvuruda bulunan tek tek nesnelerin betiğini oluşturabilirsiniz. Ancak tüm veritabanı nesneleri yan tümcesi
WITH SCHEMABINDING kullanılarak oluşturulmadığı sürece, sistem tablosundaki
sys.depends bağımlılık bilgileri her zaman doğru olmayabilir. Bu yanlışlık aşağıdaki sorunlardan birine neden olabilir:
Betik oluşturma işlemi bağımlı bir nesne betiği oluşturmaz.
Betik oluşturma işlemi nesneleri yanlış sırada betikle yazabilir. Betiği başarıyla çalıştırmak için, oluşturulan betiği el ile düzenlemeniz gerekir.
Bu nedenle, veritabanında çok fazla nesne olmadığı ve betik oluşturmanın çok uzun sürmediği sürece tek tek nesneleri betik olarak yazmanız önerilmez. Betik nesnelerini tek tek kullanmanız gerekiyorsa şu adımları izleyin:
SQL Server Management Studio Veritabanları'nı genişletin ve betik oluşturmak istediğiniz veritabanını bulun.
Veritabanına sağ tıklayın, Betik Veritabanı Farklı'nın üzerine gelin, CREATE To üzerine gelin ve ardından Dosya'yı seçin.
Bir dosya adı girin ve Kaydet'i seçin.
Çekirdek veritabanı kapsayıcısı betiklenir. Bu kapsayıcı dosyaları, dosya gruplarını, veritabanını ve özellikleri içerir.
Veritabanına sağ tıklayın, Görevler'in üzerine gelin ve Betik Oluştur'a tıklayın.
Doğru veritabanının seçili olduğundan emin olun ve İleri'yi seçin.
Nesne Türlerini Seç iletişim kutusunda Belirli veritabanı nesnelerini seç'i seçin ve sorunlu sorgunun başvurduğunu tüm veritabanı nesne türlerini seçin.
Örneğin, sorgu yalnızca tablolara başvuruyorsa Tablolar'ı seçin. Sorgu bir görünüme başvuruyorsa Görünümler ve Tablolar'ı seçin. Sorunlu sorgu kullanıcı tanımlı bir işlev kullanıyorsa İşlevler'i seçin.
Sorgu tarafından başvuruda bulunan tüm nesne türlerini seçtiğinizde İleri'yi seçin.
Betik Oluşturma Seçeneklerini Ayarla iletişim kutusunda Gelişmiş düğmesini seçin ve varsayılan değerdeki aşağıdaki ayarları Gelişmiş Betik Seçenekleri sayfasındaki aşağıdaki tabloda listelenen değerle değiştirin.
Betik oluşturma seçeneği Seçecek değer Ansi Doldurma True Hatada Betik Çalıştırmaya Devam Et True Sistem Kısıtlama Adlarını Ekle True Bağımlı Nesneler için Betik Oluşturma True Betik Harmanlaması True Betik Oturum Açma Bilgileri True Betik Nesne Düzeyi İzinleri True Betik İstatistikleri True Betik USE DATABASE True Betik Dizinleri True Betik Tetikleyicileri True
Not
Şema dbo dışındaki oturum açma bilgilerine ait nesneler içermediği sürece Betik Oturum Açma bilgileri ve Betik Nesne Düzeyi İzinleri seçeneklerinin gerekli olmayabileceğini unutmayın.
Gelişmiş Betik Seçenekleri sayfasını kaydetmek ve kapatmak için Tamam'ı seçin.
7. adımda seçtiğiniz her veritabanı nesne türü için bir iletişim kutusu görüntülenir.
Her iletişim kutusunda belirli tabloları, görünümleri, işlevleri veya diğer veritabanı nesnelerini seçin ve ardından İleri'yi seçin.
Dosyaya Betik seçeneğini belirleyin ve ardından 3. adımda girdiğiniz dosya adını belirtin.
Betiği başlatmak için Son'u seçin.
Betik oluşturma tamamlandığında, betik dosyasını Microsoft Desteği Mühendisine gönderin. Microsoft Desteği Mühendisi de aşağıdaki bilgileri isteyebilir:
İşlemci sayısı ve ne kadar fiziksel belleğin mevcut olduğu da dahil olmak üzere donanım yapılandırması.
Sorguyu çalıştırdığınızda etkin olan SET seçenekleri.
Bir SQLDiag raporu veya SQL Profiler izlemesi göndererek bu bilgileri zaten sağlamış olabileceğinizi unutmayın. Bu bilgileri sağlamak için başka bir yöntem de kullanmış olabilirsiniz.
-
Bilgiler nasıl kullanılır?
Aşağıdaki tablolar, sorgu iyileştiricisinin bir sorgu planı seçmek için bu bilgileri nasıl kullandığını açıklamaya yardımcı olur.
Meta veri
|Seçeneği||Açıklama|
|Kısıtlama -ları||Sorgu iyileştiricisi, sorgu ile temel alınan şema arasındaki çelişkileri algılamak için sık sık kısıtlamalar kullanır. Örneğin, sorgu yan tümcesini


|Istatistik||İstatistik bilgileri, dizin ve istatistik anahtarının önde gelen sütununun dağılımını gösteren yoğunluk ve histogram içerir. Koşulun yapısına bağlı olarak, sorgu iyileştiricisi bir koşulun kardinalitesini tahmin etmek için yoğunluğu, histogramı veya ikisini birden kullanabilir. Doğru kardinalite tahminleri için güncel istatistikler gereklidir. Kardinalite tahminleri, bir operatörün maliyetini tahmin etmede giriş olarak kullanılır. Bu nedenle, en iyi sorgu planlarını elde etmek için iyi kardinalite tahminlerine sahip olmanız gerekir.|
|Tablo boyutu (satır ve sayfa sayısı)||Sorgu iyileştiricisi, belirli bir koşulun doğru veya yanlış olma olasılığını hesaplamak için histogramları ve yoğunluğu kullanır. Son kardinalite tahmini, olasılığı alt işlecin döndürdüğü satır sayısıyla çarpılarak hesaplanır. Tablodaki veya dizindeki sayfa sayısı GÇ maliyetini tahmin etmede bir faktördür. Tablo boyutu, taramanın maliyetini hesaplamak için kullanılır ve dizin araması sırasında erişilecek sayfa sayısını tahmin ettiğinizde kullanışlıdır.|
|Veritabanı seçenekleri||Çeşitli veritabanı seçenekleri iyileştirmeyi etkileyebilir.


Ortam
|Seçeneği||Açıklama|
|Oturum KÜMESI seçenekleri||Ayar,


|Donanım kaynakları||Sıralama ve karma işleçlerinin maliyeti, SQL Server için kullanılabilen göreli bellek miktarına bağlıdır. Örneğin, verilerin boyutu önbellekten büyükse, sorgu iyileştirici verilerin her zaman diske biriktirilmesi gerektiğini bilir. Ancak, verilerin boyutu önbellekten çok daha küçükse, işlem büyük olasılıkla bellekte yapılır. SQL Server ayrıca sunucunun birden fazla işlemcisi varsa ve paralellik bir

