Bu sayfada, sorgu yürüttüğünüzde sorgu yürütme bilgilerinin nasıl alınacağı açıklanmaktadır.
Sorgu Açıklama'yı kullanma
Sorgularınızın nasıl yürütüldüğünü anlamak için Query Explain'i kullanabilirsiniz. Bu, sorgularınızı optimize etmek için kullanabileceğiniz ayrıntılar sağlar.
Firebase konsolunda Query Explain'i kullanabilirsiniz:
- Firebase konsolunda Veritabanları ve Depolama > Firestore > Veriler > Sorgu Düzenleyici'ye gidin.
- Yürütme bilgilerini almak istediğiniz sorguyu çalıştırın.
- Sorgu analizi çıkışını görüntülemek için Sorguyu Açıklama sekmesini tıklayın.
Açıklama modları
Hata ayıklamak istediğiniz şeye bağlı olarak, Sorgu Açıklama ile sorguyu farklı modlarda yürütebilirsiniz:
analyze: Sorguyu planlar ve yürütür. Sorgu tarafından üretilen normal sonuçların yanı sıra planlayıcı bilgilerini, çalışma zamanı yürütme istatistiklerini ve metriklerini döndürür.explain: Sorguyu planlar ancak yürütmez. Planlayıcı bilgilerini döndürür ancak çalışma zamanı istatistiklerini, metriklerini veya sonuçlarını döndürmez. Bu, maliyetli işlemler yapmadan bir sorgunun davranışında hata ayıklamak için kullanışlıdır.
Analiz
Sorgu Açıklaması'nın çıktısı iki ana bileşen içerir: Özet İstatistikler ve Yürütme Ağacı. Örnek olarak şu sorguyu ele alalım:
db.pipeline().collection('/users').sort(field("status").ascending()).limit(100)
Özet İstatistikler
Açıklanan çıkışın üst kısmında, yürütme istatistiklerinin özeti yer alır. Bir sorgunun yüksek gecikmeye veya maliyete sahip olup olmadığını belirlemek için bu istatistikleri kullanın. Ayrıca, sorgunuzun bellek sınırlarına ne kadar yaklaştığını gösteren bellek istatistikleri de içerir.
Execution:
results returned: 2
request peak memory usage: 20.25 KiB (20,736 B)
data bytes read: 148 B
entity row scanned: 2
Billing:
read units: 1
Yürütme Ağacı
Yürütme ağacı, sorgu yürütmeyi bir dizi düğüm olarak tanımlar. En alttaki düğümler (yaprak düğümler), sorgu yanıtı oluşturmak için ağaçta yukarı doğru ilerleyerek depolama katmanından veri alır.
Her yürütme düğümüyle ilgili ayrıntılar için Yürütme referansı başlıklı makaleyi inceleyin.
Sorgularınızı optimize etmek için bu bilgileri nasıl kullanacağınızla ilgili ayrıntılar için Sorgu yürütmeyi optimize etme başlıklı makaleyi inceleyin.
Aşağıda, yürütme ağacına dair bir örnek verilmiştir:
Tree:
• Compute
| $out_1: map_set($record_1, "__name__", $__name___1, "__key__", unset)
| is query result: true
|
| Execution:
| records returned: 2
| latency: 5.96 ms (local <1 ms)
|
└── • Compute
| $__name___1: map_get($record_1, "__key__")
|
| Execution:
| records returned: 2
| latency: 5.88 ms (local <1 ms)
|
└── • MajorSort
| fields: [$v_1 ASC]
| output: [$record_1]
| limit: 100
|
| Execution:
| records returned: 2
| latency: 5.86 ms (local <1 ms)
| peak memory usage: 20.25 KiB (20,736 B)
|
└── • Compute
| $v_1: map_get($record_1, "status")
|
| Execution:
| records returned: 2
| latency: 5.23 ms (local <1 ms)
|
└── • TableScan
source: /users
order: UNDEFINED
properties: *
row range: (-∞..+∞)
output record: $record_1
variables: [$record_1]
Execution:
records returned: 2
latency: 4.68 ms
records scanned: 2
data bytes read: 148 B
Sırada ne var?
- Yürütme ağacı düğümleri hakkında bilgi edinmek için Sorgu yürütme referansı başlıklı makaleyi inceleyin.
- Sorgularınızı nasıl optimize edeceğinizi öğrenmek için Sorgu yürütmeyi optimize etme başlıklı makaleyi inceleyin.