MySQL için Azure Veritabanı - Esnek Sunucuda yavaş sorgu günlükleri

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

Esnek MySQL için Azure Veritabanı sunucuda yavaş sorgu günlüğü, kullanıcıların yapılandırması ve erişimi için kullanılabilir. Yavaş sorgu günlükleri varsayılan olarak devre dışıdır ve sorun giderme sırasında performans sorunlarını tanımlamaya yardımcı olmak için etkinleştirilebilir.

MySQL yavaş sorgu günlüğü hakkında daha fazla bilgi için MySQL altyapısı belgelerindeki yavaş sorgu günlüğü bölümüne bakın.

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

Varsayılan olarak, yavaş sorgu günlüğü devre dışı bırakılır. Günlükleri etkinleştirmek için sunucu parametresini slow_query_log ON olarak ayarlayın. Bu, Azure portalı veya Azure CLI kullanılarak yapılandırılabilir.

Yavaş sorgu günlüğü davranışını denetlemek için ayarlayabileceğiniz diğer parametreler şunlardır:

  • long_query_time: Tamamlanması daha long_query_time uzun sürüyorsa (saniye olarak) bir sorguyu günlüğe kaydedin. Varsayılan değer 10 saniyedir. Sunucu parametresi long_query_time MySQL'de yeni kurulan tüm bağlantılar için genel olarak geçerlidir. Ancak, zaten bağlı olan iş parçacıklarını etkilemez. Uygulamadan esnek MySQL için Azure Veritabanı sunucuya yeniden bağlanmanız önerilir veya sunucuyu yeniden başlatmak, "long_query_time" eski değerlerine sahip iş parçacıklarını temizlemeye ve güncelleştirilmiş parametre değerini uygulamaya yardımcı olur.
  • log_slow_admin_statements: Yönetim deyimlerinin (örn. ALTER_TABLE, ANALYZE_TABLE) günlüğe kaydedilip kaydedilmediğini belirler.
  • log_queries_not_using_indexes: Dizin kullanmayan sorguların günlüğe kaydedilip kaydedilmediğini belirler.
  • log_throttle_queries_not_using_indexes: Yavaş sorgu günlüğüne yazılabilir dizine alınamayan sorgu sayısını sınırlar. Bu parametre ON olarak ayarlandığında geçerlilik log_queries_not_using_indexes kazanır

Önemli

Tablolarınız dizine alınmadıysa ve log_throttle_queries_not_using_indexes parametrelerini ON log_queries_not_using_indexes olarak ayarlamak MySQL performansını etkileyebilir çünkü bu dizine alınmamış tablolarda çalıştırılan tüm sorgular yavaş sorgu günlüğüne yazılır.

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

Yavaş sorgu günlükleri Azure İzleyici tanılama ayarlarıyla tümleştirilir. MySQL için Azure Veritabanı esnek sunucu örneğinizde yavaş sorgu günlüklerini etkinleştirdikten sonra bunları Azure İzleyici günlüklerine, Event Hubs'a veya Azure Depolama'ya yayabilirsiniz. Tanılama ayarları hakkında daha fazla bilgi edinmek için tanılama günlükleri belgelerine bakın. Azure portalında tanılama ayarlarını etkinleştirme hakkında daha fazla bilgi edinmek için yavaş sorgu günlüğü portalı makalesine bakın.

Not

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

Aşağıdaki tabloda yavaş sorgu günlüğünün çıkışı 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_s 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_s, 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 Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_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 Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_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 Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_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 Resource 
    
  • Belirli bir sunucudaki yavaş sorgu dağılımının grafiğini oluşturma

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count() by Resource , bin(TimeGenerated, 5m)
    | render timechart
    
  • Tanılama Günlükleri etkin MySQL için Azure Veritabanı tüm esnek sunucu örneklerinde 10 saniyeden uzun sorguları görüntüleme

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

Sonraki adımlar