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
- Azure portalında oturum açın ve MySQL için Azure Veritabanı sunucunuzu seçin.
- Menünün Ayarlar bölümünde Sunucu Parametreleri'ni seçin.
- query_store_capture_mode parametresini arayın.
- Değeri ALL ve Save olarak ayarlayın.
Sorgu Deponuzda bekleme istatistiklerini etkinleştirmek için:
- query_store_wait_sampling_capture_mode parametresini arayın.
- 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
Not
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 sunucunuz için Performans Önerileri'ni 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 sunucunuz için Performans Önerileri'ni 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 |
Not
Ş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 |
uzun metin | HAYIR | Tüm değişmez değerleri kaldırdıktan sonra normalleştirilmiş sorgu metni |
query_sample_text |
uzun metin | 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 |
uzun metin | 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_frequency
kullanılarak değiştirilebilir.
Sonraki adımlar
- Sorgu Performansı İçgörüleri hakkında daha fazla bilgi edinin