Postgres ve MySQL

Bir EXPLAIN plan görselleştirici: yavaş kısmı bulur.

Bir Postgres veya MySQL EXPLAIN planını JSON olarak yapıştır, LetDraw'un EXPLAIN plan görselleştiricisi onu bir ağaç olarak çizsin: her plan düğümü için maliyeti, satır sayısı ve süresiyle bir kutu. Isı haritası her düğümü kendi eklediği süreye ya da maliyete göre renklendirir, böylece yavaş sorgu adımı kırmızıyla öne çıkar.

Yavaş sorgu · EXPLAIN ANALYZE
Sort cost 1290 rows 120 52.6 ms Nested Loop cost 1240 rows 120 49.8 ms Seq Scan · orders cost 912 rows 4800 38.2 ms Index Scan · users cost 8 rows 1 9.6 ms az süre çok süre
Adım adım

Dört adımda sorgu planından resme

EXPLAIN'i JSON olarak çalıştır, yapıştır ve metin yığını yerine ağacı oku.

  1. Planı JSON olarak al

    Postgres'te sorgunun önüne EXPLAIN (FORMAT JSON), gerçek süreler için EXPLAIN (ANALYZE, FORMAT JSON) yaz. MySQL'de EXPLAIN FORMAT=JSON kullan.

  2. Koddan Oluştur'a yapıştır

    Diğer araçlar menüsünden Koddan Oluştur'u (bir Pro özelliği) aç ve yapıştır. Plan otomatik olarak tanınır ve canlı bir önizleme görünür.

  3. Isı haritasını oku

    Yeşil düğümler az, kırmızı düğümler en çok süre ekler. Ağacı hangisi daha iyi okunuyorsa yukarıdan aşağıya ya da soldan sağa yerleştir.

  4. Not ekle ve paylaş

    Ağacı ekle, kırmızı kutuya çözümünü anlatan bir not koy, sonra bir bağlantı paylaş ya da PNG, SVG veya PDF olarak dışa aktar.

Süre gerçekte nereye gidiyor

Toplamlara göre değil, kendi süresine göre ısı haritası

Postgres maliyeti ve süreyi kümülatif raporlar, bu yüzden planın kökü hep en pahalı görünür. Bu EXPLAIN plan görselleştirici her düğümden alt düğümlerini çıkarır ve düğümü kendi eklediğine göre yeşilden kehribara ve kırmızıya renklendirir. Her kutu düğüm türünü ve üzerinde çalıştığı tabloyu, indeksi ya da fonksiyonu gösterir; ayrıca maliyeti, satır sayısını ve ANALYZE ile tüm döngüler boyunca milisaniye cinsinden süreyi.

  • JSON biçiminde Postgres EXPLAIN, ANALYZE ile ya da olmadan
  • MySQL EXPLAIN FORMAT=JSON; her tablo erişim türü, maliyeti ve satır sayısıyla
  • Tarayıcında çalışır, böylece plan ve tablo adların bilgisayarında kalır
Hemen dene
EXPLAIN (ANALYZE, FORMAT JSON) SELECT * FROM orders o JOIN users u ON ...; [{ "Plan": { "Node Type": "Nested Loop", "Actual Total Time": 49.8, "Plans": [ ... ] }}] -- MySQL: EXPLAIN FORMAT=JSON Nested Loop 49.8 ms Seq Scan orders Index Scan users 38.2 ms here
Ne için kullanılıyor

Yavaş sorgu planlarını kolayca konuşulur hale getir

Ham bir planı bir kişi tek başına çözer; renkli bir ağacı ise tüm ekip anlar.

Yavaş sorgu triyajı

İç içe JSON'da gezinmek yerine sequential scan'i ya da pahalı join'i saniyeler içinde bul.

İndeksten önce ve sonra

İki planı aynı tuvale yapıştır ve hangi düğümün kırmızıdan yeşile döndüğünü tam olarak göster.

Kod incelemeleri

Yeni bir sorgunun planını pull request'e ekle; inceleyenler yalnızca SQL'ini değil maliyetini de görsün.

Olay raporları

Isı haritalı ağacı PNG, SVG veya PDF olarak dışa aktar ve suçluyu doğrudan post-mortem'e koy.

Geliştirici ve DBA arasında devir

İki tarafın aynı plan düğümlerine gerçek zamanlı yorum yaptığı tek bir pano paylaş.

Sorgu planlayıcılarını öğrenmek

Join'lerin, scan'lerin ve sort'ların iç içe nasıl yerleştiğini ve planlayıcının onları neden seçtiğini gör.

Sorular

EXPLAIN plan görselleştirici: sık sorulan sorular

Hangi EXPLAIN çıktısını yapıştırabilirim?
ANALYZE ile ya da olmadan Postgres EXPLAIN (FORMAT JSON) ve MySQL EXPLAIN FORMAT=JSON. EXPLAIN'in düz metin çıktısı desteklenmez, bu yüzden JSON iste.
EXPLAIN ANALYZE kullanmalı mıyım?
Sorguyu çalıştırmayı göze alabiliyorsan evet. ANALYZE ile ısı haritası ölçülen süreyi izler; o olmadan renkler planlayıcının tahmini maliyetini izler.
Sorgu planım tarayıcıdan çıkıyor mu?
Hayır. Plan tamamen tarayıcında ayrıştırılır ve yerleştirilir. Yalnızca eklediğin diyagram, diğer çizimler gibi kaydedilir.
Ücretsiz mi?
Bir EXPLAIN planını diyagrama dönüştüren Koddan Oluştur, Pro ve Enterprise'ın parçasıdır. Ücretsiz plan yine de kredi kartı gerektirmeden tam tuvali, tüm diyagram türlerini ve PNG, SVG ve PDF dışa aktarımını sunar.

Darboğaz kendini tanıtsın.

LetDraw'u aç, EXPLAIN planını JSON olarak yapıştır ve sorgunun zamanını nerede harcadığını gör.