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