All Products
Search
Document Center

ApsaraDB RDS:Routing kueri HTAP

Last Updated:Apr 25, 2026

Jika bisnis Anda memerlukan penanganan beban kerja online transactional processing (OLTP) berkonkurensi tinggi dan online analytical processing (OLAP) kompleks secara bersamaan, Anda dapat menambahkan instans hanya baca analitis berbasis DuckDB ke instans RDS for MySQL. Dengan menggunakan proksi database, Anda dapat mengaktifkan routing kueri HTAP otomatis atau routing manual dengan hint. Fitur ini mengarahkan kueri OLAP ke instans hanya baca analitis berbasis DuckDB dan kueri OLTP ke instans utama atau instans hanya baca reguler, sehingga membantu Anda mengintegrasikan pemrosesan transaksi dan analisis data secara efisien.

Ikhtisar

Solusi routing kueri HTAP untuk RDS for MySQL memanfaatkan keunggulan khas dari mesin penyimpanan yang berbeda. Proksi database secara otomatis mengarahkan permintaan ke tipe instans yang paling sesuai berdasarkan estimasi biaya eksekusi kueri SQL. Hal ini membantu mengisolasi beban kerja dan mengoptimalkan performa.

Tipe instans

  • Instans berorientasi baris: Instans utama RDS for MySQL dan instans hanya baca reguler. Instans ini menggunakan engine InnoDB dan ideal untuk memproses permintaan baca-tulis OLTP berkonkurensi tinggi.

  • Instans columnstore: Instans hanya baca analitis berbasis DuckDB. Instans ini menggunakan engine DuckDB dan cocok untuk kueri analitis OLAP kompleks.

Metode routing

RDS for MySQL mendukung dua metode routing kueri berikut:

  • Routing kueri HTAP otomatis: Secara otomatis mengarahkan kueri OLAP dan OLTP ke instans columnstore atau berorientasi baris berdasarkan estimasi biaya eksekusi pernyataan SQL.

  • Routing manual dengan hint: Jika routing otomatis tidak efektif atau versi MySQL Anda tidak mendukung estimasi biaya, Anda dapat menggunakan hint untuk menentukan tujuan routing secara manual.

Biaya eksekusi SQL

Saat menggunakan routing otomatis, Anda dapat menjalankan perintah SHOW STATUS LIKE 'Last_query_cost' untuk memeriksa estimasi biaya eksekusi pernyataan SQL. Hal ini membantu Anda memahami dasar pengambilan keputusan routing. Kami merekomendasikan menjalankan pernyataan EXPLAIN sebelum memeriksa biaya eksekusi.

Contoh

Lihat estimasi biaya eksekusi pernyataan SELECT COUNT(*) FROM sbtest5.sbtest1:

EXPLAIN SELECT COUNT(*) FROM sbtest5.sbtest1;
SHOW STATUS LIKE 'Last_query_cost';

-- Contoh hasil:
+-------------------+---------------+
| Variable_name     | Value         |
+-------------------+---------------+
| Last_query_cost   | 84454.999000  |
+-------------------+---------------+

Hasil tersebut menunjukkan bahwa estimasi biaya eksekusi pernyataan SQL adalah 84.454,999000. Sistem menggunakan nilai biaya ini untuk menentukan apakah kueri akan diarahkan ke instans columnstore.

Prasyarat

Untuk menggunakan routing kueri HTAP otomatis, instans utama harus memenuhi kondisi berikut:

  • Instans menjalankan MySQL 8.0 dengan versi mesin minor 20250731 atau lebih baru, atau MySQL 5.7 dengan versi mesin minor 20260228 atau lebih baru.

  • Instans hanya baca analitis berbasis DuckDB telah ditambahkan.

  • Fitur database proxy diaktifkan, dan versi proksi database adalah 2.25.8 atau lebih baru.

Catatan

Untuk melakukan peningkatan versi mesin minor MySQL dan versi proksi database, lihat Peningkatan versi mesin minor dan Peningkatan versi mesin minor proksi database.

Catatan penggunaan

  • Ambang batas latensi dan tingkat konsistensi proksi database juga berlaku untuk instans hanya baca analitis berbasis DuckDB.

  • Bobot baca instans hanya baca analitis berbasis DuckDB hanya memengaruhi load balancing di antara instans-instans tersebut dan tidak memengaruhi logika routing antara instans berorientasi baris dan columnstore.

  • Jika semua instans hanya baca analitis berbasis DuckDB berada pada kapasitas penuh, kueri analitis berikutnya akan diantrikan untuk diproses pada instans-instans tersebut.

  • Setelah Anda mengatur read weight untuk titik akhir proksi ke Custom, bobot baca instans hanya baca analitis berbasis DuckDB baru yang ditambahkan ke instans utama secara default bernilai 0 dan harus dikonfigurasi secara manual.

Catatan

Anda dapat mengonfigurasi secara fleksibel ambang batas latensi, tingkat konsistensi, atribut baca/tulis, dan bobot baca proksi database. Untuk informasi selengkapnya, lihat Konfigurasi proksi database.

Routing kueri HTAP otomatis

Aktifkan routing kueri otomatis

  1. Masuk ke konsol RDS. Di panel navigasi sebelah kiri, klik Instances, lalu pilih wilayah instans Anda di bilah navigasi atas.

  2. Pada halaman Instances, klik ID instans utama target. Instans utama ditandai dengan ikon image.

  3. Di panel navigasi kiri, klik Database Proxy.

  4. Pada bagian Connection Information, temukan titik akhir proksi target dan klik Modify Configuration di kolom Actions.

  5. Pada kotak dialog yang muncul, aktifkan Automatic row and column separation for HTAP lalu klik OK.

Alokasikan bobot baca untuk instans DuckDB

Jika instans RDS for MySQL Anda memiliki beberapa instans hanya baca analitis berbasis DuckDB, Anda dapat mengatur bobot baca untuk setiap instans sesuai kebutuhan bisnis. Secara default, bobot baca untuk titik akhir proksi adalah Automatic. Bobot baca yang lebih tinggi berarti instans tersebut memproses lebih banyak permintaan baca.

  1. Masuk ke Konsol RDS. Di panel navigasi kiri, klik Instances. Di bilah navigasi atas, pilih wilayah.

  2. Pada halaman Instances, klik ID instans utama target, yang ditandai dengan ikon image.

  3. Di panel navigasi kiri, klik Database Proxy.

  4. Pada bagian Connection Information, temukan titik akhir proksi target dan klik Modify Configuration di kolom Actions.

  5. Pada kotak dialog yang muncul, atur Read Weight Allocation ke Custom.

    Setelah diatur ke Custom, bobot baca instans hanya baca analitis berbasis DuckDB baru yang ditambahkan ke instans utama ini secara default bernilai 0 dan harus dikonfigurasi secara manual.

  6. Pada bagian DuckDB Analytical Read-Only Instance Read Weight Allocation, atur bobot baca untuk setiap instans hanya baca analitis berbasis DuckDB sesuai kebutuhan.

    Sebagai contoh, asumsikan instans utama dan tiga instans hanya baca analitis berbasis DuckDB-nya memiliki bobot baca masing-masing 0, 100, 200, dan 200. Artinya, instans utama tidak memproses permintaan baca (permintaan tulis tetap dikirimkan secara otomatis kepadanya), sedangkan ketiga instans hanya baca tersebut memproses permintaan baca dengan rasio 1:2:2.

    Catatan
    • Bobot baca dapat diatur dalam rentang nilai 0 hingga 10.000.

    • Jika instans hanya baca analitis berbasis DuckDB dihapus, bobotnya akan dihapus secara otomatis. Bobot instans lainnya tetap tidak berubah.

    • Perubahan parameter ini berlaku langsung dan tidak menyebabkan gangguan layanan. Koneksi yang ada tidak terputus. Baik koneksi baru maupun yang sudah ada akan diarahkan berdasarkan bobot baru.

Konfigurasi ambang batas biaya eksekusi SQL

Saat Anda mengaktifkan routing kueri HTAP otomatis, ambang batas biaya eksekusi SQL secara default bernilai 500.000. Dalam kebanyakan kasus, Anda dapat menggunakan nilai default ini untuk mengarahkan permintaan database:

  • Permintaan dengan estimasi biaya di bawah ambang batas biaya eksekusi SQL diarahkan ke instans berorientasi baris (instans utama atau instans hanya baca reguler).

  • Permintaan dengan estimasi biaya di atas ambang batas biaya eksekusi SQL diarahkan ke instans columnstore (instans hanya baca analitis berbasis DuckDB).

Jika Anda perlu menetapkan ambang batas kustom yang lebih sesuai dengan kebutuhan bisnis, lakukan langkah-langkah berikut:

  1. Estimasi biaya eksekusi SQL berdasarkan kebutuhan bisnis Anda.

  2. Konfigurasi ambang batas biaya eksekusi SQL:

    1. Masuk ke Konsol RDS. Di panel navigasi kiri, klik Instances. Di bilah navigasi atas, pilih wilayah.

    2. Pada halaman Instances, klik ID instans utama target, yang ditandai dengan ikon image.

    3. Di panel navigasi kiri, klik Database Proxy.

    4. Pada bagian Connection Information, temukan titik akhir proksi target dan klik Modify Configuration di kolom Actions.

    5. Pada kotak dialog, ubah SQL Execution Cost Threshold for HTAP Automatic Query Routing lalu klik OK.

Routing manual dengan hint

Jika routing otomatis berkinerja buruk atau estimasi biaya tidak tersedia untuk versi MySQL Anda, Anda dapat menambahkan hint ke pernyataan SQL untuk memaksa rute kueri tertentu. Hint hanya berlaku untuk pernyataan SQL saat ini.

  • Paksa routing ke instans columnstore (instans hanya baca analitis berbasis DuckDB)

    /*force_ap_nodes*/ SELECT COUNT(*) FROM <target_table_name>;
  • Paksa routing ke instans berorientasi baris (instans utama atau instans hanya baca reguler)

    SELECT /*+set_var(rds_cost_threshold_for_duckdb = 0)*/ COUNT(*) FROM <target_table_name>;

Dokumen dan API terkait

Lampiran: Prinsip routing kueri HTAP otomatis

  1. Proksi database menerima kueri dan meneruskannya ke instans berorientasi baris, seperti instans utama atau instans hanya baca reguler.

  2. Pengoptimal di instans berorientasi baris menganalisis kueri dan memperkirakan apakah biaya eksekusinya melebihi ambang batas yang dikonfigurasi.

    • Jika estimasi biaya eksekusi berada di bawah ambang batas biaya eksekusi SQL, kueri dieksekusi pada instans berorientasi baris. Jika terdapat beberapa instans hanya baca reguler, kueri diarahkan berdasarkan aturan load balancing.

    • Jika estimasi biaya eksekusi berada di atas ambang batas biaya eksekusi SQL, kueri dieksekusi pada instans columnstore. Jika terdapat beberapa instans columnstore, kueri diarahkan berdasarkan aturan load balancing.