Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2017 (14.x) ve sonraki sürümleri
Azure SQL Veritabanı,
Azure SQL Yönetilen Örneği,
ve Microsoft Fabric'teki SQL veritabanı
Otomatik ayarlama, olası sorgu performansı sorunları hakkında içgörü sağlayan, çözümleri öneren ve tanımlanan sorunları otomatik olarak düzelten bir veritabanı özelliğidir.
SQL Server 2017'de (14.x) kullanıma sunulan otomatik ayarlama, olası bir performans sorunu algılandığında sizi bilgilendirir ve düzeltici eylemler uygulamanızı sağlar veya Veritabanı Altyapısı'nın performans sorunlarını otomatik olarak düzeltmesine olanak tanır. SQL Server'da otomatik ayarlama, sorgu yürütme planı seçimi regresyonlarının neden olduğu performans sorunlarını tanımlar ve düzeltir. Microsoft Fabric'te Azure SQL Veritabanı'nda otomatik ayarlama, gerekli dizinleri oluşturur ve kullanılmayan dizinleri düşürür. Sorgu yürütme planları hakkında daha fazla bilgi için bkz. Yürütme Planları.
SQL Server Veritabanı Altyapısı, veritabanında yürütülen sorguları izler ve iş yükünün performansını otomatik olarak artırır. Veritabanı Altyapısı, veritabanını iş yükünüz için dinamik olarak uyarlayarak sorgularınızın performansını otomatik olarak ayarlayıp geliştirebilen yerleşik bir zeka mekanizmasına sahiptir. Kullanılabilir iki otomatik ayarlama özelliği vardır:
Otomatik plan düzeltmesi parametre duyarlılığı veya parametre algılama sorunları gibi sorunlu sorgu yürütme planlarını tanımlar ve gerileme gerçekleşmeden önce bilinen son iyi planı zorlayarak sorgu yürütme planıyla ilgili performans sorunlarını giderir. Şunlar için geçerlidir: SQL Server (SQL Server 2017 (14.x) ile başlayarak), Azure SQL Veritabanı, Microsoft Fabric'teki SQL Veritabanı ve Azure SQL Yönetilen Örneği
Otomatik dizin yönetimi , veritabanınıza eklenmesi gereken dizinleri ve kaldırılması gereken dizinleri tanımlar. Şunlar için geçerlidir: Microsoft Fabric'te Azure SQL Veritabanı ve SQL veritabanı
Note
Bu makalede, Azure SQL Veritabanı'nın özellikleri ve davranışları Microsoft Fabric'teki SQL veritabanı için de geçerlidir.
Neden otomatik ayarlama?
Klasik veritabanı yönetimindeki ana görevlerden üçü iş yükünü izlemek, kritik Transact-SQL sorgularını belirlemek ve performansı geliştirmek için eklenmesi gereken dizinleri veya nadiren kullanılan ve performansı geliştirmek için kaldırılabilir dizinleri belirlemektir. SQL Server Veritabanı Altyapısı, izlemeniz gereken sorgular ve dizinler hakkında ayrıntılı içgörüler sağlar. Ancak, özellikle birçok veritabanıyla ilgilenirken veritabanını sürekli izlemek zor ve yorucu bir görevdir. Çok sayıda veritabanını verimli bir şekilde yönetmek mümkün olmayabilir. Veritabanınızı el ile izlemek ve ayarlamak yerine, otomatik ayarlama özelliğini kullanarak bazı izleme ve ayarlama eylemlerini Veritabanı Altyapısı'na devredebilirsiniz.
Otomatik ayarlama nasıl çalışır?
Otomatik ayarlama, iş yükünüzün özellikleri hakkında sürekli bilgi edinen ve olası sorunları ve iyileştirmeleri tanımlayan sürekli bir izleme ve analiz işlemidir.
Bu işlem, hangi dizinlerin ve planların iş yüklerinizin performansını artırabileceğini ve hangi dizinlerin iş yüklerinizi etkileyeceğini bularak veritabanının iş yükünüzle dinamik olarak uyum sağlamasına olanak tanır. Bu bulgulara bağlı olarak otomatik ayarlama, iş yükünüzün performansını geliştiren ayarlama eylemlerini uygular. Buna ek olarak, otomatik ayarlama, iş yükünüzün performansını iyileştirmesini sağlamak için tüm değişiklikleri uyguladıktan sonra veritabanının performansını sürekli izler. Performansı geliştirmeyen tüm eylemler otomatik olarak geri döndürülür. Bu doğrulama işlemi, otomatik ayarlamayla yapılan değişikliklerin iş yükünüzün genel performansını düşürmemesini sağlayan önemli bir özelliktir.
Otomatik plan düzeltmesi
Otomatik plan düzeltmesi, yürütme planı seçimi regresyonunu tanımlayan ve bilinen son iyi planı zorlayarak sorunu otomatik olarak düzelten bir otomatik ayarlama özelliğidir. Sorgu yürütme planları ve Sorgu İyileştiricisi hakkında daha fazla bilgi için bkz. Sorgu İşleme Mimarisi Kılavuzu.
Important
Otomatik plan düzeltmesi, sorgu deposunun iş yükü izleme için veritabanında etkinleştirilmesine bağlıdır.
Yürütme planı seçimi regresyonu nedir?
SQL Server Veritabanı Altyapısı, Transact-SQL sorgularını yürütmek için farklı yürütme planları kullanabilir. Sorgu planları istatistiklere, dizinlere ve diğer faktörlere bağlıdır. Transact-SQL sorguyu yürütmek için kullanılması gereken en uygun plan, bu faktörlerdeki değişikliklere bağlı olarak zaman içinde değişebilir. Bazı durumlarda, yeni plan öncekinden daha iyi olmayabilir ve yeni plan parametre duyarlılığı veya parametre algılama ile ilgili sorun gibi bir performans regresyonuna neden olabilir.
Bir plan seçimi regresyonu oluştuğunun farkına vardığınızda, önceki iyi bir planı bulmanız ve geçerli plan yerine kullanılmasını zorlamanız gerekir. Bu, sp_query_store_force_plan prosedürü kullanılarak yapılabilir. SQL Server 2017'deki (14.x) Veritabanı Altyapısı, gerileyen planlar ve önerilen düzeltici eylemler hakkında bilgi sağlar. Ayrıca, Veritabanı Altyapısı bu işlemi tam olarak otomatikleştirmenize ve Veritabanı Altyapısı'nın plan değişikliğiyle ilgili bulunan sorunları düzeltmesine olanak tanır.
Important
Otomatik plan düzeltmesi, iş yükü yükseltme risklerini otomatik olarak azaltmak için bir temel yakalandıktan sonra veritabanı uyumluluk düzeyi yükseltmesi kapsamında kullanılmalıdır. Bu kullanım örneği hakkında daha fazla bilgi için bkz. Daha yeni SQL Server'a yükseltme sırasında performans kararlılığını koruma.
Otomatik plan seçimi düzeltmesi
Bir plan seçimi regresyonu algılandığında Veritabanı Altyapısı otomatik olarak bilinen son iyi plana geçebilir.
Veritabanı Altyapısı, yanlış plan yerine kullanılması gereken plan da dahil olmak üzere olası plan seçimi regresyonunu otomatik olarak algılar. Otomatik plan düzeltmesi tarafından zorlanan elde edilen yürütme planı, bilinen son iyi plana aynı veya benzer olacaktır. Sonuçta elde edilen plan son iyi planla aynı olmadığından, zorunlu planın performansı farklılık gösterebilir. Nadir durumlarda performans farkı önemli ve negatif olabilir; bu durumda, otomatik plan düzeltmesi değiştirme planını zorlamayı otomatik olarak durdurur.
Veritabanı Altyapısı regresyon gerçekleşmeden önce bilinen son iyi planı uyguladığında, zorlamalı planın performansını otomatik olarak izler. Zorlamalı plan gerileyen plandan daha iyi değilse, yeni plan zorlamasız olacak ve Veritabanı Motoru yeni bir plan derleyecek. Veritabanı Altyapısı zorlamalı planın gerilenen plandan daha iyi olduğunu doğrularsa, zorlamalı plan korunur. Yeniden derleme gerçekleşene kadar korunur (örneğin, sonraki istatistik güncelleştirmesinde veya şema değişikliğinde). Plan zorlama ve zorlanabilecek plan türleri hakkında daha fazla bilgi için bkz Plan zorlama sınırlamaları.
Note
SQL Server örneği, bir plan zorlama eyleminin doğrulanmasından önce yeniden başlatılırsa, bu plan otomatik olarak zorlanmamış olur. Aksi takdirde, plan zorlama, SQL Server yeniden başlatıldığında kalıcı hale gelir.
Otomatik plan seçimi düzeltmesini etkinleştirme
Veritabanı başına otomatik ayarlamayı etkinleştirebilir ve bir plan değişikliği regresyonu algılandığında son iyi planın zorlanması gerektiğini belirtebilirsiniz. Otomatik ayarlama aşağıdaki komut kullanılarak etkinleştirilir:
ALTER DATABASE <yourDatabase>
SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );
Bu seçeneği etkinleştirdikten sonra Veritabanı Altyapısı, tahmini CPU kazancının 10 saniyeden yüksek olduğu veya yeni plandaki hata sayısının önerilen plandaki hata sayısından yüksek olduğu tüm önerileri otomatik olarak zorlar ve zorunlu planın geçerli plandan daha iyi olduğunu doğrular.
Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde otomatik ayarlamayı etkinleştirmek için bkz. Azure portalını kullanarak Azure SQL Veritabanı'nda otomatik ayarlamayı etkinleştirme.
Alternatif - el ile plan seçimi düzeltmesi
Otomatik ayarlama olmadan, kullanıcıların sistemi düzenli aralıklarla izlemesi ve gerileyen sorguları araması gerekir. Herhangi bir plan gerilediyse, kullanıcı önceki iyi bir planı bulmalı ve sp_query_store_force_plan yordamını kullanarak bu planı mevcut planın yerine zorlamalıdır. daha eski planlar istatistik veya dizin değişiklikleri nedeniyle geçersiz olabileceğinden, en iyi yöntem bilinen son iyi planı zorlamaktır. Bilinen son iyi planı zorlayan kullanıcı, zorlamalı plan kullanılarak yürütülen sorgunun performansını izlemeli ve zorlamalı planın beklendiği gibi çalıştığını doğrulamalıdır. İzleme ve analiz sonuçlarına bağlı olarak, plan zorlanmalıdır veya kullanıcı sorguyu yeniden yazma gibi iyileştirmenin başka bir yolunu bulmalıdır. Veritabanı Altyapısı en uygun planları uygulayabildiğinden el ile zorlanan planlar sonsuza kadar zorlanmamalıdır. Kullanıcının veya DBA'nın sp_query_store_unforce_plan yordamını kullanarak plan zorlamasını sonlandırması ve ardından Veritabanı Altyapısı'nın en uygun planı bulmasına izin vermesi gerekir.
Tip
Alternatif olarak, planları bulmak ve uygulamak için Zorlamalı Planlarla Sorgular Sorgu Deposu görünümünü kullanın.
SQL Server, Sorgu Deposu'ndaki performansı izlemek ve sorunları gidermek için gereken tüm görünümleri ve yordamları sağlar.
SQL Server 2016'da (13.x), Sorgu Deposu sistem görünümlerini kullanarak plan seçimi regresyonlarını bulabilirsiniz. SQL Server 2017 (14.x) ile başlayarak Veritabanı Altyapısı olası plan seçimi regresyonlarını ve sys.dm_db_tuning_recommendations (Transact-SQL) DMV'de uygulanması gereken önerilen eylemleri algılar ve gösterir. DMV, sorun hakkındaki bilgileri, sorunun önemini ve tanımlanan sorgu, gerilenen planın kimliği, karşılaştırma için temel olarak kullanılan planın kimliği ve sorunu düzeltmek için yürütülebilecek Transact-SQL deyimi gibi ayrıntıları gösterir.
| type | description | datetime | score | details | ... |
|---|---|---|---|---|---|
FORCE_LAST_GOOD_PLAN |
CPU süresi 4 ms'den 14 ms'ye değiştirildi | 3/17/2017 | 83 |
queryId
recommendedPlanId
regressedPlanId
T-SQL
|
|
FORCE_LAST_GOOD_PLAN |
CPU süresi 37 ms'den 84 ms'ye değiştirildi | 3/16/2017 | 26 |
queryId
recommendedPlanId
regressedPlanId
T-SQL
|
Bu görünümdeki bazı sütunlar aşağıdaki listede açıklanmıştır:
- Önerilen eylemin
FORCE_LAST_GOOD_PLANtürü. - Veritabanı Altyapısı'nın bu plan değişikliğinin olası bir performans regresyonu olduğunu düşünmesinin nedenini içeren açıklama.
- Olası regresyonun algılandığı tarih ve saat.
- Bu önerinin puanı.
- Algılanan planın kimliği, gerileyen planın kimliği, sorunu düzeltmeye zorlanması gereken planın kimliği, sorunu düzeltmek için uygulanabilecek Transact-SQL betiği gibi sorunlara dair ayrıntılar, vb. Ayrıntılar JSON formatında saklanır.
Sorunu gideren bir komut dosyası ve kazanç tahmini hakkında ek bilgiler elde etmek için aşağıdaki sorgunun çıktısını kullanın:
SELECT reason, score,
script = JSON_VALUE(details, '$.implementationDetails.script'),
planForceDetails.*,
estimated_gain = (regressedPlanExecutionCount + recommendedPlanExecutionCount)
* (regressedPlanCpuTimeAverage - recommendedPlanCpuTimeAverage)/1000000,
error_prone = IIF(regressedPlanErrorCount > recommendedPlanErrorCount, 'YES','NO')
FROM sys.dm_db_tuning_recommendations
CROSS APPLY OPENJSON (Details, '$.planForceDetails')
WITH ( [query_id] int '$.queryId',
regressedPlanId int '$.regressedPlanId',
recommendedPlanId int '$.recommendedPlanId',
regressedPlanErrorCount int,
recommendedPlanErrorCount int,
regressedPlanExecutionCount int,
regressedPlanCpuTimeAverage float,
recommendedPlanExecutionCount int,
recommendedPlanCpuTimeAverage float
) AS planForceDetails;
Sonuç kümesi aşağıdadır.
| reason | score | script | query_id | geçerli plan kimliği | önerilen plan_id | tahmini_kazanç | hata eğilimli |
|---|---|---|---|---|---|---|---|
| CPU süresi 3 ms'den 46 ms'ye değiştirildi | 36 | EXEC sp_query_store_force_plan 12, 17; | 12 | 28 | 17 | 11.59 | 0 |
Sütun estimated_gain , önerilen plan geçerli plan yerine sorgu yürütme için kullanılacaksa kaydedilecek tahmini saniye sayısını temsil eder. Kazanç süresi 10 saniyeden daha büyükse geçerli plan yerine önerilen plan uygulanmalıdır. Geçerli planda önerilen plana göre daha fazla hata (örneğin, zaman aşımları veya durdurulan yürütmeler) varsa, sütun error_prone değerine YESayarlanır. Hataya açık plan, önerilen planın geçerli plan yerine zorlanması gereken bir diğer nedendir.
Veritabanı Altyapısı plan seçimi regresyonlarını tanımlamak için gereken tüm bilgileri sağlasa da, sürekli izleme ve performans sorunlarını düzeltme zahmetli bir süreç haline gelebilir. Otomatik ayarlama, bu işlemi çok daha kolay hale getirir.
Note
Veritabanı altyapısı yeniden başlatıldıktan sonra DMV'deki sys.dm_db_tuning_recommendations veriler kalıcı olmaz.
sqlserver_start_time Son veritabanı altyapısı başlangıç zamanını bulmak için sys.dm_os_sys_info sütununu kullanın.
Otomatik dizin yönetimi
Azure SQL Veritabanı iş yükünüz hakkında bilgi edindiğinden ve verilerinizin her zaman en uygun dizine sahip olmasını sağladığından, Azure SQL Veritabanı'nda dizin yönetimi kolaydır. uygun dizin tasarımı, iş yükünüzün en iyi performansı için çok önemlidir ve otomatik dizin yönetimi dizinlerinizi iyileştirmenize yardımcı olabilir. Otomatik dizin yönetimi yanlış dizinlenmiş veritabanlarındaki performans sorunlarını çözebilir veya mevcut veritabanı şemasında dizinleri koruyabilir ve geliştirebilir. Azure SQL Veritabanı'nda otomatik ayarlama aşağıdaki eylemleri gerçekleştirir:
- Tablolardan veri okuyan Transact-SQL sorgularınızın performansını geliştirebilecek dizinleri tanımlar.
- Daha uzun süre kullanılmayan veya kaldırılabilecek gereksiz dizinleri tanımlar. Gereksiz dizinlerin kaldırılması, tablolardaki verileri güncelleştiren sorguların performansını artırır.
Dizin yönetimine neden ihtiyacınız var?
Dizinler tablolardan veri okuyan bazı sorgularınızı hızlandırır ancak verileri güncelleştiren sorguları yavaşlatabilir. Dizin oluşturma zamanlarını ve dizine eklemeniz gereken sütunları dikkatle analiz etmeniz gerekir. Bazı dizinler bir süre sonra gerekli olmayabilir. Bu nedenle, herhangi bir avantaj getirmeyen bu dizinleri düzenli aralıklarla tanımlamanız ve bırakmanız gerekir. Kullanılmayan dizinleri yoksayarsanız verileri güncelleştiren sorguların performansı, verileri okuyan sorgular için herhangi bir avantaj sağlanmadan azaltılır. Kullanılmayan dizinler, ek güncellemelerin gereksiz günlüğe kaydedilmeye yol açması nedeniyle sistemin genel performansını da etkiler.
Tablolarınızdaki verileri okuyan ve güncelleştirmeleri en az etkileyen sorguların performansını geliştiren en uygun dizin kümesini bulmak için sürekli ve karmaşık analiz gerekebilir.
Azure SQL Veritabanı, sorgularınızı analiz eden, geçerli iş yükleriniz için en uygun dizinleri tanımlayan ve kaldırılması gerekebilecek dizinleri tanımlayan yerleşik zeka ve gelişmiş kuralları kullanır. Azure SQL Veritabanı, verileri okuyan sorguları en iyi duruma getiren ve diğer sorguları en aza indiren gerekli dizin kümenize sahip olduğunuzdan emin olur.
Otomatik dizin yönetimi
Azure SQL Veritabanı algılamaya ek olarak, tanımlanan önerileri otomatik olarak uygulayabilir. Yerleşik kuralların veritabanınızın performansını artırdığını fark ederseniz, Azure SQL Veritabanı'nın dizinlerinizi otomatik olarak yönetmesine izin verebilirsiniz.
Azure SQL Veritabanı CREATE INDEX veya DROP INDEX önerisi uyguladığında, dizinden etkilenen sorguların performansını otomatik olarak izler. Yeni dizin yalnızca etkilenen sorguların performansları iyileştirilirse korunur. Dizinin olmaması nedeniyle daha yavaş çalışan bazı sorgular varsa, bırakılan dizin otomatik olarak yeniden oluşturulur.
Otomatik dizin yönetimiyle ilgili dikkat edilmesi gerekenler
Azure SQL Veritabanı'nda gerekli dizinleri oluşturmak için gereken eylemler kaynakları tüketebilir ve iş yükü performansını zamansal olarak etkileyebilir. Azure SQL Veritabanı, dizin oluşturma işleminin iş yükü performansı üzerindeki etkisini en aza indirmek için tüm dizin yönetimi işlemleri için uygun bir zaman penceresi bulur. Veritabanının iş yükünüzü yürütmek için kaynaklara ihtiyacı varsa ayarlama eylemi ertelenir ve veritabanında bakım görevi için kullanılabilecek yeterli sayıda kullanılmayan kaynak olduğunda yeniden başlatılır. Otomatik dizin yönetiminin önemli özelliklerinden biri eylemlerin doğrulanmasıdır. Azure SQL Veritabanı bir dizin oluşturduğunda veya bırakıldığında, izleme işlemi iş yükünüzün performansını analiz ederek eylemin genel performansı artırdığını doğrular. Önemli bir gelişme getirmediyse, eylem hemen geri döndürülür. Bu şekilde, Azure SQL Veritabanı otomatik ayarlama eylemlerinin iş yükünüzün performansını olumsuz etkilememesini sağlar. Otomatik ayarlama tarafından oluşturulan dizinler, temel şemadaki bakım işlemi için saydamdır. Sütunları bırakma veya yeniden adlandırma gibi şema değişiklikleri, otomatik olarak oluşturulan dizinlerin varlığı tarafından engellenmez. Azure SQL Veritabanı tarafından otomatik olarak oluşturulan dizinler, ilgili tablo veya sütunlar kaldırıldığında derhal silinir.
Alternatif - el ile dizin yönetimi
Otomatik dizin yönetimi olmadan, kullanıcının veya DBA'nın performansı geliştirebilecek dizinleri bulmak, bu görünümde sağlanan ayrıntıları kullanarak dizinler oluşturmak ve sorgunun performansını el ile izlemek için Management Studio'da sys.dm_db_missing_index_details (Transact-SQL) görünümünü el ile sorgulaması veya kullanması gerekir. Bırakılması gereken dizinleri bulmak için kullanıcıların nadiren kullanılan dizinleri bulmak için dizinlerin işlemsel kullanım istatistiklerini izlemesi gerekir.
Azure SQL Veritabanı bu işlemi basitleştirir. Azure SQL Veritabanı iş yükünüzü analiz eder, yeni bir dizinle daha hızlı yürütülebilecek sorguları tanımlar ve kullanılmayan veya çoğaltılmış dizinleri tanımlar. Değiştirilmesi gereken dizinleri belirleme hakkında daha fazla bilgi için Bkz. Azure portalında dizin önerilerini bulma.
Sonraki Adımlar
- Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nde otomatik ayarlama
- VERİTABANI DEĞİŞTİR OTOMATİK AYARLAMA (Transact-SQL)
- sys.database_automatic_tuning_options (Transact-SQL) - veritabanı otomatik ayarlama seçenekleri
- sys.dm_db_tuning_recommendations (Transact-SQL)
- sys.dm_db_missing_index_details (Transact-SQL)
- sp_query_store_force_plan (Transact-SQL)
- sys.query_store_plan_forcing_locations (Transact-SQL)
- sp_query_store_unforce_plan (Transact-SQL)
- sys.database_query_store_options (Transact-SQL)
- sys.dm_os_sys_info (Transact-SQL)
- JSON işlevleri
- Yürütme Planları
- Performans İzleme ve Ayarlama
- Performans İzleme ve Ayarlama Araçları
- Sorgu Deposu'nu Kullanarak Performansı İzleme
- Sorgu Ayarlama Yardımcısı