MSSQL Server’da SHOWPLAN_ALL ve STATISTICS PROFILE ile Execution Planları Tablo Formatında Görme

SQL Server’da bir sorgunun nasıl çalıştırıldığını anlamanın en iyi yolu Execution Plan (Sorgu Planı) analizidir. Genellikle SQL Server Management Studio (SSMS) üzerinden grafiksel olarak incelediğimiz bu planları, bazen bir tablo verisiymiş gibi satır satır görmek isteyebiliriz. Özellikle karmaşık sorgularda işlem maliyetlerini (cost) ve operatör detaylarını hızlıca karşılaştırmak için bu yöntem oldukça etkilidir.

Execution Planları tablo formatında görüntülemek için iki temel komut kullanılır: SHOWPLAN_ALL ve STATISTICS PROFILE.

Estimated execution plan yapılarında kullanılır.

set showplan_all on

Bu komut, sorguyu gerçekte çalıştırmadan SQL Server’ın o sorgu için oluşturduğu Estimated (Tahmini) planı tablo şeklinde döner. Sorgu çıktısını değil, sadece planın detaylarını gösterir.

  • Kullanım Amacı: Sorguyu çalıştırmanın riskli veya uzun süreceği durumlarda, SQL Server’ın izleyeceği yolu önceden görmek.
SET SHOWPLAN_ALL ON;
GO

-- Analiz etmek istediğiniz sorgu
SELECT *
FROM [AdventureWorks2014].[Person].[Address];
GO
SET SHOWPLAN_ALL OFF;
GO

Actuel execution plan yapılarında kullanılır.

set statistics profile on

Bu komut, sorguyu gerçekten çalıştırır ve sorgu sonucunun hemen altında Actual (Gerçekleşen) plan verilerini tablo olarak sunar.

  • Kullanım Amacı: Tahmin edilen değerler ile gerçekte oluşan değerleri (satır sayısı, okuma sayısı vb.) karşılaştırmak.
SET STATISTICS PROFILE ON;
GO

-- Sorgu çalıştırılır ve planı tablo olarak dökülür
SELECT *
FROM [AdventureWorks2014].[Person].[Address];
GO

SET STATISTICS PROFILE OFF;
GO

Gerçek bir sorgu üzerinde yaptığımızda bizlere execution planları detaylı bir şekilde vermektedir.

use GOCNET
go
set showplan_all on
go
declare @PBTSTRH datetime, @PBSLTRH datetime
SELECT    T.SIRNMR, T.TLPTRHZMN, T.YTKKLN, T.KLNADI,   T.MENUKOD  AS SRGACK, 1 AS SAYI, 
..........................devam ediyor.

Yukarıdaki kod çıktısının ekran resimleri:

Bu komutları çalıştırdığınızda karşınıza çıkan tabloda şu kritik sütunlar yer alır:

  • StmtText: Çalıştırılan SQL ifadesi veya planın o adımındaki işlem (Index Scan, Clustered Index Seek vb.).
  • TotalSubtreeCost: O adımın ve altındaki tüm işlemlerin toplam maliyeti.
  • EstimateRows: SQL Server’ın o adımda dönmesini beklediği satır sayısı.
  • Rows: (Sadece Statistics Profile’da) Gerçekte dönen satır sayısı.
  • NodeId: Plan ağacındaki düğüm numarası.

Başka makalede görüşmek dileğiyle..

“Onlar inanmışlar, kalpleri Allah’ı anmakla huzura kavuşmuştur. Dikkat edin, kalpler ancak Allah’ı anmakla huzura kavuşur. “ Ra’d Suresi; 28. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir