Tüm Ürünler
Search
Belge Merkezi

ApsaraDB for SelectDB:Nereids

Son Güncelleme:Oct 08, 2026

Nereids, ApsaraDB for SelectDB içindeki sorgu iyileştiricisidir. Çok tablolu birleştirmeler ve derin iç içe geçmiş alt sorgular gibi karmaşık analitik sorgular için eski iyileştiricinin yerini alır. Manuel SQL yeniden yazımına gerek kalmadan, elle ayarlanmış eski bir plana kıyasla benzer performans sunar.

Nasıl çalışır

Nereids, RBO ve CBO optimizasyon noktalarını kural biçiminde sunar. Her kural, sorgu planının şeklini tanımlayan bir dizi desen sağlar. Bu sayede Nereids, çok katmanlı iç içe geçmiş alt sorgular dahil olmak üzere karmaşık sorgu yapılarını eşleştirip yeniden yazabilir.

CBO, Cascades çerçevesi temel alınarak geliştirilmiştir. Birden çok boyutta maliyet modeliyle birlikte çeşitli veri istatistiklerini kullanır; bu da onu çok tablolu birleştirme sorguları için son derece uygun hale getirir.

Tüm optimizasyon kuralları mantıksal yürütme planı ağacı üzerinde çalışır. Sorgunun (eski iyileştiricide kullanılan düz yapı yerine) bir ağaç olarak temsil edilmesi, alt sorguların tek bir birleşik geçişte işlenmesini sağlar. Bu yaklaşım, birden çok kuralın alt sorguları bağımsız şekilde işlemesinden kaynaklanan mantıksal hataları ortadan kaldırır.

Her biri 16 CPU çekirdeği ve 64 GB belleğe sahip üç BE düğümü kullanılarak yapılan TPC-H SF100 kıyaslamasında, sorgu yürütmeden önce istatistiklerin toplanmasıyla Nereids, orijinal SQL'de eski iyileştiriciden çok daha iyi performans göstermiş; manuel olarak optimize edilmiş SQL'de ise eski iyileştiriciyle benzer performansa ulaşmıştır.

Ön koşullar

Nereids ile sorgu çalıştırmadan önce tablolar üzerinde istatistik toplayın. CBO için istatistik toplamak amacıyla her tabloda ANALYZE ifadesini çalıştırın. Toplama stratejileri ve daha fazla bilgi için bkz. İstatistikler.

Nereids varsayılan olarak etkindir. Ek kurulum gerekmez.

Nereids'i etkinleştirin veya devre dışı bırakın

Nereids davranışını denetlemek için oturum değişkenlerini kullanın:

Değişken Açıklama
enable_nereids_planner Geçerli oturum için Nereids'i etkinleştirir. Varsayılan olarak etkindir.
enable_fallback_to_original_planner Nereids'te bir sorun oluştuğunda eski iyileştiriciye geri döner.

Bir oturum için Nereids'i devre dışı bırakmak ve eski iyileştiriciyi zorlamak için:

SET enable_nereids_planner = false;

Nereids'i yeniden etkinleştirmek için:

SET enable_nereids_planner = true;

Eski iyileştiriciye otomatik geri dönüşü etkinleştirmek için:

SET enable_fallback_to_original_planner = true;
Önemli

enable_fallback_to_original_planner etkinleştirildiğinde, Nereids sorunla karşılaşan sorguları otomatik olarak eski iyileştiriciye yönlendirir. Hangi iyileştiricinin her sorguyu çalıştıracağı üzerinde açık denetim istiyorsanız geri dönüşü devre dışı bırakın.

Sınırlamalar

enable_fallback_to_original_planner etkinleştirildiğinde, bu sınırlamalara takılan sorgular otomatik olarak eski iyileştiriciye yönlendirilir.

Yarı yapılandırılmış veri türleri

JSON, ARRAY, MAP veya STRUCT türünde sütunlar ya da işlev dönüş değerleri içeren sorgular Nereids tarafından işlenemez.

Geçici çözüm: enable_fallback_to_original_planner = true ayarını koruyun. Eski iyileştirici bu sorguları otomatik olarak işler.

DML ifadeleri

Nereids yalnızca INSERT INTO SELECT, UPDATE ve DELETE ifadelerini destekler. Diğer DML kalıpları desteklenmez.

Geçici çözüm: enable_fallback_to_original_planner = true ayarlayarak eski iyileştiriciyi kullanın.

Filtre koşulları içeren materialize görünümler

Nereids, filtre koşulları tanımlanmış materialize görünümleri kullanacak şekilde sorguları yeniden yazmaz.

Geçici çözüm: Filtre koşulu olmayan materialize görünümleri kullanın veya temel tablolara doğrudan sorgu gönderin.

İşlev takma adları

İşlev takma adları Nereids tarafından tanınmaz.

Geçici çözüm: Sorguda işlev takma adlarını tam işlev ifadeleriyle değiştirin.

Kullanıcı tanımlı işlevler

Java'da uygulanan veya Hadoop Distributed File System (HDFS) üzerinden yüklenen kullanıcı tanımlı işlevler (UDF'ler) desteklenmez.

Geçici çözüm: enable_fallback_to_original_planner = true ayarını koruyun. Bu sorgular otomatik olarak eski iyileştiriciye geri döner.

Yüksek eşzamanlı nokta sorguları

Nereids analitik iş yükleri için optimize edilmiştir. Yüksek eşzamanlı nokta sorguları eski iyileştiriciyi kullanmalıdır.

Geçici çözüm: Yüksek eşzamanlı nokta sorguları çalıştıran oturumlarda enable_nereids_planner = false ayarlayın.

Bilinen sorunlar

  • Nereids, sorguları hızlandırmak için bölüm önbelleğini kullanamaz.

Sonraki adımlar

  • İstatistikler — CBO için tablo istatistiklerini toplayın ve yönetin.