Sorgu Deposu ile MySQL için Azure Veritabanı performansını izleme

Ş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?

Şunlar için geçerlidir: MySQL için Azure Veritabanı 5.7, 8.0

MySQL için Azure Veritabanı'daki Sorgu Deposu özelliği, zaman içinde sorgu performansını izlemenin bir yolunu sağlar. Sorgu Deposu, en uzun süre çalışan ve yoğun kaynak kullanan sorguları hızla bulmanıza yardımcı olarak performans sorunlarını gidermeyi basitleştirir. Sorgu Deposu sorguların ve çalışma zamanı istatistiklerinin geçmişini otomatik olarak yakalar ve bunları gözden geçirmeniz için saklar. Veritabanı kullanım desenlerini görebilmeniz için verileri zamana göre ayırır. Tüm kullanıcılar, veritabanları ve sorgular için veriler, MySQL için Azure Veritabanı örneğindeki mysql şema veritabanında depolanır.

Sorgu Deposu'yu kullanmaya yönelik yaygın senaryolar

Sorgu deposu aşağıdakiler de dahil olmak üzere çeşitli senaryolarda kullanılabilir:

  • Gerileyen sorguları algılama
  • Belirli bir zaman penceresinde bir sorgunun kaç kez yürütüldü olduğunu belirleme
  • Büyük deltaları görmek için zaman pencereleri arasında bir sorgunun ortalama yürütme süresini karşılaştırma

Sorgu Deposunu Etkinleştirme

Sorgu Deposu bir kabul etme özelliğidir, bu nedenle sunucuda varsayılan olarak etkin değildir. Sorgu deposu, belirli bir sunucudaki tüm veritabanları için genel olarak etkinleştirilir veya devre dışı bırakılır ve veritabanı başına açılamaz veya kapatılamaz.

Azure portalını kullanarak Sorgu Deposu'yu etkinleştirme

  1. Azure portalında oturum açın ve MySQL için Azure Veritabanı sunucunuzu seçin.
  2. Menünün Ayarlar bölümünde Sunucu Parametreleri'ni seçin.
  3. query_store_capture_mode parametresini arayın.
  4. Değeri ALL ve Save olarak ayarlayın.

Sorgu Deponuzda bekleme istatistiklerini etkinleştirmek için:

  1. query_store_wait_sampling_capture_mode parametresini arayın.
  2. Değeri ALL ve Save olarak ayarlayın.

İlk veri toplu işleminin mysql veritabanında kalıcı olması için 20 dakikaya kadar izin verin.

Sorgu Deposu'ndaki bilgiler

Sorgu Deposu'nun iki deposu vardır:

  • Sorgu yürütme istatistikleri bilgilerini kalıcı hale getirilmesi için bir çalışma zamanı istatistik deposu.
  • Bekleme istatistikleri bilgilerini kalıcı hale gelen bir bekleme istatistikleri deposu.

Alan kullanımını en aza indirmek için, çalışma zamanı istatistik deposundaki çalışma zamanı yürütme istatistikleri sabit, yapılandırılabilir bir zaman penceresi üzerinde toplanır. Bu depolardaki bilgiler, sorgu deposu görünümlerini sorgulayarak görünür.

Aşağıdaki sorgu, Sorgu Deposu'ndaki sorgular hakkında bilgi döndürür:

SELECT * FROM mysql.query_store;

Ya da bekleme istatistikleri için şu sorgu:

SELECT * FROM mysql.query_store_wait_stats;

Bekleme sorgularını bulma

Dekont

Bekleme istatistikleri yoğun iş yükü saatlerinde etkinleştirilmemeli veya hassas iş yükleri için süresiz olarak açılmamalıdır.
Yüksek CPU kullanımıyla veya daha düşük sanal çekirdeklerle yapılandırılmış sunucularda çalışan iş yükleri için bekleme istatistiklerini etkinleştirirken dikkatli olun. Süresiz olarak açılmamalıdır.

Bekleme olayı türleri, farklı bekleme olaylarını benzerliğe göre demetler halinde birleştirir. Sorgu Deposu bekleme olayı türünü, belirli bir bekleme olayı adını ve söz konusu sorguyu sağlar. Bu bekleme bilgilerini sorgu çalışma zamanı istatistikleriyle ilişkilendirebilmek, sorgu performansı özelliklerine nelerin katkıda bulunabileceğini daha iyi anlayabileceğiniz anlamına gelir.

Sorgu Deposu'ndaki bekleme istatistiklerini kullanarak iş yükünüzle ilgili daha fazla içgörü elde etmek için kullanabileceğiniz bazı örnekler aşağıda verilmiştir:

Gözlem Eylem
Yüksek Kilit beklemeleri Etkilenen sorgular için sorgu metinlerini denetleyin ve hedef varlıkları belirleyin. Sık yürütülen ve/veya süresi yüksek olan aynı varlığı değiştiren diğer sorguları Sorgu Deposu'na bakın. Bu sorguları tanımladıktan sonra eşzamanlılığı geliştirmek için uygulama mantığını değiştirmeyi veya daha az kısıtlayıcı bir yalıtım düzeyi kullanmayı göz önünde bulundurun.
Yüksek Arabellekli GÇ beklemeleri Sorgu Deposu'nda çok sayıda fiziksel okuma içeren sorguları bulun. Sorgular yüksek GÇ beklemeleriyle eşleşiyorsa, taramalar yerine arama yapmak için temel alınan varlığa bir dizin eklemeyi göz önünde bulundurun. Bu, sorguların GÇ yükünü en aza indirir. Bu sunucu için sorguları en iyi duruma getirebilecek dizin önerileri olup olmadığını görmek için portalda sunucunuzun Performans Öneriler denetleyin.
Yüksek Bellek beklemeleri Sorgu Deposu'nda en çok bellek tüketen sorguları bulun. Bu sorgular büyük olasılıkla etkilenen sorguların ilerleme durumunu geciktiriyor. Bu sorguları en iyi duruma getirebilecek dizin önerileri olup olmadığını görmek için portalda sunucunuzun Performans Öneriler denetleyin.

Yapılandırma seçenekleri

Sorgu Deposu etkinleştirildiğinde verileri 15 dakikalık toplama pencerelerinde ve pencere başına en fazla 500 ayrı sorgu kaydeder.

Sorgu Deposu parametrelerini yapılandırmak için aşağıdaki seçenekler kullanılabilir.

Parametre Açıklama Varsayılan Aralık
query_store_capture_mode Değere göre sorgu deposu özelliğini AÇ/KAPALI duruma getirin. Not: performance_schema KAPALI ise, query_store_capture_mode açmak performance_schema ve bu özellik için gereken performans şeması araçlarının bir alt kümesini açar. TÜMÜ YOK, TÜMÜ
query_store_capture_interval Sorgu deposu yakalama aralığı dakika cinsindendir. Sorgu ölçümlerinin toplandığı aralığın belirtilmesine izin verir 15 5 - 60
query_store_capture_utility_queries Sistemde yürütülen tüm yardımcı program sorgularını yakalamak için AÇI veya KAPALI olarak ayarlayın. HAYIR EVET, HAYıR
query_store_retention_period_in_days Verileri sorgu deposunda tutmak için gün olarak zaman penceresi. 7 1 - 30

Aşağıdaki seçenekler özellikle bekleme istatistikleri için geçerlidir.

Parametre Açıklama Varsayılan Aralık
query_store_wait_sampling_capture_mode Bekleme istatistiklerinin AÇI/KAPALI olarak açılmasına izin verir. HİÇBİRİ YOK, TÜMÜ
query_store_wait_sampling_frequency Saniye cinsinden bekleme örnekleme sıklığını değiştirir. 5-300 saniye. 30 5-300

Dekont

Şu anda query_store_capture_mode bu yapılandırmanın yerini alır; yani bekleme istatistiklerinin çalışması için hem query_store_capture_mode hem de query_store_wait_sampling_capture_mode ALL için etkinleştirilmesi gerekir. query_store_capture_mode kapalıysa, bekleme istatistikleri de performance_schema etkinleştirildiğinden ve sorgu deposu tarafından yakalanan query_text kullandığından bekleme istatistikleri de kapatılır.

Parametre için farklı bir değer almak veya ayarlamak için Azure portalını veya Azure CLI'yi kullanın.

Görünümler ve işlevler

Aşağıdaki görünümleri ve işlevleri kullanarak Sorgu Deposu'na bakın ve yönetin. Seçme ayrıcalığı genel rolündeki herkes bu görünümleri kullanarak Sorgu Deposu'ndaki verileri görebilir. Bu görünümler yalnızca mysql veritabanında kullanılabilir.

Sorgular, değişmez değerleri ve sabitleri kaldırdıktan sonra yapısına bakılarak normalleştirilir. Değişmez değerler dışında iki sorgu aynıysa, bunlar aynı karmaya sahip olur.

mysql.query_store

Bu görünüm Sorgu Deposu'ndaki tüm verileri döndürür. Her ayrı veritabanı kimliği, kullanıcı kimliği ve sorgu kimliği için bir satır vardır.

Adı Veri Türü IS_NULLABLE Açıklama
schema_name varchar(64) HAYIR Şemanın adı
query_id bigint(20) HAYIR Belirli sorgu için oluşturulan benzersiz kimlik, aynı sorgu farklı şemada yürütülürse yeni bir kimlik oluşturulur
timestamp_id timestamp HAYIR Sorgunun yürütüldiği zaman damgası. Bu, query_store_interval yapılandırmasını temel alır
query_digest_text Longtext HAYIR Tüm değişmez değerleri kaldırdıktan sonra normalleştirilmiş sorgu metni
query_sample_text Longtext HAYIR Gerçek sorgunun değişmez değerlerle ilk görünümü
query_digest_truncated bit EVET Sorgu metninin kesilmiş olup olmadığı. Sorgu 1 KB'tan uzunsa değer Evet olur
execution_count bigint(20) HAYIR Sorgunun bu zaman damgası kimliği / yapılandırılan aralık dönemi boyunca kaç kez yürütüldü?
warning_count bigint(20) HAYIR İç sorgu sırasında bu sorgunun oluşturduğu uyarı sayısı
error_count bigint(20) HAYIR Bu sorgunun aralık boyunca oluşturduğu hata sayısı
sum_timer_wait çift EVET Milisaniye cinsinden aralık boyunca bu sorgunun toplam yürütme süresi
avg_timer_wait çift EVET Milisaniye cinsinden aralık boyunca bu sorgu için ortalama yürütme süresi
min_timer_wait çift EVET Bu sorgu için milisaniye cinsinden en düşük yürütme süresi
max_timer_wait çift EVET Milisaniye cinsinden en uzun yürütme süresi
sum_lock_time bigint(20) HAYIR Bu zaman penceresi sırasında bu sorgu yürütme için tüm kilitler için harcanan toplam süre
sum_rows_affected bigint(20) HAYIR Etkilenen satır sayısı
sum_rows_sent bigint(20) HAYIR İstemciye gönderilen satır sayısı
sum_rows_examined bigint(20) HAYIR İncelenen satır sayısı
sum_select_full_join bigint(20) HAYIR Tam birleştirme sayısı
sum_select_scan bigint(20) HAYIR Seçme taramalarının sayısı
sum_sort_rows bigint(20) HAYIR Sıralanan satır sayısı
sum_no_index_used bigint(20) HAYIR Sorgunun dizin kullanmama sayısı
sum_no_good_index_used bigint(20) HAYIR Sorgu yürütme altyapısının iyi dizin kullanmama sayısı
sum_created_tmp_tables bigint(20) HAYIR Oluşturulan toplam geçici tablo sayısı
sum_created_tmp_disk_tables bigint(20) HAYIR Diskte oluşturulan toplam geçici tablo sayısı (G/Ç oluşturur)
first_seen timestamp HAYIR Toplama penceresi sırasında sorgunun ilk oluşumu (UTC)
last_seen timestamp HAYIR Bu toplama penceresi sırasında sorgunun son oluşumu (UTC)

mysql.query_store_wait_stats

Bu görünüm Sorgu Deposu'ndaki bekleme olayları verilerini döndürür. Her ayrı veritabanı kimliği, kullanıcı kimliği, sorgu kimliği ve olay için bir satır vardır.

Adı Veri Türü IS_NULLABLE Açıklama
interval_start timestamp HAYIR Aralığın başlangıcı (15 dakikalık artış)
interval_end timestamp HAYIR Aralık sonu (15 dakikalık artış)
query_id bigint(20) HAYIR Normalleştirilmiş sorguda oluşturulan benzersiz kimlik (sorgu deposundan)
query_digest_id varchar(32) HAYIR Tüm değişmez değerleri kaldırdıktan sonra normalleştirilmiş sorgu metni (sorgu deposundan)
query_digest_text Longtext HAYIR Gerçek sorgunun değişmez değerlerle ilk görünümü (sorgu deposundan)
event_type varchar(32) HAYIR Bekleme olayının kategorisi
event_name varchar(128) HAYIR Bekleme olayının adı
count_star bigint(20) HAYIR Sorgunun aralığı boyunca örneklenen bekleme olaylarının sayısı
sum_timer_wait_ms çift HAYIR Aralık boyunca bu sorgunun toplam bekleme süresi (milisaniye cinsinden)

İşlevler

Adı Açıklama
mysql.az_purge_querystore_data(TIMESTAMP) Verilen zaman damgasından önce tüm sorgu deposu verilerini temizler
mysql.az_procedure_purge_querystore_event(TIMESTAMP) Belirtilen zaman damgasından önce tüm bekleme olayı verilerini temizler
mysql.az_procedure_purge_recommendation(TIMESTAMP) Süresi belirtilen zaman damgasından önce olan önerileri temizler

Sınırlamalar ve bilinen sorunlar

  • Bir MySQL sunucusunda parametresi read_only varsa, Sorgu Deposu verileri yakalayamaz.
  • Uzun Unicode sorguları (>= 6000 bayt) ile karşılaşırsa Sorgu Deposu işlevselliği kesilebilir.
  • Bekleme istatistikleri için bekletme süresi 24 saattir.
  • Bekleme istatistikleri, olayların bir bölümünü yakalamak için örneği kullanır. Sıklık parametresi query_store_wait_sampling_frequencykullanılarak değiştirilebilir.

Sonraki adımlar