Sorgu Deposu ile performansı izleme

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

Önemli

PostgreSQL için Azure Veritabanı - Tek Sunucu kullanımdan kaldırma yolunda. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya yükseltmenizi kesinlikle öneririz. PostgreSQL için Azure Veritabanı - Esnek Sunucu'ya geçiş hakkında daha fazla bilgi için bkz. Tek Sunucu PostgreSQL için Azure Veritabanı neler oluyor?

PostgreSQL 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 zaman pencerelerine göre ayırır. Tüm kullanıcılar, veritabanları ve sorgular için veriler PostgreSQL için Azure Veritabanı örneğindeki azure_sys adlı bir veritabanında depolanır.

Önemli

azure_sys veritabanını veya şemalarını değiştirmeyin. Bunu yaptığınızda Sorgu Deposu ve ilgili performans özelliklerinin düzgün çalışması engellenir.

Sorgu Deposunu Etkinleştirme

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

Azure portal kullanarak Sorgu Deposu'yu etkinleştirme

  1. Azure portal oturum açın ve PostgreSQL için Azure Veritabanı sunucunuzu seçin.
  2. Menünün Ayarlar bölümünde Sunucu Parametreleri'ni seçin.
  3. parametresini pg_qs.query_capture_mode arayın.
  4. Değeri ve Kaydet olarak TOP ayarlayın.

Sorgu Deponuzda bekleme istatistiklerini etkinleştirmek için:

  1. parametresini pgms_wait_sampling.query_capture_mode arayın.
  2. Değeri ve Kaydet olarak ALL ayarlayın.

Alternatif olarak, Azure CLI'yı kullanarak bu parametreleri ayarlayabilirsiniz.

az postgres server configuration set --name pg_qs.query_capture_mode --resource-group myresourcegroup --server mydemoserver --value TOP
az postgres server configuration set --name pgms_wait_sampling.query_capture_mode --resource-group myresourcegroup --server mydemoserver --value ALL

İlk toplu iş verilerinin azure_sys veritabanında kalıcı olması için 20 dakikaya izin verin.

Sorgu Deposu'ndaki bilgiler

Sorgu Deposu'nun iki deposu vardır:

  • Sorgu yürütme istatistikleri bilgilerini kalıcı hale getiren bir çalışma zamanı istatistikleri deposu.
  • Bekleme istatistikleri bilgilerini kalıcı hale getiren bir bekleme istatistikleri deposu.

Sorgu Deposu'yu kullanmaya yönelik yaygın senaryolar şunlardır:

  • Bir sorgunun belirli bir zaman penceresinde kaç kez yürütüldü olduğunu belirleme
  • Büyük değişimleri görmek için zaman pencereleri arasında bir sorgunun ortalama yürütme süresini karşılaştırma
  • Son X saat içinde en uzun süre çalışan sorguları tanımlama
  • Kaynak bekleyen en önemli N sorgularını belirleme
  • Belirli bir sorgu için bekleme doğasını anlama

Alan kullanımını en aza indirmek için, çalışma zamanı istatistikleri 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.

Sorgu Deposu bilgilerine erişme

Sorgu Deposu verileri Postgres sunucunuzdaki azure_sys veritabanında depolanır.

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

SELECT * FROM query_store.qs_view; 

Ya da bekleme istatistikleri için şu sorgu:

SELECT * FROM query_store.pgms_wait_sampling_view;

Bekleme sorgularını bulma

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 bulunduğu hakkında daha fazla bilgi edinebileceğiniz anlamına gelir.

Aşağıda, 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 verilmiştir:

Gözlem Eylem
Yüksek Kilit beklemeleri Etkilenen sorgular için sorgu metinlerini denetleyin ve hedef varlıkları tanımlayın. Sık yürütülen ve/veya süresi yüksek olan aynı varlığı değiştiren diğer sorgular için 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 fazla 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ıkta 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 pencere başına en fazla 500 ayrı sorgu olmak üzere 15 dakikalık toplama pencerelerinde kaydeder.

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

Parametre Açıklama Varsayılan Aralık
pg_qs.query_capture_mode Hangi deyimlerin izlendiğini ayarlar. yok hiçbiri, üst, tümü
pg_qs.max_query_text_length Kaydedilebilecek en fazla sorgu uzunluğunu ayarlar. Daha uzun sorgular kesilecek. 6000 100 - 10K
pg_qs.retention_period_in_days Bekletme süresini ayarlar. 7 1 - 30
pg_qs.track_utility Yardımcı program komutlarının izlenip izlenmeyeceğini ayarlar on açık, kapalı

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

Parametre Açıklama Varsayılan Aralık
pgms_wait_sampling.query_capture_mode Hangi deyimlerin bekleme istatistikleri için izlendiğini ayarlar. yok hiçbiri, tümü
Pgms_wait_sampling.history_period Bekleme olaylarının örneklendiği sıklığı milisaniye cinsinden ayarlayın. 100 1-600000

Not

pg_qs.query_capture_modepgms_wait_sampling.query_capture_mode değerinin yerini alır. pg_qs.query_capture_mode NONE ise, pgms_wait_sampling.query_capture_mode ayarının hiçbir etkisi yoktur.

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

Görünümler ve işlevler

Aşağıdaki görünümleri ve işlevleri kullanarak Sorgu Deposu'nı görüntüleyin ve yönetin. PostgreSQL genel rolündeki herkes bu görünümleri kullanarak Sorgu Deposu'ndaki verileri görebilir. Bu görünümler yalnızca azure_sys veritabanında kullanılabilir.

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

query_store.qs_view

Bu görünüm, Sorgu Deposu'nda sorgu metni verilerini döndürür. Her ayrı query_text için bir satır vardır. Veriler portal, API'ler veya CLI'daki Akıllı Performans bölümü aracılığıyla kullanılamaz, ancak azure_sys bağlanarak ve 'query_store.query_texts_view' sorgulanarak bulunabilir.

Ad Tür Başvurular Açıklama
runtime_stats_entry_id bigint runtime_stats_entries tablosundaki kimlik
user_id Oıd pg_authid.oid deyimini yürüten kullanıcının OID'sini
Db_ıd Oıd pg_database.oid deyiminin yürütüldiği veritabanının OID'i
query_id bigint deyiminin ayrıştırma ağacından hesaplanan iç karma kodu
query_sql_text Varchar(10000) Temsili ifade metni. Aynı yapıya sahip farklı sorgular birlikte kümelenir; bu metin, kümedeki sorgulardan ilkinin metnidir.
plan_id bigint Bu sorguya karşılık gelen planın kimliği, henüz kullanılamıyor
start_time timestamp Sorgular zaman demetlerine göre toplanır; demetin zaman aralığı varsayılan olarak 15 dakikadır. Bu, bu girişin zaman demetine karşılık gelen başlangıç saatidir.
end_time timestamp Bu giriş için zaman demetine karşılık gelen bitiş saati.
Aramalar bigint Sorgunun yürütülma sayısı
total_time çift duyarlık Milisaniye cinsinden toplam sorgu yürütme süresi
min_time çift duyarlık Milisaniye cinsinden en düşük sorgu yürütme süresi
max_time çift duyarlık Milisaniye cinsinden en fazla sorgu yürütme süresi
mean_time çift duyarlık Milisaniye cinsinden ortalama sorgu yürütme süresi
stddev_time çift duyarlık Sorgu yürütme süresinin milisaniye cinsinden standart sapması
Satır bigint Deyiminden alınan veya etkilenen toplam satır sayısı
shared_blks_hit bigint deyimi tarafından paylaşılan blok önbelleği isabetlerinin toplam sayısı
shared_blks_read bigint deyimi tarafından okunan paylaşılan blokların toplam sayısı
shared_blks_dirtied bigint deyimi tarafından kirlenen toplam paylaşılan blok sayısı
shared_blks_written bigint deyimi tarafından yazılan toplam paylaşılan blok sayısı
local_blks_hit bigint deyimi tarafından yapılan toplam yerel blok önbelleği isabet sayısı
local_blks_read bigint deyimi tarafından okunan toplam yerel blok sayısı
local_blks_dirtied bigint deyimi tarafından kirlenen yerel blokların toplam sayısı
local_blks_written bigint deyimi tarafından yazılan toplam yerel blok sayısı
temp_blks_read bigint Deyimi tarafından okunan geçici blokların toplam sayısı
temp_blks_written bigint Deyimi tarafından yazılan geçici blokların toplam sayısı
blk_read_time çift duyarlık Deyimin blokları okuma için harcadığı toplam süre (milisaniye cinsinden (track_io_timing etkinse, aksi takdirde sıfır)
blk_write_time çift duyarlık Deyimin blokları yazmak için harcadığı toplam süre (milisaniye cinsinden (track_io_timing etkinse, aksi takdirde sıfır)

query_store.query_texts_view

Bu görünüm, Sorgu Deposu'ndaki sorgu metni verilerini döndürür. Her ayrı query_text için bir satır vardır.

Ad Tür Açıklama
query_text_id bigint query_texts tablosunun kimliği
query_sql_text Varchar(10000) Temsili bir ifade metni. Aynı yapıya sahip farklı sorgular birlikte kümelenir; bu metin, kümedeki sorgulardan ilkinin metnidir.

query_store.pgms_wait_sampling_view

Bu görünüm, Sorgu Deposu'ndaki sorgu metni verilerini döndürür. Her ayrı query_text için bir satır vardır. Veriler portaldaki Akıllı Performans bölümü, API'ler veya CLI aracılığıyla kullanılamaz; ancak azure_sys bağlanıp 'query_store.query_texts_view' sorgulanarak bulunabilir.

Ad Tür Başvurular Açıklama
user_id Oıd pg_authid.oid deyimini yürüten kullanıcının OID'i
Db_ıd Oıd pg_database.oid deyiminin yürütüldiği veritabanının OID'i
query_id bigint deyiminin ayrıştırma ağacından hesaplanan iç karma kod
Event_type metin Arka ucun beklediği olay türü
event metin Arka uç şu anda bekliyorsa bekleme olayı adı
Aramalar Tamsayı Yakalanan aynı olayın sayısı

İşlevler

Query_store.qs_reset() void döndürüyor

qs_reset Şu ana kadar Sorgu Deposu tarafından toplanan tüm istatistikleri atar. Bu işlev yalnızca sunucu yöneticisi rolü tarafından yürütülebilir.

Query_store.staging_data_reset() void döndürüyor

staging_data_reset Sorgu Deposu tarafından bellekte toplanan tüm istatistikleri atar (yani bellekteki veriler henüz veritabanına boşaltılmamıştır). Bu işlev yalnızca sunucu yöneticisi rolü tarafından yürütülebilir.

Azure İzleyici

PostgreSQL için Azure Veritabanı, Azure İzleyici tanılama ayarlarıyla tümleşiktir. Tanılama ayarları Postgres günlüklerinizi JSON biçiminde analiz ve uyarı için Azure İzleyici Günlüklerine , akış için Event Hubs'a ve arşivleme için Azure Depolama'ya göndermenize olanak tanır.

Önemli

için bu tanılama özelliği yalnızca Genel Amaçlı ve Bellek için İyileştirilmiş fiyatlandırma katmanlarında kullanılabilir.

Tanılama ayarlarını yapılandırma

Azure portal, CLI, REST API ve PowerShell kullanarak Postgres sunucunuz için tanılama ayarlarını etkinleştirebilirsiniz. Yapılandırılan günlük kategorileri QueryStoreRuntimeStatistics ve QueryStoreWaitStatistics'tir.

Azure portal kullanarak kaynak günlüklerini etkinleştirmek için:

  1. Portalda, Postgres sunucunuzun gezinti menüsünde Tanılama Ayarları'na gidin.
  2. Tanılama Ayarı Ekle'yi seçin.
  3. Bu ayarı adlandır.
  4. Tercih ettiğiniz uç noktayı (depolama hesabı, olay hub'ı, log analytics) seçin.
  5. QueryStoreRuntimeStatistics ve QueryStoreWaitStatistics günlük türlerini seçin.
  6. Ayarınızı kaydedin.

PowerShell, CLI veya REST API kullanarak bu ayarı etkinleştirmek için tanılama ayarları makalesini ziyaret edin.

JSON günlük biçimi

Aşağıdaki tablolarda iki günlük türünün alanları açıklanmaktadır. Seçtiğiniz çıkış uç noktasına bağlı olarak, eklenen alanlar ve bunların görüntülenme sırası farklılık gösterebilir.

QueryStoreRuntimeStatistics

Alan Açıklama
TimeGenerated [UTC] Günlüğün UTC olarak kaydedildiğinde zaman damgası
ResourceId Postgres sunucusunun Azure kaynak URI'sini
Category QueryStoreRuntimeStatistics
OperationName QueryStoreRuntimeStatisticsEvent
LogicalServerName_s Postgres sunucu adı
runtime_stats_entry_id_s runtime_stats_entries tablosundaki kimlik
user_id_s deyimini yürüten kullanıcının OID'i
db_id_s deyiminin yürütüldiği veritabanının OID'i
query_id_s deyiminin ayrıştırma ağacından hesaplanan iç karma kod
end_time_s Bu girişin zaman demetine karşılık gelen bitiş saati
calls_s Sorgunun yürütülma sayısı
total_time_s Milisaniye cinsinden toplam sorgu yürütme süresi
min_time_s Milisaniye cinsinden en düşük sorgu yürütme süresi
max_time_s Milisaniye cinsinden en fazla sorgu yürütme süresi
mean_time_s Milisaniye cinsinden ortalama sorgu yürütme süresi
adlı yönetilen örnek, Kaynak grubu
kaynak grubundaki Abonelik kimliğiniz
ResourceProvider Microsoft.DBForPostgreSQL
Kaynak Postgres sunucu adı
ResourceType Servers

QueryStoreWaitStatistics

Alan Açıklama
TimeGenerated [UTC] Günlüğün UTC olarak kaydedildiğinde zaman damgası
ResourceId Postgres sunucusunun Azure kaynak URI'si
Category QueryStoreWaitStatistics
OperationName QueryStoreWaitEvent
user_id_s deyimini yürüten kullanıcının OID'sini
db_id_s deyiminin yürütüldiği veritabanının OID'i
query_id_s Sorgunun iç karma kodu
calls_s Yakalanan aynı olayın sayısı
event_type_s Arka ucun beklediği olay türü
event_s Arka uç şu anda bekliyorsa bekleme olayı adı
start_time_t Olay başlangıç saati
end_time_s Olay bitiş saati
LogicalServerName_s Postgres sunucu adı
adlı yönetilen örnek, Kaynak grubu
kaynak grubundaki Abonelik kimliğiniz
ResourceProvider Microsoft.DBForPostgreSQL
Kaynak Postgres sunucu adı
ResourceType Servers

Sınırlamalar ve bilinen sorunlar

  • PostgreSQL sunucusunda parametresi default_transaction_read_only varsa, Sorgu Deposu verileri yakalayamaz.
  • Uzun Unicode sorgularıyla (>= 6000 bayt) karşılaşırsa Sorgu Deposu işlevselliği kesilebilir.
  • Okuma amaçlı çoğaltmalar , Sorgu Deposu verilerini birincil sunucudan çoğaltır. Bu, okuma amaçlı çoğaltmanın Sorgu Deposu'nun okuma amaçlı çoğaltmada çalıştırılacak sorgular hakkında istatistik sağlamadığı anlamına gelir.

Sonraki adımlar