Aracılığıyla paylaş


MySQL için Azure Veritabanı'nda yavaş sorgu günlükleri

ŞUNLAR IÇIN GEÇERLIDIR: MySQL için Azure Veritabanı - Tek Sunucu

Önemli

MySQL için Azure Veritabanı tek sunucu kullanımdan kaldırma yolundadır. Esnek MySQL için Azure Veritabanı sunucuya yükseltmenizi kesinlikle öneririz. MySQL için Azure Veritabanı esnek sunucuya geçiş hakkında daha fazla bilgi için bkz. MySQL için Azure Veritabanı Tek Sunucu'ya neler oluyor?

MySQL için Azure Veritabanı yavaş sorgu günlüğü kullanıcılar tarafından kullanılabilir. İşlem günlüğüne erişim desteklenmez. Yavaş sorgu günlüğü, sorun gidermeye yönelik performans sorunlarını belirlemek için kullanılabilir.

MySQL yavaş sorgu günlüğü hakkında daha fazla bilgi için MySQL başvuru kılavuzunun yavaş sorgu günlüğü bölümüne bakın.

Sunucunuzda Sorgu Deposu etkinleştirildiğinde yavaş sorgu günlüklerinizde "CALL mysql.az_procedure_collect_wait_stats (900, 30);" gibi sorguların günlüğe kaydedildiğini görebilirsiniz. Sorgu Deposu özelliği sorgularınızla ilgili istatistikleri topladığı için bu davranış beklenir.

Yavaş sorgu günlüğünü yapılandırma

Varsayılan olarak yavaş sorgu günlüğü devre dışıdır. Etkinleştirmek için ON olarak ayarlayın slow_query_log . Bu, Azure portalı veya Azure CLI kullanılarak etkinleştirilebilir.

Ayarlayabileceğiniz diğer parametreler şunlardır:

  • long_query_time: Bir sorgu long_query_time (saniye) içinde daha uzun sürüyorsa bu sorgu günlüğe kaydedilir. Varsayılan değer 10 saniyedir.
  • log_slow_admin_statements: ON, slow_query_log yazılan deyimlerde ALTER_TABLE ve ANALYZE_TABLE gibi yönetim deyimleri içeriyorsa.
  • log_queries_not_using_indexes: Dizin kullanmayan sorguların slow_query_log günlüğe kaydedilip kaydedilmediğini belirler
  • log_throttle_queries_not_using_indexes: Bu parametre, yavaş sorgu günlüğüne yazılabilir dizin dışı sorgu sayısını sınırlar. log_queries_not_using_indexes AÇıK olarak ayarlandığında bu parametre geçerlilik kazanır.
  • log_output: "Dosya" ise, yavaş sorgu günlüğünün hem yerel sunucu depolama alanına hem de Azure İzleyici Tanılama Günlüklerine yazılmasına izin verir. "None" seçilirse, yavaş sorgu günlüğü yalnızca Azure İzleyici Tanılama Günlüklerine yazılır.

Önemli

Tablolarınızın dizini oluşturulmadıysa log_queries_not_using_indexes ve log_throttle_queries_not_using_indexes parametrelerinin ON olarak ayarlanması MySQL performansını etkileyebilir çünkü bu dizini oluşturulmamış tablolarda çalıştırılan tüm sorgular yavaş sorgu günlüğüne yazılır.

Yavaş sorguları uzun süre günlüğe kaydetmeyi planlıyorsanız , "Hiçbiri" olarak ayarlanması log_output önerilir. "Dosya" olarak ayarlanırsa, bu günlükler yerel sunucu depolama alanına yazılır ve MySQL performansını etkileyebilir.

Yavaş sorgu günlüğü parametrelerinin tam açıklamaları için MySQL yavaş sorgu günlüğü belgelerine bakın.

Yavaş sorgu günlüklerine erişme

MySQL için Azure Veritabanı yavaş sorgu günlüklerine erişmek için iki seçenek vardır: yerel sunucu depolama veya Azure İzleyici Tanılama Günlükleri. Bu, parametresi kullanılarak log_output ayarlanır.

Yerel sunucu depolaması için Azure portalını veya Azure CLI'yı kullanarak yavaş sorgu günlüklerini listeleyebilir ve indirebilirsiniz. Azure portalda sunucunuza gidin. İzleme başlığı altında Sunucu Günlükleri sayfasını seçin. Azure CLI hakkında daha fazla bilgi için bkz. Azure CLI kullanarak yavaş sorgu günlüklerini yapılandırma ve bunlara erişme.

Azure İzleyici Tanılama Günlükleri yavaş sorgu günlüklerini Azure İzleyici Günlüklerine (Log Analytics), Azure Depolama'ya veya Event Hubs'a aktarmanıza olanak tanır. Daha fazla bilgi için aşağıya bakın.

Yerel sunucu depolama günlüğü saklama

Sunucunun yerel depolama alanına oturum açarken günlükler oluşturuldukları günden itibaren yedi güne kadar kullanılabilir. Kullanılabilir günlüklerin toplam boyutu 7 GB'ı aşarsa, kullanılabilir alan sağlanana kadar en eski dosyalar silinir. Sunucu günlükleri için 7 GB depolama sınırı ücretsizdir ve uzatılamaz.

Günlükler her 24 saatte bir veya hangisi önce gelirse 7 GB döndürülür.

Not

Yukarıdaki günlük saklama, Azure İzleyici Tanılama Günlükleri kullanılarak yöneltilen günlükler için geçerli değildir. Yayılmakta olan veri havuzlarının saklama süresini (örneğin, Azure Depolama) değiştirebilirsiniz.

Tanılama günlükleri

MySQL için Azure Veritabanı, Azure İzleyici Tanılama Günlükleri ile tümleşiktir. MySQL sunucunuzda yavaş sorgu günlüklerini etkinleştirdikten sonra bunların Azure İzleyici günlüklerine, Event Hubs'a veya Azure Depolama'ya dağıtılmalarını seçebilirsiniz. Tanılama günlüklerini etkinleştirme hakkında daha fazla bilgi edinmek için tanılama günlükleri belgelerinin nasıl yapılır bölümüne bakın.

Not

Günlükleri tanılama ve ayarlar aracılığıyla Azure depolamaya gönderirseniz Premium Depolama hesapları desteklenmez

Aşağıdaki tabloda her bir günlükte neler olduğu açıklanmaktadır. Çıkış yöntemine bağlı olarak, dahil edilen alanlar ve bunların görüntülenme sırası değişebilir.

Özellik Açıklama
TenantId Kiracı kimliğiniz
SourceSystem Azure
TimeGenerated [UTC] Günlüğün UTC olarak kaydedildiği zaman damgası
Type Günlüğün türü. Her zaman AzureDiagnostics
SubscriptionId Sunucunun ait olduğu abonelik için GUID
ResourceGroup Sunucunun ait olduğu kaynak grubunun adı
ResourceProvider Kaynak sağlayıcısının adı. Her zaman MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId Kaynak URI
Resource sunucusunun adı
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s sunucusunun adı
start_time_t [UTC] Sorgunun başladığı zaman
query_time_s Sorgunun yürütülmesi için geçen toplam saniye sayısı
lock_time_s Sorgunun kilitlendiği saniye içindeki toplam süre
user_host_s Username
rows_sent_d Gönderilen satır sayısı
rows_examined_s İncelenen satır sayısı
last_insert_id_s last_insert_id
insert_id_s Kimlik Ekle
sql_text_s Tam sorgu
server_id_s Sunucunun kimliği
thread_id_s İş Parçacığı Kimliği
\_ResourceId Kaynak URI

Not

için sql_text, 2048 karakteri aşarsa günlük kesilir.

Azure İzleyici Günlüklerinde günlükleri analiz etme

Yavaş sorgu günlükleriniz Tanılama Günlükleri aracılığıyla Azure İzleyici Günlüklerine bağlandıktan sonra yavaş sorgularınızın daha fazla analizini gerçekleştirebilirsiniz. Başlamanıza yardımcı olacak bazı örnek sorgular aşağıda verilmiştir. Aşağıdakini sunucu adınız ile güncelleştirdiğinden emin olun.

  • Belirli bir sunucuda 10 saniyeden uzun sorgular

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s 
    | where query_time_d > 10
    
  • Belirli bir sunucuda en uzun 5 sorgu listeleme

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s 
    | order by query_time_d desc
    | take 5
    
  • Belirli bir sunucuda yavaş sorguları minimum, maksimum, ortalama ve standart sapma sorgu süresine göre özetleme

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s 
    | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by LogicalServerName_s
    
  • Belirli bir sunucudaki yavaş sorgu dağılımının grafiğini oluşturma

    AzureDiagnostics
    | where LogicalServerName_s == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s 
    | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m)
    | render timechart
    
  • Tanılama Günlükleri etkinleştirilmiş tüm MySQL sunucularında 10 saniyeden uzun sorguları görüntüleme

    AzureDiagnostics
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s 
    | where query_time_d > 10
    

Sonraki Adımlar