Alıştırma - Performansı izleme ve sorunlarını giderme
Bu alıştırmada, tanıdık ve yeni araçları ve özellikleri kullanarak Azure SQL ile ilgili bir performans sorununu izlemeyi ve gidermeyi öğreneceksiniz.
Kurulum: Azure SQL Veritabanı dağıtmak için betikleri kullanma
Sağdaki Azure Cloud Shell terminal oturumu, tarayıcı kullanarak Azure ile etkileşim kurmanızı sağlar. Bu alıştırmada, veritabanıyla AdventureWorks
Azure SQL Veritabanı örneği olan ortamınızı oluşturmak için bir betik çalıştıracaksınız. (Daha küçük, daha basit örnek AdventureWorksLT
veritabanı kullanılır, ancak karışıklığı önlemek için bu AdventureWorks
veritabanını çağıracağız.) Betikte, cihazınızın veritabanına bağlanmasını sağlamak için bir parola ve yerel IP adresiniz istenir.
Bu betiğin tamamlanması 3-5 dakika sürer. Parolanızı, benzersiz kimliğinizi ve bölgenizi not aldığınızdan emin olun. Bunlar tekrar gösterilmeyecektir.
Başlangıç olarak yerel IP adresinizi alın. Hiçbir VPN hizmetine bağlı olmadığınızdan ve cihazınızda yerel bir PowerShell terminali açtığınızdan emin olun. Aşağıdaki komutu çalıştırın ve sonuçta elde edilen IP adresini not edin:
(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content
Sağdaki Azure Cloud Shell'de aşağıdaki kodu girin ve istendiğinde karmaşık bir parola ve önceki adımda aldığınız yerel genel IP adresinizi girin. Betiğin son satırını çalıştırmak için Enter tuşuna basın.
$adminSqlLogin = "cloudadmin" $password = Read-Host "Your username is 'cloudadmin'. Please enter a password for your Azure SQL Database server that meets the password requirements" # Prompt for local ip address $ipAddress = Read-Host "Disconnect your VPN, open PowerShell on your machine and run '(Invoke-WebRequest -Uri "https://ipinfo.io/ip").Content'. Please enter the value (include periods) next to 'Address':" # Get resource group and location and random string $resourceGroup = Get-AzResourceGroup | Where ResourceGroupName -like "<rgn>Sandbox resource group name</rgn>" $resourceGroupName = "<rgn>Sandbox resource group name</rgn>" $uniqueID = Get-Random -Minimum 100000 -Maximum 1000000 $storageAccountName = "mslearnsa"+$uniqueID $location = $resourceGroup.Location $serverName = "aw-server$($uniqueID)"
Azure Cloud Shell'de aşağıdaki betiği çalıştırın. Çıkışı kaydedin; modül boyunca bu bilgilere ihtiyacınız olacaktır. Kodu yapıştırdıktan sonra Enter tuşuna basın; böylece son kod satırı ihtiyacınız olan çıkışı yazdırır.
Write-Host "Please note your unique ID for future exercises in this module:" Write-Host $uniqueID Write-Host "Your resource group name is:" Write-Host $resourceGroupName Write-Host "Your resources were deployed in the following region:" Write-Host $location Write-Host "Your server name is:" Write-Host $serverName
Bahşiş
Çıkışı kaydedin ve parolanızı, benzersiz kimliğinizi ve sunucunuzu not edin. Modül boyunca bu öğelere ihtiyacınız olacak.
Aşağıdaki betiği çalıştırarak
AdventureWorks
örneğiyle bir Azure SQL Veritabanı ve mantıksal sunucu örneğini dağıtın. Bu betik IP adresinizi güvenlik duvarı kuralı olarak ekler, Gelişmiş Veri Güvenliği'ni etkinleştirir ve bu modüldeki kalan alıştırmalarda kullanmak üzere bir depolama hesabı oluşturur. Betiğin tamamlanması birkaç dakika sürebilir ve birkaç kez duraklatılır. Komut istemini bekleyin.# The logical server name has to be unique in the system $serverName = "aw-server$($uniqueID)" # The sample database name $databaseName = "AdventureWorks" # The storage account name has to be unique in the system $storageAccountName = $("sql$($uniqueID)") # Create a new server with a system wide unique server name $server = New-AzSqlServer -ResourceGroupName $resourceGroupName ` -ServerName $serverName ` -Location $location ` -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force)) # Create a server firewall rule that allows access from the specified IP range and all Azure services $serverFirewallRule = New-AzSqlServerFirewallRule ` -ResourceGroupName $resourceGroupName ` -ServerName $serverName ` -FirewallRuleName "AllowedIPs" ` -StartIpAddress $ipAddress -EndIpAddress $ipAddress $allowAzureIpsRule = New-AzSqlServerFirewallRule ` -ResourceGroupName $resourceGroupName ` -ServerName $serverName ` -AllowAllAzureIPs # Create a database $database = New-AzSqlDatabase -ResourceGroupName $resourceGroupName ` -ServerName $serverName ` -DatabaseName $databaseName ` -SampleName "AdventureWorksLT" ` -Edition "GeneralPurpose" -Vcore 2 -ComputeGeneration "Gen5" # Enable Advanced Data Security $advancedDataSecurity = Enable-AzSqlServerAdvancedDataSecurity ` -ResourceGroupName $resourceGroupName ` -ServerName $serverName # Create a Storage Account $storageAccount = New-AzStorageAccount -ResourceGroupName $resourceGroupName ` -AccountName $storageAccountName ` -Location $location ` -Type "Standard_LRS"
Mantıksal sunucunuza yeni bir bağlantı oluşturmak için yerel cihazınızda SQL Server Management Studio'yu (SSMS) açın.
Sunucuya Bağlan oturum açma iletişim kutusunda aşağıdaki bilgileri sağlayın:
Alan Değer Sunucu türü Veritabanı Altyapısı (varsayılan). Sunucu adı Cloud Shell'de döndürülen $serverName ve URI'nin geri kalanı. Örneğin: aw-server <unique ID>
.database.windows.net.Kimlik Doğrulaması SQL Server Kimlik Doğrulaması (varsayılan). Oturum aç cloudadmin Bu alıştırmanın 1. adımında atanan adminSqlLogin. Password Bu alıştırmanın 1. adımında sağladığınız parola. Parolayı unutmayın checked Bağlan'ı seçin.
Dekont
Yerel yapılandırmanıza (örneğin VPN) bağlı olarak istemci IP adresiniz dağıtım sırasında Azure portalın kullandığı IP adresinden farklı olabilir. Varsa şu iletiyi alırsınız: "İstemci IP adresinizin sunucuya erişimi yok. Bir Azure hesabında oturum açın ve erişimi etkinleştirmek için yeni bir güvenlik duvarı kuralı oluşturun." Bu iletiyi alırsanız, korumalı alan için kullandığınız hesabı kullanarak oturum açın ve istemci IP adresiniz için bir güvenlik duvarı kuralı ekleyin. Bu adımların tümünü, SQL Server Management Studio’daki sihirbazı kullanarak tamamlayabilirsiniz.
Betikleri yükleyip düzenleyerek alıştırmaya hazırlanma
Bu alıştırmanın tüm betiklerini kopyaladığınız GitHub deposundaki 04-Performance\monitor_and_scale klasöründe veya indirdiğiniz zip dosyasında bulabilirsiniz. Şimdi betikleri yükleyip düzenleyerek alıştırmaya hazırlanın.
SSMS'de, Nesne Gezgini Veritabanları klasörünü genişletin ve AdventureWorks veritabanını seçin.
Dosya>Dosya Aç'ı> seçin ve dmexecrequests.sql betiğini açın. Sorgu düzenleyicisi pencereniz aşağıdaki metin gibi görünmelidir:
SELECT er.session_id, er.status, er.command, er.wait_type, er.last_wait_type, er.wait_resource, er.wait_time FROM sys.dm_exec_requests er INNER JOIN sys.dm_exec_sessions es ON er.session_id = es.session_id AND es.is_user_process = 1;
SSMS'de aynı yöntemi kullanarak dmdbresourcestats.sql betiğini yükleyin. Yeni bir sorgu düzenleyicisi penceresi aşağıdaki metin gibi görünmelidir:
SELECT * FROM sys.dm_db_resource_stats;
Bu dinamik yönetim görünümü (DMV), Azure SQL Veritabanı’nda iş yükünüzün genel kaynak kullanımını izler. Örneğin, CPU, G/Ç ve belleği izler.
sqlworkload.cmd betiğini açın ve düzenleyin (ostress.exe programını kullanır).
unique_id
Dağıtım betiğinden kaydettiğinizi sunucu adına yazın.- için Azure SQL Veritabanı sunucusu için oturum açma için kullandığınız parolayı değiştirin
-P parameter
. - Değişiklikleri betikte kaydedin.
İş yükünü çalıştırma
Bu görevde T-SQL sorgusunda bir iş yükü çalıştırarak eşzamanlı kullanıcıların performansının benzetimini yapacaksınız.
Sorguyu gözlemlemek için topcustomersales.sql betik dosyasını açmak için SSMS'yi kullanın. Sorguyu SQL Server Management Studio’dan çalıştırmayacaksınız. Sorgu düzenleyicisi pencereniz aşağıdaki metin gibi görünmelidir:
DECLARE @x int DECLARE @y float SET @x = 0; WHILE (@x < 10000) BEGIN SELECT @y = sum(cast((soh.SubTotal*soh.TaxAmt*soh.TotalDue) as float)) FROM SalesLT.Customer c INNER JOIN SalesLT.SalesOrderHeader soh ON c.CustomerID = soh.CustomerID INNER JOIN SalesLT.SalesOrderDetail sod ON soh.SalesOrderID = sod.SalesOrderID INNER JOIN SalesLT.Product p ON p.ProductID = sod.ProductID GROUP BY c.CompanyName ORDER BY c.CompanyName; SET @x = @x + 1; END GO
Bu veritabanı küçük. En çok satışa sahip müşteriler tarafından sipariş edilen müşterilerin listesini ve ilişkili satış bilgilerini alma sorgusu büyük bir sonuç kümesi oluşturmamalıdır. Sonuç kümesindeki sütun sayısını azaltarak bu sorguyu ayarlayabilirsiniz, ancak bunlar bu alıştırmanın tanıtım amacıyla gereklidir.
PowerShell komut isteminden aşağıdaki komutu girerek bu alıştırma için doğru dizine gidin. değerini bu modül için kullanıcı kimliğiniz ve yolunuzla değiştirin
<base directory>
:cd <base directory>\04-Performance\monitor_and_scale
Aşağıdaki komutla iş yükünü çalıştırın:
.\sqlworkload.cmd
Bu betik, iş yükü sorgusunu iki kez çalıştıran 10 eşzamanlı kullanıcı kullanır. Betiğin tek bir toplu iş çalıştırdığına ama 10.000 kez döngü yaptığına dikkat edin. Ayrıca sonucu bir değişkene atadığından istemciye yönelik neredeyse tüm sonuç kümesi trafiğini ortadan kaldırır. Bu gerekli değildir, ancak tamamen sunucuda "saf" bir CPU iş yükü çalıştırmasının gösterilmesine yardımcı olur.
Bahşiş
Ortamınız için bu iş yüküyle CPU kullanım davranışını görmüyorsanız, kullanıcı sayısı için
-n parameter
parametresini ve yinelemeler için de-r parameter
parametresini ayarlayabilirsiniz.Komut istemindeki çıkış aşağıdaki çıkışa benzer olmalıdır:
[datetime] [ostress PID] Max threads setting: 10000 [datetime] [ostress PID] Arguments: [datetime] [ostress PID] -S[server].database.windows.net [datetime] [ostress PID] -isqlquery.sql [datetime] [ostress PID] -U[user] [datetime] [ostress PID] -dAdventureWorks [datetime] [ostress PID] -P******** [datetime] [ostress PID] -n10 [datetime] [ostress PID] -r2 [datetime] [ostress PID] -q [datetime] [ostress PID] Using language id (LCID): 1024 [English_United States.1252] for character formatting with NLS: 0x0006020F and Defined: 0x0006020F [datetime] [ostress PID] Default driver: SQL Server Native Client 11.0 [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery.out] [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery_1.out] [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery_2.out] [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery_3.out] [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery_4.out] [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery_5.out] [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery_6.out] [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery_7.out] [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery_8.out] [datetime] [ostress PID] Attempting DOD5015 removal of [directory]\sqlquery_9.out] [datetime] [ostress PID] Starting query execution... [datetime] [ostress PID] BETA: Custom CLR Expression support enabled. [datetime] [ostress PID] Creating 10 thread(s) to process queries [datetime] [ostress PID] Worker threads created, beginning execution...
İş yükünün performansını gözlemleme
Şimdi performansı gözlemlemek için daha önce yüklediğiniz DMV sorgularını kullanalım.
Daha önce
dm_exec_requests
izlemesi için yüklediğiniz sorguyu (dmexecrequests.sql) SQL Server Management Studio’da çalıştırarak etkin istekleri gözlemleyin. Bu sorguyu beş veya altı kez çalıştırıp sonuçlardan bazılarını gözlemleyin:SELECT er.session_id, er.status, er.command, er.wait_type, er.last_wait_type, er.wait_resource, er.wait_time FROM sys.dm_exec_requests er INNER JOIN sys.dm_exec_sessions es ON er.session_id = es.session_id AND es.is_user_process = 1;
İsteklerin çoğunun durumunun
RUNNABLE
olduğunu velast_wait_type
olduğunuSOS_SCHEDULER_YIELD
görmeniz gerekir. BirçokRUNNABLE
isteğin ve birçokSOS_SCHEDULER_YIELD
beklemenin bir göstergesi, etkin sorgular için cpu kaynaklarının eksik olmasıdır.Dekont
ve komutuyla
SELECT
wait_type
XE_LIVE_TARGET_TVF
bir veya daha fazla etkin istek görebilirsiniz. Bunlar, Microsoft tarafından yönetilen hizmetler tarafından çalıştırılan sorgulardır. Genişletilmiş olayları kullanarak performans içgörüleri gibi olanaklara yardımcı olur. Microsoft bu oturumların ayrıntılarını yayımlamaz.Bu sorgu düzenleyici penceresini açık bırakın. Sonraki alıştırmada bunu tekrar çalıştıracaksınız.
SSMS'de daha önce sys.dm_db_resource_stats izlemesi için çalıştırdığınız sorguyu (dmdbresourcestats.sql) çalıştırın. Bu DMV'nin sonuçlarını görmek için sorguyu üç veya dört kez çalıştırın.
SELECT * FROM sys.dm_db_resource_stats;
Bu DMV, 15 saniyede bir veritabanı için kaynak kullanımının anlık görüntüsünü kaydeder (1 saat süreyle saklanır). Birkaç anlık görüntüde avg_cpu_percent sütununun %100’e yakın olduğunu göreceksiniz. Bu, veritabanının CPU kaynağı sınırlarını zorlayan bir iş yükünün belirtisidir.
Bir SQL Server şirket içi ortamı için genellikle cpu gibi genel kaynak kullanımını izlemek için işletim sistemine özgü bir araç kullanırsınız. Örneğin, bu amaçla Windows Performans İzleyicisi’ni kullanabilirsiniz. Bu örneği iki CPU'su olan bir sanal makinede şirket içi SQL Server veya SQL Server üzerinde çalıştırdıysanız, sunucuda yüzde 100'e yakın CPU kullanımı görürsünüz.
Dekont
Sunucuyla ilişkili tüm Azure SQL Veritabanı veritabanlarının kaynak kullanımını görmek için Azure SQL Veritabanı sunucusunun
master
veritabanı bağlamında başka bir DMVsys.resource_stats
çalıştırabilirsiniz. Bu görünüm daha az ayrıntılıdır ve kaynak kullanımını beş dakikada bir gösterir (14 gün boyunca saklanır).Bu sorgu düzenleyici penceresini açık bırakın. Sonraki alıştırmada bunu tekrar çalıştıracaksınız.
İş yükünün tamamlanmasını bekleyin ve toplam süresini not alın. İş yükü tamamlandığında aşağıdaki çıkışa benzer sonuçlar görmeli ve komut istemine dönmelisiniz:
[datetime] [ostress PID] Total IO waits: 0, Total IO wait time: 0 (ms) [datetime] [ostress PID] OSTRESS exiting normally, elapsed time: 00:01:22.637
Süreniz değişebilir, ancak bu genellikle en az 1-3 dakika kadar sürer. Bunu tamamlanana kadar çalıştırmaya dikkat edin. İş yükü tamamlandığında komut istemine geri dönersiniz.
Daha fazla analiz için Sorgu Deposu'nu kullanma
Sorgu Deposu SQL Server'ın sorguların performansını izlemeye yönelik özelliğidir. Performans verileri kullanıcı veritabanında depolanır. Sorgu Deposu, SQL Server’da oluşturulan veritabanları için varsayılan olarak etkinleştirilmez, ancak Azure SQL Veritabanı’nda (ve Azure SQL Yönetilen Örneği’nde) varsayılan olarak açıktır.
Sorgu Deposu performans verilerini görüntülemek için bir dizi sistem katalog görünümüyle gelir. SQL Server Management Studio, bu görünümleri kullanarak raporlar sağlar.
SQL Server Management Studio’da Nesne Gezgini’ni kullanarak Sorgu Deposu klasörünü açıp En Çok Kaynak Tüketen Sorgular raporunu bulun.
Ortalama olarak en fazla kaynak tüketen sorguları ve bu sorguların yürütme ayrıntılarını bulmak için raporu açın. Bu noktaya gelirken çalıştırılan iş yüküne bağlı olarak raporunuz aşağıdaki resme benzer görünmelidir:
Gösterilen sorgu müşteri satışları için iş yükünden gelen SQL sorgusudur. Bu rapor üç bileşen içerir: toplam süresi uzun olan sorgular (ölçümü değiştirebilirsiniz), ilişkili sorgu planı ve çalışma zamanı istatistikleri ve görsel haritada gösterilen ilişkili sorgu planı.
Sorgu için çubuk grafiğini seçin (
query_id
, sisteminiz için farklı olabilir). Sonuçlarınız aşağıdaki resme benzer olmalıdır:Sorgunun toplam süresini ve sorgu metnini görebilirsiniz.
Çubuk grafiğin sağ tarafında sorguyla ilişkilendirilmiş sorgu planının istatistiklerini gösteren bir grafik yer alır. Planla ilişkilendirilmiş olan noktanın üzerine gelin. Sonuçlarınız aşağıdaki resme benzer olmalıdır:
Sorgunun ortalama süresini not alın. Zamanlar değişiklik gösterebilir, ancak bu ortalama süreyi, bu sorgunun ortalama bekleme süresiyle karşılaştırın. Daha sonra bir performans geliştirmesi sunacağız ve farklı görmek için tekrar bu karşılaştırmayı yapacaksınız.
Son bileşen görsel sorgu planıdır. Bu sorgunun sorgu planı aşağıdaki resme benzer görünmelidir:
Bu veritabanı tablosunda o kadar az satır var ki plana ihtiyacı yok; verimsiz olabilir. Sorgunun ayarlanması performansı ölçülebilir bir miktar artırmaz. Planda kümelenmiş dizin aramasının sütunlarından biri için istatistik eksikliğiyle ilgili bir uyarı görebilirsiniz. Bu, genel performansa katılmaz.
SSMS'de En Çok Kaynak Tüketen Sorgular raporunun ardından Sorgu Bekleme İstatistikleri adlı bir rapor bulunur. Önceki tanılama işlemlerinden, neredeyse yüzde 100 CPU düzeyiyle sürekli RUNNABLE durumda kalan çok fazla sorgu olduğunu biliyorsunuz. Sorgu Deposu, kaynaklardaki beklemelerden kaynaklanan olası performans sorunlarına bakmanızı sağlayan raporlarla gelir. Bu raporu seçin ve imleci çubuk grafiğin üzerine getirin. Sonuçlarınız aşağıdaki resme benzer olmalıdır:
En uzun bekleme kategorisinin CPU olduğunu (bu,
sys.dm_os_wait_stats
içinde görülebilenwait_type
SOS_SCHEDULER_YIELD ile eşdeğerdir) ve ortalama bekleme süresini görebilirsiniz.Rapordaki CPU çubuk grafiğini seçin. CPU'yu bekleyen en üstteki sorgu, kullandığınız iş yükünden gelen sorgudur.
Bu sorgudaki CPU için ortalama bekleme süresinin, sorgu için genel ortalama sürenin yüksek bir yüzdesi olduğuna dikkat edin.
Kanıt göz önünde bulundurularak, sorgu ayarlaması yapılmadan iş yükümüz, Azure SQL Veritabanı örneğimiz için dağıtılandan daha fazla CPU kapasitesi gerektirir.
Her iki Sorgu Deposu raporunu da kapatın. Sonraki alıştırmada aynı raporları kullanacaksınız.
Azure İzleyici ile performansı gözlemleme
İş yükümüzün kaynak kullanımını görüntülemek için başka bir yöntem kullanalım. Azure İzleyici, Azure portalı aracılığıyla da dahil olmak üzere çeşitli yollarla görüntüleyebileceğiniz performans ölçümleri sağlar.
Azure portalını açın ve AdventureWorks SQL veritabanı örneğinizi bulun. Veritabanının Genel Bakış bölmesinde İzleme sekmesini seçin. İzleme bölmesindeki varsayılan görünüm İşlem Kullanımı'dır:
Bu örnekte, son zaman aralığı için CPU yüzdesi yüzde 100'e yakındır. Bu grafik, son bir saat içindeki kaynak kullanımını gösterir (CPU ve G/Ç varsayılandır) ve sürekli yenilenir. Grafiği seçerek diğer kaynak kullanımına bakacak şekilde özelleştirebilirsiniz.
SQL veritabanı menüsünde Ölçüm ekle'yi seçin. Azure SQL Veritabanı için Azure İzleyici tarafından otomatik olarak toplanan İşlem Kullanımı ölçümlerini ve diğer ölçümleri görüntülemenin bir diğer yolu da Ölçüm Gezgini'ni kullanmaktır.
Dekont
İşlem Kullanımı, Ölçüm Gezgini'nin önceden tanımlanmış bir görünümüdür. Ölçüm ekle penceresinde Ölçüm açılan listesini seçerseniz aşağıdaki sonuçları görürsünüz:
Ekran görüntüsünde gösterildiği gibi, Ölçüm Gezgini ile görüntülemek için kullanabileceğiniz çeşitli ölçümler vardır. Ölçüm Gezgini varsayılan görünümü, beş dakikalık ayrıntı düzeyine sahip 24 saatlik bir süre içindir. İşlem Kullanımı görünümü, bir dakikalık ayrıntı düzeyine sahip son saattir (bunu değiştirebilirsiniz). Aynı görünümü görmek için CPU yüzdesi'ni seçin ve yakalamayı bir saat boyunca değiştirin. Ayrıntı düzeyi bir dakika olarak değiştirilir ve aşağıdaki resme benzer olmalıdır:
Varsayılan grafik türü çizgi grafiğidir ama Gezgin görünümünde grafik türünü değiştirmenize izin verilir. Ölçüm Gezgini'nde, aynı grafikte birden çok ölçümü gösterme özelliği de dahil olmak üzere birçok seçenek vardır.
Azure İzleyici günlükleri
Bu alıştırmada bir Azure İzleyici günlüğü ayarlamadınız, ancak bir CPU kaynak kullanımı senaryosu için bir günlüğün nasıl görünebileceğine göz atmak faydalı olacaktır. Azure İzleyici günlükleri, Azure Ölçümleri’nden çok daha uzun bir geçmiş kaydı sağlayabilir.
Azure İzleyici günlüklerini Log Analytics çalışma alanıyla yapılandırdıysanız, veritabanı için aynı CPU kullanım sonuçlarını görüntülemek için aşağıdaki Kusto sorgusunu kullanabilirsiniz:
AzureMetrics
| where MetricName == 'cpu_percent'
| where Resource == "ADVENTUREWORKS"
| project TimeGenerated, Average
| render columnchart
Sonuçlarınız aşağıdaki resme benzer olur:
Veritabanı için günlük tanılaması ilk kez yapılandırıldığında Azure İzleyici günlüklerinde bir gecikme olur, dolayısıyla bu sonuçların görüntülenmesi biraz zaman alabilir.
Bu alıştırmada yaygın bir SQL Server performansı senaryosunu gözlemlemeyi ve performansı geliştirmeye yönelik olası bir çözüme karar verme sürecinin ayrıntılarına gitmeyi öğrendiniz. Sonraki ünitede performansı hızlandırma ve ayarlama yöntemlerini öğreneceksiniz.