All Products
Search
Document Center

ApsaraDB RDS:Perutean kueri HTAP

Last Updated:Apr 02, 2026

Jika bisnis Anda menangani beban kerja online transaction processing (OLTP) berkonkurensi tinggi dan online analytical processing (OLAP) kompleks secara bersamaan, Anda dapat menambahkan instans hanya baca analitik berbasis DuckDB ke instans RDS for MySQL. Proksi database memungkinkan penerapan perutean kueri otomatis berbasis HTAP atau perutean manual dengan hint. Fitur ini mengarahkan kueri OLAP ke instans hanya baca analitik berbasis DuckDB dan kueri OLTP ke instans utama atau instans hanya baca reguler, sehingga membantu mengintegrasikan pemrosesan transaksi dan analitik data secara efisien.

Ikhtisar

Solusi perutean kueri otomatis berbasis 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 untuk mengisolasi beban kerja dan mengoptimalkan kinerja.

Tipe instans

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

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

Metode perutean

RDS for MySQL mendukung dua metode perutean berikut:

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

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

Lihat biaya eksekusi SQL

Saat menggunakan perutean otomatis, Anda dapat menjalankan perintah SHOW STATUS LIKE 'Last_query_cost' untuk memeriksa estimasi biaya eksekusi pernyataan SQL. Hal ini membantu memahami dasar pengambilan keputusan perutean. Disarankan 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 84454,999000. Sistem menggunakan nilai biaya ini untuk menentukan apakah kueri akan diarahkan ke instans columnstore.

Prasyarat

Untuk menggunakan perutean kueri otomatis berbasis HTAP, 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 analitik berbasis DuckDB telah ditambahkan.

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

Catatan

Untuk meningkatkan versi mesin minor MySQL atau versi database proxy, lihat Upgrade the minor engine version of an RDS instance dan Upgrade the minor engine version of a database proxy.

Peringatan

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

  • Saat mengaktifkan perutean kueri otomatis berbasis HTAP, atribut Read/Write Splitting Attribute untuk titik akhir proxy target harus diatur ke Read/Write.

  • Bobot baca instans hanya baca analitik berbasis DuckDB hanya memengaruhi penyeimbangan beban di antara instans-instans tersebut dan tidak memengaruhi logika perutean antara instans berorientasi baris dan instans columnstore.

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

  • Setelah mengatur Read Weight Allocation ke Custom untuk titik akhir proxy, bobot baca instans hanya baca analitik 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, Read/Write Splitting Attribute, dan bobot baca proksi database. Untuk informasi selengkapnya, lihat Configure a database proxy.

Aktifkan perutean kueri HTAP

Aktifkan perutean kueri otomatis

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

  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 proxy target dan klik Modify Configuration di kolom Actions.

  5. Pada kotak dialog, aktifkan HTAP-based Automatic Query Routing dan klik OK.

Alokasikan bobot baca

Saat instans RDS for MySQL Anda dikonfigurasi dengan beberapa instans hanya baca analitik berbasis DuckDB, Anda dapat mengatur bobot baca yang sesuai untuk setiap instans berdasarkan kebutuhan bisnis. Bobot baca untuk alamat koneksi proxy RDS for MySQL secara default diatur ke System-assigned. Semakin tinggi bobot baca suatu instans, semakin banyak permintaan baca yang diprosesnya.

  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 koneksi proxy target dan klik Modify Configuration di kolom Actions.

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

    Setelah mengatur nilainya ke Custom, bobot baca instans hanya baca analitik berbasis DuckDB baru untuk instans utama ini secara default bernilai 0. Anda harus mengonfigurasi bobot baca secara manual.

  6. Pada bagian Read Weight Allocation for DuckDB-based analytical read-only instances, atur bobot baca untuk setiap instansi analitis hanya-baca berbasis DuckDB sesuai kebutuhan.

    Sebagai contoh, asumsikan bobot baca instans utama diatur ke 0, dan bobot baca ketiga instans hanya baca analitik berbasis DuckDB diatur ke 100, 200, dan 200. Artinya, instans utama tidak memproses permintaan baca. Permintaan tulis tetap dikirim secara otomatis ke instans utama. Ketiga instans hanya baca memproses permintaan baca dengan rasio 1:2:2.

    Catatan
    • Bobot baca dapat diatur ke nilai antara 0 hingga 10.000.

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

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

Paksa perutean kueri secara manual dengan sintaks hint

Jika perutean kueri otomatis tidak efektif atau estimasi biaya tidak tersedia karena keterbatasan versi MySQL, tambahkan hint ke pernyataan SQL untuk memaksa rute kueri tertentu. Hint hanya memengaruhi pernyataan SQL saat ini.

  • Paksa perutean ke instans columnstore (instans hanya baca analitik berbasis DuckDB)

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

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

Referensi

Lampiran: Cara kerja perutean kueri HTAP

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

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

    • Jika estimasi biaya eksekusi di bawah ambang batas, instans berorientasi baris mengeksekusi kueri tersebut. Jika terdapat beberapa instans hanya baca reguler, kueri diarahkan berdasarkan aturan penyeimbangan beban.

    • Jika estimasi biaya eksekusi di atas ambang batas, sistem mengarahkan kueri ke instans columnstore (instans hanya baca analitik berbasis DuckDB). Jika terdapat beberapa instans columnstore, kueri diarahkan berdasarkan aturan penyeimbangan beban.