全部产品
Search
文档中心

ApsaraDB for SelectDB:Nereids

更新时间:Jul 30, 2025

ApsaraDB for SelectDB mendukung pengoptimal baru bernama Nereids. Dibandingkan dengan pengoptimal lama, Nereids menawarkan performa lebih tinggi untuk kueri kompleks seperti kueri penggabungan tabel multi-tabel dan subkueri bertingkat banyak. Selain itu, Nereids meminimalkan kesalahan logis dalam aturan optimasi, memudahkan perluasan aturan optimasi dan tahap pemrosesan, serta memberikan tanggapan yang lebih stabil dan cepat guna memenuhi kebutuhan bisnis Anda.

Ikhtisar

Pengoptimal kueri modern menghadapi tantangan seperti pernyataan kueri yang semakin kompleks dan skenario kueri yang lebih beragam. Pada saat yang sama, pengguna mengharapkan hasil kueri yang lebih cepat. Arsitektur pengoptimal lama tidak lagi mampu memenuhi persyaratan iterasi cepat di masa depan.

Untuk mengatasi masalah ini, ApsaraDB for SelectDB menyediakan Nereids, sebuah arsitektur modern yang secara efisien mengoptimalkan permintaan kueri di ApsaraDB for SelectDB. Nereids meningkatkan efisiensi pemrosesan dan menyediakan ekstensibilitas yang sangat baik, meletakkan dasar yang kokoh untuk memproses kueri yang lebih kompleks serta memperluas sistem di masa depan.

Manfaat

Lebih cerdas

  • Nereids mengimplementasikan poin optimasi berbasis aturan (RBO) dan optimasi berbasis biaya (CBO) dalam bentuk aturan. Untuk setiap aturan, Nereids menyediakan serangkaian pola yang digunakan untuk menggambarkan bentuk rencana kueri, sehingga dapat secara tepat cocok dengan rencana kueri tujuan. Hal ini memungkinkan Nereids memberikan performa lebih tinggi untuk pernyataan kueri yang kompleks, seperti subkueri bertingkat banyak.

  • Selain itu, CBO Nereids dikembangkan berdasarkan kerangka Cascades yang canggih, menggunakan berbagai statistik data, dan menerapkan model biaya dengan dimensi yang lebih ilmiah. Hal ini membuat Nereids lebih cocok untuk kueri penggabungan tabel multi-tabel.

Gambar berikut menunjukkan perbandingan antara pengoptimal baru dan lama dalam hal kecepatan kueri pada skenario Transaction Processing Performance Council (TPC)-H Scale Factor (SF) 100 (TPC-H SF100). Dalam skenario ini, tiga node backend (BE) digunakan, dengan setiap node memiliki 16 inti CPU dan 64 GB memori. Nereids menjalankan kueri SQL asli, dan statistik dikumpulkan sebelum kueri SQL dilakukan. Pengoptimal lama menjalankan kueri SQL asli dan kueri SQL yang dioptimalkan secara manual. Performa kueri Nereids jauh lebih unggul dibandingkan pengoptimal lama sebelum optimasi manual, dan mirip dengan performa kueri pengoptimal lama setelah optimasi manual.

Lebih kuat

Semua aturan optimasi Nereids diimplementasikan pada pohon rencana eksekusi logis. Setelah sintaksis dan semantik kueri dianalisis, kueri diubah menjadi struktur pohon. Dibandingkan dengan pengoptimal lama, struktur pohon ini menyajikan struktur data internal yang lebih masuk akal dan seragam. Misalnya, ketika Nereids memproses subkueri, Nereids mencegah subkueri diproses secara terpisah oleh beberapa aturan dalam pengoptimal lama. Ini meminimalkan kesalahan logis yang mungkin terjadi dalam aturan optimasi.

Lebih fleksibel

Arsitektur Nereids lebih elegan dan masuk akal. Hal ini memungkinkan Nereids untuk memperluas aturan optimasi dan tahap pemrosesan dengan mudah serta merespons kebutuhan baru dengan cepat.

Menggunakan Nereids

  • Aktifkan Nereids.

    Catatan

    Secara default, Nereids diaktifkan.

    SET enable_nereids_planner=true;
  • Aktifkan fitur fallback otomatis untuk menggunakan pengoptimal lama.

    SET enable_fallback_to_original_planner=true;
Catatan

Untuk memanfaatkan sepenuhnya kemampuan CBO Nereids, kami sarankan Anda mengeksekusi pernyataan ANALYZE pada tabel yang ingin Anda pantau kinerja kuerinya untuk mengumpulkan lebih banyak informasi statistik. Untuk informasi lebih lanjut, lihat Statistik.

Catatan penggunaan

Fitur yang tidak didukung

Penting

Jika fitur fallback otomatis diaktifkan, pengoptimal lama digunakan untuk eksekusi ketika terjadi masalah di Nereids.

  • Tipe data JSON, ARRAY, MAP, dan STRUCT tidak didukung. Jika tabel yang akan diquery berisi data dari tipe data tersebut, atau fungsi dalam pernyataan kueri mengembalikan data dari tipe data tersebut, Nereids tidak dapat mengoptimalkan kueri.

  • Nereids hanya mendukung pernyataan DML berikut: INSERT INTO SELECT, UPDATE, dan DELETE.

  • Nereids tidak mendukung tampilan materialisasi dengan kondisi filter.

  • Alias fungsi tidak didukung.

  • Fungsi yang ditentukan pengguna (UDF) dalam Java dan Sistem File Terdistribusi Hadoop (HDFS) tidak didukung.

  • Nereids tidak dapat mengoptimalkan kueri titik konkurensi tinggi.

Masalah yang diketahui

  • Nereids tidak dapat menggunakan cache partisi untuk mempercepat kueri.