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
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Bu makalede, yerel olarak derlenmiş saklı yordamların ve diğer yerel olarak derlenmiş T-SQL modüllerinin performansını nasıl izleyebildiğiniz açıklanır.
Genişletilmiş Olayları Kullanma
Sorgunun yürütülmesini izlemek için sp_statement_completed genişletilmiş olayını kullanın. Belirli bir yerel derlenmiş saklı yordam için isteğe bağlı olarak object_id filtresi uygulayarak bu olayla bir genişletilmiş olay oturumu oluşturun. Genişletilmiş olay, her sorgu yürütüldükten sonra oluşturulur. Genişletilmiş olay tarafından bildirilen CPU süresi ve süresi, sorgunun ne kadar CPU kullandığını ve yürütme süresini gösterir. Yerel olarak derlenmiş ve çok fazla CPU süresi kullanan bir saklı yordamda performans sorunları olabilir.
line_number, genişletilmiş olaydaki object_id ile birlikte sorguyu araştırmak için kullanılabilir. Yordam tanımına erişmek için aşağıdaki sorgu kullanılabilir. Satır numarası, tanımın içindeki sorguyu tanımlamak için kullanılabilir:
SELECT [definition]
FROM sys.sql_modules
WHERE object_id=object_id;
Veri Yönetimi Görünümlerini ve Sorgu Deposunu Kullanma
SQL Server ve Azure SQL Veritabanı, hem yordam düzeyinde hem de sorgu düzeyinde yerel olarak derlenmiş saklı yordamlar için yürütme istatistikleri toplamayı destekler. Yürütme istatistiklerinin toplanması, performans etkisi nedeniyle varsayılan olarak etkin değildir.
Yürütme istatistikleri, sys.dm_exec_procedure_stats ve sys.dm_exec_query_statssistem görünümlerine ve Sorgu Deposuyansıtılır.
Procedure-Level Yürütme İstatistikleri
SQL Server: Yerel olarak derlenmiş saklı yordamlarda, yordam düzeyinde istatistik toplamayı etkinleştirmek veya devre dışı bırakmak için sys.sp_xtp_control_proc_exec_stats (Transact-SQL)kullanın. Aşağıdaki deyim, geçerli örnekteki tüm yerel olarak derlenmiş T-SQL modülleri için yordam düzeyinde yürütme istatistiklerinin toplanmasını sağlar:
EXEC sys.sp_xtp_control_proc_exec_stats 1
Azure SQL Veritabanı ve sql server : XTP_PROCEDURE_EXECUTION_STATISTICSveritabanı kapsamlı yapılandırma seçeneğini kullanarak yordam düzeyinde yerel olarak derlenmiş saklı yordamlarda istatistik toplamayı etkinleştirin veya devre dışı bırakın. Aşağıdaki deyim, geçerli veritabanındaki tüm yerel olarak derlenmiş T-SQL modülleri için yordam düzeyinde yürütme istatistiklerinin toplanmasını sağlar:
ALTER DATABASE SCOPED CONFIGURATION SET XTP_PROCEDURE_EXECUTION_STATISTICS = ON;
Query-Level Yürütme İstatistikleri
SQL Server : Sorgu düzeyinde olarak yerel olarak derlenmiş saklı yordamların istatistik toplamalarını etkinleştir veya devre dışı bırakmak için sys.sp_xtp_control_query_exec_stats (Transact-SQL)kullanın. Aşağıdaki deyim, geçerli örnekteki tüm yerel olarak derlenmiş T-SQL modülleri için sorgu düzeyi yürütme istatistiklerinin toplanmasını sağlar:
EXEC sys.sp_xtp_control_query_exec_stats 1
Azure SQL Veritabanı ve sql server : XTP_QUERY_EXECUTION_STATISTICSveritabanı kapsamlı yapılandırma seçeneğini kullanarak deyim düzeyinde yerel olarak derlenmiş saklı yordamlarda istatistik toplamayı etkinleştirin veya devre dışı bırakın. Aşağıdaki deyim, geçerli veritabanındaki tüm yerel olarak derlenmiş T-SQL modülleri için sorgu düzeyi yürütme istatistiklerinin toplanmasını sağlar:
ALTER DATABASE SCOPED CONFIGURATION SET XTP_QUERY_EXECUTION_STATISTICS = ON;
Örnek Sorgular
İstatistikleri topladıktan sonra, yerel olarak derlenmiş saklı yordamlar için yürütme istatistikleri sys.dm_exec_procedure_stats (Transact-SQL)olan bir yordam için ve sys.dm_exec_query_stats (Transact-SQL)olan sorgular için sorgulanabilir.
Aşağıdaki sorgu, istatistik koleksiyonundan sonra geçerli veritabanında yerel olarak derlenmiş saklı yordamlar için yordam adlarını ve yürütme istatistiklerini döndürür:
SELECT object_id, object_name(object_id) AS 'object name',
cached_time, last_execution_time, execution_count,
total_worker_time, last_worker_time,
min_worker_time, max_worker_time,
total_elapsed_time, last_elapsed_time,
min_elapsed_time, max_elapsed_time
FROM sys.dm_exec_procedure_stats
WHERE database_id = DB_ID()
AND object_id IN (SELECT object_id FROM sys.sql_modules WHERE uses_native_compilation = 1)
ORDER BY total_worker_time desc;
Aşağıdaki sorgu, istatistiklerin toplandığı geçerli veritabanındaki yerel olarak derlenmiş saklı yordamlardaki tüm sorgular için sorgu metnini ve yürütme istatistiklerini azalan düzende toplam çalışan zamanına göre sıralanmış olarak döndürür:
SELECT st.objectid,
OBJECT_NAME(st.objectid) AS 'object name',
SUBSTRING(
st.text,
(qs.statement_start_offset/2) + 1,
((qs.statement_end_offset-qs.statement_start_offset)/2) + 1
) AS 'query text',
qs.creation_time, qs.last_execution_time, qs.execution_count,
qs.total_worker_time, qs.last_worker_time, qs.min_worker_time,
qs.max_worker_time, qs.total_elapsed_time, qs.last_elapsed_time,
qs.min_elapsed_time, qs.max_elapsed_time
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(sql_handle) st
WHERE database_id = DB_ID()
AND object_id IN (SELECT object_id FROM sys.sql_modules WHERE uses_native_compilation = 1)
ORDER BY total_worker_time desc;
Sorgu Yürütme Planları
Yerel olarak derlenmiş saklı yordamlar, SHOWPLAN_XML'i (tahmini yürütme planı) destekler. Tahmini yürütme planı, hatalı plan sorunlarını bulmak için sorgu planını incelemek için kullanılabilir. Hatalı planların yaygın nedenleri şunlardır:
Prosedür oluşturulmadan önce istatistikler güncellenmedi.
Eksik dizinler
Showplan XML, aşağıdaki Transact-SQL yürütülerek elde edilir:
SET SHOWPLAN_XML ON
GO
EXEC my_proc
GO
SET SHOWPLAN_XML OFF
GO
Alternatif olarak, SQL Server Management Studio'da yordam adını seçin ve Tahmini Yürütme Planını Görüntüleöğesine tıklayın.
Yerel olarak derlenmiş saklı yordamlar için tahmini yürütme planı, yordamdaki sorgular için sorgu işleçlerini ve ifadelerini gösterir. SQL Server 2014 (12.x), yerel olarak derlenmiş saklı yordamlar için tüm SHOWPLAN_XML özniteliklerini desteklemez. Örneğin, sorgu iyileştirici maliyetiyle ilgili öznitelikler, yordama ait SHOWPLAN_XML’in bir parçası değildir.