All Products
Search
Document Center

PolarDB:Distribusi permintaan manual di antara node penyimpanan baris dan node penyimpanan kolom

Last Updated:Mar 18, 2026

Jika aplikasi berbeda digunakan untuk mengirim permintaan layanan OLAP dan OLTP, Anda dapat mengonfigurasi titik akhir kluster terpisah untuk setiap aplikasi. Kemudian, kaitkan node penyimpanan baris dan kolom dengan titik akhir kluster yang sesuai untuk mendistribusikan permintaan.

Solusi distribusi permintaan manual

Aturan distribusi permintaan:

  • Layanan OLTP: Umumnya mencakup permintaan baca dan tulis. Semua permintaan tulis OLTP didistribusikan ke node utama, sedangkan permintaan baca OLTP diproses oleh node penyimpanan baris hanya-baca atau node utama.

  • Layanan OLAP: Biasanya hanya mencakup permintaan baca. Semua permintaan baca OLAP didistribusikan ke node penyimpanan kolom hanya-baca.

Solusi distribusi permintaan manual (Read/Write (Automatic Read/Write Splitting) atau Read-only):

  • Tentukan titik akhir kluster yang tidak terkait dengan node penyimpanan kolom hanya-baca untuk aplikasi OLTP. Dengan cara ini, permintaan baca OLTP diproses oleh node utama atau node penyimpanan baris hanya-baca.

  • Tentukan titik akhir kluster yang hanya terkait dengan node penyimpanan kolom hanya-baca untuk aplikasi OLAP. Dengan cara ini, permintaan baca OLAP diproses oleh node penyimpanan kolom hanya-baca.

image

Prosedur

Anda perlu mengonfigurasi titik akhir kluster yang berbeda untuk layanan OLTP dan OLAP. Untuk informasi lebih lanjut tentang konfigurasi titik akhir kluster, lihat Kelola Titik Akhir Kluster.

Perhatikan hal-hal berikut saat mengonfigurasi titik akhir kluster:

  • Titik akhir kluster untuk layanan OLTP:

    • Dalam mode Read-only, Anda hanya dapat menambahkan node penyimpanan baris hanya-baca ke daftar node yang dipilih.

    • Dalam mode Read/Write (Automatic Read/Write Splitting), disarankan untuk menambahkan setidaknya satu node penyimpanan baris hanya-baca ke daftar node yang dipilih. Jika parameter Primary Node Accepts Read Requests disetel ke Ya, permintaan baca juga akan didistribusikan ke node utama.

      Catatan

      Dalam mode Read/Write (Automatic Read/Write Splitting), semua permintaan tulis hanya didistribusikan ke node utama, terlepas dari apakah node utama ditambahkan ke daftar node yang dipilih.

  • Titik akhir kluster untuk layanan OLAP: Layanan OLAP umumnya hanya melibatkan permintaan baca. Oleh karena itu, disarankan untuk memilih mode Read-only. Dalam mode Hanya-Baca, Anda harus menambahkan setidaknya satu node penyimpanan kolom hanya-baca ke daftar node yang dipilih.

Gunakan hints untuk secara paksa mengeksekusi permintaan menggunakan rencana eksekusi penyimpanan kolom atau baris

Jika hasil distribusi permintaan manual tidak sesuai harapan, Anda dapat menggunakan hints untuk mengeksekusi permintaan menggunakan rencana eksekusi penyimpanan kolom atau baris.

Catatan
  • hint hanya berlaku untuk pernyataan SQL tempat ia berada. Hint tidak berlaku untuk pernyataan lain dalam koneksi yang sama atau pernyataan dalam koneksi lain.

  • Jika Anda menjalankan pernyataan bersama dengan hints menggunakan MySQL 5.7.7 atau versi sebelumnya, Anda harus menambahkan opsi --comments saat terhubung ke mesin database. Anda dapat menjalankan perintah mysql --version untuk memeriksa versi klien MySQL Anda.

  • Paksa Jalankan Pernyataan Menggunakan Rencana Eksekusi Penyimpanan Kolom

    Setelah pernyataan didistribusikan ke node penyimpanan kolom hanya-baca, sistem menentukan apakah akan mengeksekusi pernyataan menggunakan rencana eksekusi penyimpanan baris atau kolom berdasarkan biaya eksekusi yang diperkirakan. Jika biaya eksekusi melebihi nilai loose_cost_threshold_for_imci, rencana eksekusi penyimpanan kolom digunakan. Jika tidak, rencana eksekusi penyimpanan baris digunakan. Untuk memaksa mengeksekusi pernyataan menggunakan rencana eksekusi penyimpanan kolom tanpa memandang nilai loose_cost_threshold_for_imci, tambahkan /*+SET_VAR(cost_threshold_for_imci=0)*/ hint ke pernyataan untuk mengubah nilai ambang menjadi 0. Contoh:

    /*FORCE_IMCI_NODES*/EXPLAIN SELECT /*+ SET_VAR(cost_threshold_for_imci=0) */ COUNT(*) FROM t1 WHERE t1.a > 1;
    Catatan

    Saat menggunakan /*+SET_VAR()*/ untuk mengubah nilai ambang, hilangkan awalan loose_ dari nama parameter. Jika tidak, hint tidak akan berlaku.

  • Paksa Jalankan Pernyataan Menggunakan Rencana Eksekusi Penyimpanan Baris

    Untuk memaksa mengeksekusi pernyataan menggunakan rencana eksekusi penyimpanan baris, tambahkan hint /*+ SET_VAR(USE_IMCI_ENGINE=OFF) */ ke pernyataan. Contoh pernyataan:

    EXPLAIN SELECT /*+ SET_VAR(USE_IMCI_ENGINE=OFF) */ COUNT(*) FROM t1 WHERE t1.a > 1;