Sorgu Ayarlama Yardımcısı'nı kullanarak veritabanlarını yükseltme
Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri Azure SQL Veritabanı Azure Synapse Analytics Analytics Platform Sistemi (PDW)
SQL Server'ın eski bir sürümünden SQL Server 2014 (12.x) veya daha yeni bir sürümüne geçiş yaparken ve veritabanı uyumluluk düzeyini en son kullanılabilir sürüme yükseltirken, bir iş yükü performans gerileme riskiyle karşı karşıya kalabilir. Bu, SQL Server 2014 (12.x) ile daha yeni bir sürüm arasında yükseltme yaparken daha az bir ölçüde de mümkündür.
SQL Server 2014 'den (12.x) başlayarak ve her yeni sürümde tüm sorgu iyileştirici değişiklikleri en son veritabanı uyumluluk düzeyine geçirilir, bu nedenle yürütme planları yükseltme sırasında değil, kullanıcı COMPATIBILITY_LEVEL
veritabanı seçeneğini en son kullanılabilir seçenekle değiştirdiğinde değişir. SQL Server 2014'te (12.x) kullanıma sunulan sorgu iyileştirici değişiklikleri hakkında daha fazla bilgi için bkz. Kardinalite Tahmin Aracı. Uyumluluk düzeyleri ve bunların yükseltmeleri nasıl etkileyebileceği hakkında daha fazla bilgi için bkz. Uyumluluk Düzeyleri ve Veritabanı Altyapısı Yükseltmeleri.
Veritabanı uyumluluk düzeyinin sağladığı bu geçit özelliği, Sorgu Deposu ile birlikte kullanıldığında, yükseltme işleminin aşağıda görülen önerilen iş akışına uygun biçimde yapılması halinde sorgu performansı üzerinde yüksek derecede kontrol sağlar. Uyumluluk düzeyini yükseltmek için önerilen iş akışı hakkında daha fazla bilgi için bkz. Veritabanı Uyumluluk Modunu Değiştirme ve Sorgu Deposukullanma.
Yükseltmeler üzerindeki bu denetim, otomatik ayarlama sunulduğu SQL Server 2017 (14.x) ile daha da geliştirilmiştir ve yukarıdaki önerilen iş akışında son adımın otomatikleştirilmesine olanak tanır.
SQL Server Management Studio v18'den başlayarak, yeni
Önemli
QTA kullanıcı iş yükü oluşturmaz. QTA'yı uygulamalarınız tarafından kullanılmayan bir ortamda çalıştırıyorsanız, hedeflenen SQL Server Veritabanı Altyapısı'nda temsili test iş yükünü başka yollarla yürütmeye devam edebilirsiniz.
Sorgu Ayarlama Yardımcısı iş akışı
QTA'nın başlangıç noktası, SQL Server'ın önceki bir sürümündeki bir veritabanının taşındığını varsayar (CREATE DATABASE ... aracılığıyla... FOR ATTACH veya RESTORE) öğesini SQL Server Veritabanı Altyapısı'nın daha yeni bir sürümüne ekleyin ve yükseltme öncesi veritabanı uyumluluk düzeyi hemen değiştirilmez. QTA aşağıdaki adımlarda yol gösterir:
- Sorgu Deposu'na kullanıcı tarafından ayarlanan iş yükü süresi (gün) için önerilen ayarlara göre yapılandırın. Tipik iş döngünüzle eşleşen iş yükü süresini düşünün.
- Sorgu Deposu'nun iş yükü verilerinin bir temelini (henüz yoksa) toplayabileceği şekilde gerekli iş yükünü başlatma isteği.
- Kullanıcı tarafından seçilen hedef veritabanı uyumluluk düzeyine yükseltin.
- İş yükü verilerinin karşılaştırma ve regresyon algılama amacıyla ikinci kez toplanmasını talep edin.
- Sorgu Deposu Regresyonlu Sorgular görünümünü temel alan tüm regresyonları yineleyerek, uygun iyileştirici model varyasyonlarının olası permütasyonlarıyla ilgili çalışma zamanı istatistikleri toplayarak denemeler yapın ve sonucu ölçün.
- Ölçülen iyileştirmeleri raporlayın ve isteğe bağlı olarak
plan kılavuzları kullanılarak bu değişikliklerin kalıcı hale alınmasına izin verin.
Veritabanı ekleme hakkında daha fazla bilgi için bkz. Veritabanı Ayırma ve Ekleme.
QTA'nın yukarıda görülen Sorgu Deposu kullanarak uyumluluk düzeyini yükseltmek için önerilen iş akışının yalnızca son adımlarını nasıl değiştirdiğini aşağıda görebilirsiniz. QTA, şu anda verimsiz olan yürütme planı ile bilinen son iyi yürütme planı arasında seçim yapma seçeneğine sahip olmak yerine, ayarlanmış yürütme planlarıyla yeni bir geliştirilmiş durum oluşturmak üzere seçilen gerilenen sorgulara özgü ayarlama seçenekleri sunar.
QTA kullanarak önerilen veritabanı yükseltme iş akışını kullanılarak önerilen veritabanı yükseltme iş akışı
QTA Ayarlama iç arama alanı
QTA yalnızca Sorgu Deposu'ndan yürütülebilen SELECT
sorguları hedefler. Derlenen parametre biliniyorsa parametreleştirilmiş sorgular uygundur. Geçici tablolar veya tablo değişkenleri gibi çalışma zamanı yapılarına bağlı sorgular şu anda uygun değildir.
QTA, Kardinalite Tahmin Aracı (CE) sürümlerindeki değişiklikler nedeniyle sorgu regresyonlarının bilinen olası desenlerini hedefler. Örneğin, bir veritabanını SQL Server 2012 (11.x) ve veritabanı uyumluluk düzeyi 110'dan SQL Server 2017'ye (14.x) ve veritabanı uyumluluk düzeyi 140'a yükseltirken, bazı sorgular özellikle SQL Server 2012(11.x) (CE 70) içinde bulunan CE sürümüyle çalışacak şekilde tasarlandıklarından gerileyebilir. Bu, CE 140'tan CE 70'e geri dönmenin tek seçenek olduğu anlamına gelmez. Yalnızca daha yeni sürümdeki belirli bir değişiklik regresyona neden oluyorsa, bu sorgunun daha yeni CE sürümlerine yönelik diğer tüm iyileştirmeleri kullanırken belirli bir sorgu için daha iyi çalışan önceki CE sürümünün yalnızca ilgili bölümünü kullanması için ipucu vermek mümkündür. Ayrıca iş yükünde gerilemeyen diğer sorguların daha yeni CE geliştirmelerinden yararlanmasına da izin verin.
QTA tarafından aranan CE desenleri şunlardır:
-
Bağımsızlık ve Bağıntı: Bağımsızlık varsayımı belirli bir sorgu için daha iyi tahminler sağlıyorsa, sorgu ipucu
USE HINT ('ASSUME_MIN_SELECTIVITY_FOR_FILTER_ESTIMATES')
bağıntıyı hesaba katacak filtrelerinAND
koşullarını tahmin ederken en düşük seçiciliği kullanarak SQL Server'ın yürütme planı oluşturmasına neden olur. Daha fazla bilgi için bkz.USE HINT sorgu ipuçları ve CEsürümleri. -
Basit Kapsama ve Temel Kapsama: Farklı bir birleştirme kapsaması belirli bir sorgu için daha iyi tahminler sağlıyorsa, sorgu ipucu
USE HINT ('ASSUME_JOIN_PREDICATE_DEPENDS_ON_FILTERS')
SQL Server'ın varsayılan Temel Kapsama varsayımı yerine Basit Kapsama varsayımını kullanarak bir yürütme planı oluşturmasına neden olur. Daha fazla bilgi için USE HINT sorgu ipuçlarına ve CE sürümleri . -
Çok deyimli tablo değerli işlev (MSTVF) sabit kardinalite tahmini 100 satır ile 1 satır: 100 satırlık TVF'ler için varsayılan sabit tahmin, 1 satırlık TVF'ler için sabit tahmin kullanmaktan daha verimli bir planla sonuçlanmıyorsa (SQL Server 2008 R2 (10.50.x) ve önceki sürümlerin sorgu iyileştirici CE modeli altında varsayılan değere karşılık gelen), ardından sorgu ipucu
QUERYTRACEON 9488
bir yürütme planı oluşturmak için kullanılır. MSTVF'ler hakkında daha fazla bilgi için bkz. Kullanıcı Tanımlı İşlevler Oluşturma (Veritabanı Altyapısı).
Not
Son çare olarak, dar kapsamlı ipuçları uygun sorgu desenleri için yeterince iyi sonuçlar vermiyorsa, sorgu ipucu USE HINT ('FORCE_LEGACY_CARDINALITY_ESTIMATION')
kullanarak bir yürütme planı oluşturmak için CE 70'in tam kullanımı da dikkate alınır.
Önemli
Herhangi bir ipucu, gelecekteki SQL Server güncelleştirmelerinde ele alınabilecek bazı davranışları zorlar. İpuçlarını yalnızca başka bir seçenek olmadığında uygulamanızı ve her yeni güncellemede ipuçlarıyla işaretlenmiş kodu tekrar gözden geçirmeyi planlamanızı öneririz. Davranışları zorlayarak, iş yükünüzün SQL Server'ın daha yeni sürümlerinde sunulan geliştirmelerden yararlanmasını engelleyebilirsiniz.
Veritabanı yükseltmeleri için Sorgu Ayarlama Yardımcısı'nı başlatma
QTA, oturum durumunu, oturumun ilk kez oluşturulduğu kullanıcı veritabanının msqta
şemasında depolayan oturum tabanlı bir özelliktir. Zaman içinde tek bir veritabanında birden çok ayarlama oturumu oluşturulabilir, ancak herhangi bir veritabanı için yalnızca bir etkin oturum bulunabilir.
Veritabanı yükseltme oturumu oluşturma
SQL Server Management Studio'da Nesne Gezgini'ni açın ve Veritabanı Altyapısı'na bağlanın.
Veritabanı uyumluluk düzeyini yükseltmesi amaçlanan veritabanı için, veritabanı adına sağ tıklayın, Görevler
seçin, veritabanı yükseltme seçin ve Yeni Veritabanı Yükseltme Oturumu seçeneğini belirleyin.QTA Sihirbazı penceresinde, oturumu yapılandırmak için iki adım gerekir:
Kurulum penceresinde Sorgu Deposu'nu, analiz etmek ve ayarlamak için iş yükü verilerinin tam iş döngüsünün eşdeğerini yakalayacak şekilde yapılandırın.
- Beklenen iş yükü süresini gün cinsinden girin (en az 1 gündür). Bu, temelin tamamının toplanmasına kesin olarak izin vermek için önerilen Sorgu Deposu ayarlarını önermek için kullanılır. veritabanı uyumluluk düzeyini değiştirdikten sonra bulunan gerileyen sorguların analiz edilebildiğinden emin olmak için iyi bir temel yakalamak önemlidir.
- QTA iş akışı tamamlandıktan sonra kullanıcı veritabanının olması gereken hedef veritabanı uyumluluk düzeyini ayarlayın. İşlem tamamlandıktan sonra İleriöğesini seçin.
Ayarlar penceresinde, hedeflenen veritabanındaki Sorgu Deposu'nun geçerli durumu ile önerilen ayarlarını gösteren iki sütun bulunur.
- Önerilen ayarlar varsayılan olarak seçilir, ancak Geçerli sütunun üzerindeki radyo düğmesinin seçilmesi geçerli ayarları kabul eder ve ayrıca geçerli Sorgu Deposu yapılandırmasında ince ayarlamaya olanak tanır.
- Önerilen Eski Sorgu Eşiği ayarı, gün cinsinden beklenen iş yükü süresinin iki katıdır. Bunun nedeni Sorgu Deposu'nda temel iş yükü ve veritabanı yükseltme sonrası iş yüküyle ilgili bilgilerin tutulması gerekir. İşlem tamamlandıktan sonra İleriöğesini seçin.
yeni veritabanı yükseltme ayarları penceresi
Yeni veritabanı yükseltme ayarları penceresi Önemli
Önerilen En Büyük Boyut, kısa süreli iş yükü için uygun olabilecek rastgele bir değerdir. Bununla birlikte, çok yoğun iş yükleri için taban çizgisi ve veritabanı sonrası yükseltme iş yükleri hakkında bilgi tutmanın yetersiz olabileceğini,yani birçok farklı plan oluşturulabileceğini unutmayın. Bunun böyle olacağını düşünüyorsanız, uygun olan daha yüksek bir değer girin.
Ayarlama penceresi oturum yapılandırmasını sonlandırıyor ve oturumu açmak ve devam etmek için sonraki adımları yönlendiriyor. İşlem tamamlandıktan sonra Sonöğesini seçin.
Veritabanı yükseltme iş akışını yürütme
Veritabanı uyumluluk düzeyini yükseltmesi amaçlanan veritabanı için, veritabanı adına sağ tıklayın, Görevler
seçin, veritabanı yükseltme seçin ve oturumları izleyin'i seçin.oturum yönetimi sayfasında, kapsamdaki veritabanı için geçerli ve geçmiş oturumlar listelenir. İstediğiniz oturumu seçin ve Ayrıntılarseçin.
Not
Mevcut oturum yoksa Yenile düğmesini seçin.
Liste aşağıdaki bilgileri içerir:
- oturum kimliği
- Oturum Adı: Veritabanı adı, oturum oluşturma tarihi ve saatinden oluşan sistem tarafından oluşturulan ad.
- Durumu: Oturumun durumu (Etkin veya Kapalı).
- Açıklama: Sistem tarafından oluşturulan bu açıklama, kullanıcı tarafından seçilen hedef veritabanı uyumluluk düzeyinden ve iş döngüsü gün sayısından oluşur.
- Başlangıç Saati: Oturumun oluşturulduğu tarih ve saat.
QTA Oturum Yönetimi sayfası
QTA Oturum Yönetimi sayfası Not
Oturumu Sil seçili oturum için depolanan tüm verileri siler. Ancak, kapalı oturumu silmek daha önce dağıtılan plan kılavuzlarını silmez. Plan kılavuzlarını dağıtmış bir oturumu silerseniz, geri almak için QTA'yı kullanamazsınız. Bunun yerine, sys.plan_guides sistem tablosunu kullanarak plan kılavuzlarını arayın ve sp_control_plan_guidekullanarak el ile silin.
Yeni oturumun giriş noktası Veri Toplama adımıdır.
Not
Oturumlar düğmesi oturum yönetimi sayfasına döner ve etkin oturumu as-isbırakır.
Bu adımda üç alt adım vardır:
Temel Veri Toplama kullanıcıdan temsili iş yükü döngüsünü çalıştırmasını isteyin; böylece Sorgu Deposu bir temel toplayabilir. İş yükü tamamlandıktan sonra, İş yüküyle bitti ifadesini kontrol edin ve İleriseçin.
Dikkat
İş yükü çalışırken QTA penceresi kapatılabilir. Daha sonra etkin durumda kalan oturuma geri dönmek, kaldığı adımdan devam eder.
Veritabanını Yükselt, veritabanı uyumluluk düzeyini istenen hedefe yükseltmek için izin ister. Sonraki alt adıma geçmek için evet
seçin. Aşağıdaki sayfa, veritabanı uyumluluk düzeyinin başarıyla yükseltildiğini onaylar.
Gözlemlenen Veri Toplama kullanıcıdan temsili iş yükü döngüsünü yeniden çalıştırmasını isteyebilir, böylece Sorgu Deposu iyileştirme fırsatlarını aramak için kullanılacak karşılaştırmalı bir temel toplayabilir. İş yükü yürütülürken, Yenile düğmesini kullanarak gerileyen sorguların listesini (varsa) güncelleştirmeye devam edin. Görüntülenen sorgu sayısını sınırlamak için Sorgular'ı değeri gösterecek şekilde değiştirin. Listenin sırası, Ölçüm (Süre veya CpuTime) ve Toplama (Ortalama varsayılandır) tarafından etkilenir. Ayrıca,gösterilecek
sorgu sayısını seçin. İş yükü tamamlandıktan sonra, İş yüküyle bitti tamamlandı'yı denetleyin ve İleri seçin. Liste aşağıdaki bilgileri içerir:
- Sorgu Kimliği
- Sorgu Metni: ... düğmesi seçilerek genişletilebilen Transact-SQL deyimi.
- çalıştırır: İş yükü koleksiyonunun tamamı için bu sorgunun yürütme sayısını görüntüler.
- Temel Ölçüm: Veritabanı uyumluluk yükseltmesi öncesinde temel veri toplaması için ms cinsinden seçilen ölçüm (Süre veya CpuTime).
- Gözlemlenen Ölçüm: Veritabanı uyumluluk yükseltmesi ardından veri toplama için ms cinsinden seçilen ölçüm (Süre veya CpuTime).
- % Değişiklik: Veritabanı uyumluluk yükseltme durumunun önceki ve sonraki hali arasında seçilen ölçüm için yüzde değişikliği. Negatif bir sayı, sorgu için ölçülen regresyon miktarını temsil eder.
- Ayarlanabilir: Sorgu deneme için uygunsa Doğru, değilse Yanlış.
Çözümlemeyi Görüntüle, deneme ve iyileştirme fırsatlarını bulmak için hangi sorguların seçildiğine olanak tanır. değeri göstermek için
Sorgular, deneme için uygun sorguların kapsamı haline gelir. İstenen sorgular denetlendikten sonra denemeyi başlatmak için Sonraki'yi seçin. Not
Ayarlanabilir değeri Yanlış olan sorgular deney için seçilemez.
Önemli
Bir istem, QTA deneme aşamasına geçtikten sonra Çözümlemeyi Görüntüle sayfasına geri dönmenin mümkün olmadığını önerir.
Deneme aşamasına geçmeden önce tüm uygun sorguları seçmezseniz, daha sonra yeni bir oturum oluşturmanız ve iş akışını yinelemeniz gerekir. Bunun için veritabanı uyumluluk düzeyinin önceki değere sıfırlanması gerekir.Bulguları Görüntüle, önerilen iyileştirmeyi plan kılavuzu olarak dağıtmak için hangi sorguların seçildiğine izin verir.
Liste aşağıdaki bilgileri içerir:
- Sorgu Kimliği
- Sorgu Metni: ... düğmesi seçilerek genişletilebilen Transact-SQL deyimi.
- Durum: Sorgunun geçerli deneme durumunu görüntüler.
- Temel Ölçüm: Adım 2 Alt Adım 3'de yürütülen sorgu için ms'de veritabanı uyumluluk yükseltmesi sonrasında gerileyen sorguyu temsil eden seçilen ölçüm (Duration veya CpuTime).
- Gözlemlenen Ölçüm: Önerilen iyileştirmenin yeterince iyi olması için deneysel incelemeden sonra sorgu için ms cinsinden seçilen ölçüm (Duration veya CpuTime).
- % Değişiklik: Önerilen iyileştirmeyle sorgu için ölçülen iyileştirme miktarını temsil eden, deney öncesi ve sonrası durumu arasındaki seçili metrikteki yüzde değişikliği.
- Sorgu Seçeneği: Sorgu yürütme ölçümünü geliştiren önerilen ipucunun bağlantısı.
- Dağıtılabilir: Önerilen sorgu iyileştirmesi, bir plan kılavuzu olarak dağıtılabilirse, True aksi takdirde False.
Doğrulama, bu oturum için daha önce seçilen sorguların dağıtım durumunu gösterir. Bu sayfadaki liste, Dağıtılabilir sütununu Geri Alabilirolarak değiştirerek önceki sayfadan farklıdır. Bu sütun, dağıtılmış sorgu iyileştirmesinin geri alınabilirliği ve plan kılavuzunun kaldırılabilmesine bağlı olarak True veya False olabilir.
Daha sonraki bir tarihte önerilen iyileştirmeyi geri almanız gerekiyorsa ilgili sorguyu seçin ve Geri Almaöğesini seçin. Bu sorgu planı kılavuzu kaldırılır ve geri alınan sorguyu kaldırmak için liste güncelleştirilir. Aşağıdaki resimde 8 sorgusunun kaldırıldığına dikkat edin.
Not
Kapalı oturumun silinmesi daha önce dağıtılan plan kılavuzlarını silmez. Plan kılavuzlarını dağıtmış bir oturumu silerseniz, geri alma işlemi için QTA kullanamazsınız. Bunun yerine, sys.plan_guides sistem tablosunu kullanarak plan kılavuzlarını arayın ve sp_control_plan_guidekullanarak el ile silin.
İzinler
db_owner rolünün üyeliğini gerektirir.
Ayrıca bkz.
- Uyumluluk Düzeyleri ve Veritabanı Altyapısı Yükseltmeleri
- Performans İzleme ve Ayarlama Araçları
- Sorgu Deposu Kullanarak İzleme Performansını
- Veritabanı Uyumluluk Modunu Değiştirme ve Sorgu Deposu Kullanma
- İzleme bayrakları
- USE HINT sorgu ipuçları
- Kardinalite Tahmin Aracı
- Otomatik ayarlama
- SQL Server Sorgu Ayarlama Yardımcısı kullanma