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
hintuntuk 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.
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.
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
Masuk ke Konsol RDS. Di panel navigasi kiri, klik Instances. Di bilah navigasi atas, pilih wilayah instans target.
Pada halaman Instances, klik ID instans utama target. Instans utama ditandai dengan ikon
.Di panel navigasi kiri, klik Database Proxy.
Pada bagian Connection Information, temukan titik akhir proxy target dan klik Modify Configuration di kolom Actions.
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.
Masuk ke Konsol RDS. Di panel navigasi kiri, klik Instances. Di bilah navigasi atas, pilih wilayah.
Pada halaman Instances, klik ID instans utama target, yang ditandai dengan ikon
.Di panel navigasi kiri, klik database proxy.
Pada bagian Connection Information, temukan titik akhir koneksi proxy target dan klik Modify Configuration di kolom Actions.
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.
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.
CatatanBobot 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
API terkait
DescribeDBProxy: mengkueri detail proksi database.
DescribeDBProxyEndpoint: mengkueri informasi tentang titik akhir proxy.
ModifyDBProxyEndpoint: mengonfigurasi kebijakan akses titik akhir proxy.
Lampiran: Cara kerja perutean kueri HTAP
Proksi database menerima kueri dan meneruskannya ke instans berorientasi baris, seperti instans utama atau instans hanya baca reguler.
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.