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 yolundadır. 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. PostgreSQL için Azure Veritabanı Tek Sunucuya ne 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 zamana 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ğidir, bu nedenle 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çılamaz veya kapatılamaz.
Azure portalını kullanarak Sorgu Deposu'yu etkinleştirme
- Azure portalında oturum açın ve PostgreSQL için Azure Veritabanı sunucunuzu seçin.
- Menünün Ayarlar bölümünde Sunucu Parametreleri'ni seçin.
- parametresini
pg_qs.query_capture_mode
arayın. - Değeri ve Kaydet olarak
TOP
ayarlayın.
Sorgu Deponuzda bekleme istatistiklerini etkinleştirmek için:
- parametresini
pgms_wait_sampling.query_capture_mode
arayın. - Değeri ve Kaydet olarak
ALL
ayarlayın.
Alternatif olarak, Azure CLI 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 ç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:
- 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
- Son X saat içindeki en uzun çalışan sorguları belirleme
- Kaynakları bekleyen en iyi 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 bu 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 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. Yüksek GÇ beklemeleri olan sorgularla 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 |
---|---|---|---|
pg_qs.query_capture_mode | Hangi deyimlerin izlendiğini ayarlar. | yok | none, top, all |
pg_qs.max_query_text_length | Kaydedilebilecek en fazla sorgu uzunluğunu ayarlar. Daha uzun sorgular kesilir. | 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 izlenmediğ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 olarak ayarlayın. | 100 | 1-600000 |
Not
pg_qs.query_capture_mode, pgms_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ı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. 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ısına bakılarak normalleştirilir. Değişmez değerler dışında iki sorgu aynıysa, bunlar aynı karmaya sahip olur.
query_store.qs_view
Bu görünüm, Sorgu Deposu'ndaki sorgu metin 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ğlanıp '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 değeri |
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 açıklama 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şin zaman demetine karşılık gelen bitiş saati. | |
Aramalar | bigint | Sorgunun kaç kez yürütüldü? | |
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ırlar | 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 toplam paylaşılan blok 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 yerel blok önbelleği isabetlerinin toplam sayısı | |
local_blks_read | bigint | deyimi tarafından okunan toplam yerel blok sayısı | |
local_blks_dirtied | bigint | deyimiyle 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 toplam geçici blok sayısı | |
temp_blks_written | bigint | Deyimi tarafından yazılan toplam geçici blok sayısı | |
blk_read_time | çift duyarlık | Deyimin blokları okuma için harcadığı toplam süre (track_io_timing etkinse, aksi takdirde sıfır) | |
blk_write_time | çift duyarlık | Deyimin blokları yazmak için harcadığı toplam süre (track_io_timing etkinse, aksi takdirde sıfır) |
query_store.query_texts_view
Bu görünüm, Sorgu Deposu'ndaki sorgu metin 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 açıklama 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 metin 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ğ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 değeri |
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 | |
Event_type | text | Arka ucun beklediği olay türü | |
event | text | 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
Sorgu Deposu tarafından şimdiye kadar 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 (başka bir ifadeyle, 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ı ile tümleştirilmiştirAzure İzleyici tanılama ayarları. Tanılama ayarları, Postgres günlüklerinizi JSON biçiminde analiz ve uyarı için Azure İzleyici Günlükleri'ne, akış için Event Hubs'a ve arşivleme için Azure Depolama 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'i 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ını kullanarak kaynak günlüklerini etkinleştirmek için:
- Portalda, Postgres sunucunuzun gezinti menüsünde Tanılama Ayarlar'ne gidin.
- Tanılama Ayarı Ekle'yi seçin.
- Bu ayarı adlandır.
- Tercih ettiğiniz uç noktayı seçin (depolama hesabı, olay hub'ı, log analytics).
- QueryStoreRuntimeStatistics ve QueryStoreWaitStatistics günlük türlerini seçin.
- 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, dahil edilen alanlar ve bunların görüntülenme sırası değişebilir.
QueryStoreRuntimeStatistics
Alan | Açıklama |
---|---|
TimeGenerated [UTC] | Günlüğün UTC olarak kaydedildiği zaman damgası |
ResourceId | Postgres sunucusunun Azure kaynak URI'sini |
Kategori | 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 değeri |
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 kodu |
end_time_s | Bu girişin zaman demetine karşılık gelen bitiş saati |
calls_s | Sorgunun kaç kez yürütüldü? |
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 |
ResourceGroup | Kaynak grubu |
SubscriptionId | Abonelik kimliğiniz |
ResourceProvider | Microsoft.DBForPostgreSQL |
Kaynak | Postgres sunucu adı |
ResourceType | Servers |
QueryStoreWaitStatistics
Alan | Açıklama |
---|---|
TimeGenerated [UTC] | Günlüğün UTC olarak kaydedildiği zaman damgası |
ResourceId | Postgres sunucusunun Azure kaynak URI'sini |
Kategori | QueryStoreWaitStatistics |
OperationName | QueryStoreWaitEvent |
user_id_s | deyimini yürüten kullanıcının OID değeri |
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ı |
ResourceGroup | Kaynak grubu |
SubscriptionId | 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ı (>= 6000 bayt) ile 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 çoğaltması üzerinde çalıştırılacak sorgular hakkında istatistik sağlamadığı anlamına gelir.
Sonraki adımlar
- Sorgu Deposu'un özellikle yararlı olabileceği senaryolar hakkında daha fazla bilgi edinin.
- Sorgu Deposu'yu kullanmaya yönelik en iyi yöntemler hakkında daha fazla bilgi edinin.