Azure SQL Veritabanı Için DTU Sorununu Giderme

Azure SQL veritabanı kullandığınızda / kullanmaya başladığınızda DTU ( Database Transaction Unit ) isimli bir kavram ile karşılaşırsınız. DTU ise, harmanlanmış bir CPU, Data,IO, Log Writes ve memory ölçüsü olmasıdır. Veritabanı için yüksek DTU tüketildiğine dair bir uyarı aldıysanız nedenini araştırmak için ilk adım, DTU’nun hangi değerin gerçekten yükseldiğini ( CPU, Data,IO vs ) bulmak olacaktır.

Aşağıdaki query kullanarak son 14 günün DTU değerlerinin ortalamasını görebilirsiniz.

Çıktıdaki başlangıç ve bitiş zamanı UTC olarak gelmektedir. Buna Dikkat etmeniz gerekmektedir.

SELECT
[start_time]
,[end_time]
,[database_name]
,[avg_cpu_percent]
,[avg_data_io_percent]
,[avg_log_write_percent]
,(
SELECT Max(v)
FROM (
VALUES ([avg_cpu_percent])
,([avg_data_io_percent])
,([avg_log_write_percent])
) AS value(v)
) AS [avg_DTU_percent]
FROM sys.resource_stats
–WHERE [database_name] = ‘DB Name Here’
ORDER BY start_time desc

Resim-2

Eğer ki DTU alarmını şimdi gerçekleştiyse, etkilenen veritabanı için aşağıdaki sorguyu çalıştırabilirsiniz. ( Her 15 saniyede bir toplanan verileri vermektedir.)

SELECT
end_time
,[avg_cpu_percent]
,[avg_data_io_percent]
,[avg_log_write_percent]
,(
SELECT Max(v)
FROM (
VALUES ([avg_cpu_percent])
,([avg_data_io_percent])
,([avg_log_write_percent])
) AS value(v)
) AS [avg_DTU_percent]
FROM sys.dm_db_resource_stats

Resim-2

Azure Portal’daki DTU grafiği, yukarıdaki iki komut dosyasında DMV’ler tarafından sorgulanan verilerle aynı veriler kullanılarak çizilir.

Yukarıdaki sorguları kullanarak DTU alarmının hangi metrikten kaynaklandığını öğrenmiş olduk. Simdi sırada suçlu sorguları gözden geçirme zamanı. Bu işlemi de Query Store verilerini sorgulayarak gerçekleştirebiliriz. Query store ile ilgili içeriği ise yakın zamanda mshowto’da bulabilirsiniz.

Leave a Reply

Your email address will not be published. Required fields are marked *