All Products
Search
Document Center

PolarDB:Gunakan\ sintaks\ HINT

Last Updated:Mar 29, 2026

Petunjuk SQL memungkinkan Anda mengganti keputusan perutean default dari titik akhir kluster yang dikonfigurasi dengan Pemisahan Baca/Tulis (Pemisahan Baca/Tulis Otomatis). Petunjuk memiliki prioritas perutean tertinggi dan mengabaikan baik tingkat konsistensi maupun pemisahan transaksi. Evaluasi dampaknya sebelum menggunakannya di lingkungan produksi.

Batasan

Petunjuk hanya berfungsi pada titik akhir kluster yang mode baca/tulis-nya diatur ke Read/Write (Automatic Read/Write Splitting). Petunjuk tidak didukung pada titik akhir kluster atau titik akhir utama yang diatur ke Read-only.

Untuk detail tentang mode baca/tulis titik akhir, lihat bagian "Mode baca/tulis untuk titik akhir kluster" dalam Endpoints.

Petunjuk yang tersedia

PetunjukRute kePenggunaan umum
/*FORCE_MASTER*/Node primaryMemaksa operasi baca dijalankan pada node primary
/*FORCE_SLAVE*/Node read-onlyMemaksa pernyataan diarahkan ke node read-only pada titik akhir baca/tulis
/*force_node='<Node ID>'*/Node tertentu (satu pernyataan)Debug atau inspeksi node tertentu
/*force_proxy_internal*/set force_node = '<Node ID>'Node tertentu (semua pernyataan berikutnya)Mengikat sesi ke suatu node — gunakan dengan hati-hati
/*force_all*/Semua nodeKueri tabel sistem di seluruh kluster
/*FORCE_IMCI_NODES*/Node penyimpanan kolomMemaksa kueri analitis dijalankan pada node Indeks Kolom dalam Memori (IMCI)
Petunjuk tidak peka huruf besar/kecil dan harus ditempatkan sebelum pernyataan SQL.
Jika Anda menjalankan petunjuk dari client command-line MySQL, gunakan flag -c (atau --comments). Tanpa flag tersebut, client akan menghapus petunjuk sebelum mengirim kueri ke server. Lihat Opsi client MySQL.

Penggunaan

/*FORCE_MASTER*/ — arahkan ke node primary

Tambahkan petunjuk ini sebelum pernyataan SQL apa pun untuk mengirimnya ke node primary, terlepas dari logika perutean default.

/*FORCE_MASTER*/ SELECT * FROM test;

Tanpa petunjuk ini, SELECT * FROM test diarahkan ke node read-only. Dengan petunjuk ini, pernyataan tersebut dijalankan pada node primary.

Petunjuk ini tidak berpengaruh pada titik akhir yang diatur ke Read-only—pernyataan tidak dialihkan ke node primary.

/*FORCE_SLAVE*/ — arahkan ke node read-only

Tambahkan petunjuk ini untuk secara eksplisit mengirim pernyataan ke node read-only.

/*FORCE_SLAVE*/ SELECT * FROM orders WHERE status = 'shipped';
Penting

Jangan menggabungkan petunjuk dengan pernyataan yang mengubah variabel sesi. Misalnya, /*FORCE_SLAVE*/ SET NAMES utf8; dapat menyebabkan error.

/*force_node='<Node ID>'*/ — targetkan node tertentu (satu pernyataan)

Tambahkan petunjuk ini untuk menjalankan satu pernyataan SQL pada node yang Anda tentukan.

/*force_node='pi-bpxxxxxxxx'*/ SHOW PROCESSLIST;

Jika node yang ditentukan tidak tersedia, error berikut dikembalikan:

force hint server node is not found, please check.

/*force_proxy_internal*/set force_node — ikat sesi ke node tertentu

Jalankan pernyataan ini untuk mengarahkan semua pernyataan SQL berikutnya dalam sesi ke node tertentu.

/*force_proxy_internal*/set force_node = 'pi-bpxxxxxxxx';

Jika node gagal, error berikut dikembalikan:

set force node 'rr-bpxxxxx' is not found, please check.
Peringatan

Hindari penggunaan /*force_proxy_internal*/ kecuali Anda memiliki alasan spesifik untuk mengikat sesi. Hal ini menonaktifkan pemisahan baca/tulis untuk semua pernyataan berikutnya dalam koneksi.

/*force_all*/ — siarkan ke semua node

Tambahkan petunjuk ini untuk menyebarkan pernyataan ke setiap node dalam kluster.

/*force_all*/ SELECT * FROM information_schema.processlist;
/*force_all*/ memerlukan PolarProxy versi 2.8.36 atau lebih baru. Untuk memeriksa dan memperbarui versi PolarProxy Anda, lihat Pembaruan versi minor.

Hasil yang dikembalikan bergantung pada kueri:

  • Tabel sistem (information_schema.processlist, information_schema.innodb_trx, performance_schema.threads, performance_schema.metadata_locks, sys.schema_table_lock_waits): PolarProxy menyebarkan pernyataan ke semua node dan mengembalikan hasil gabungan.

  • Semua tabel dan skenario lainnya: Hanya hasil dari database utama yang dikembalikan.

Tanpa petunjuk ini, SELECT * FROM information_schema.processlist diarahkan ke node acak.

/*FORCE_IMCI_NODES*/ — arahkan ke node penyimpanan kolom

Jika Anda telah mengaktifkan distribusi permintaan otomatis antara node penyimpanan baris dan node penyimpanan kolom, tambahkan petunjuk ini untuk memaksa kueri dijalankan pada node IMCI (Indeks Kolom dalam Memori).

/*FORCE_IMCI_NODES*/ SELECT * FROM large_analytics_table;

Untuk detail pengaturan, lihat Distribusi permintaan otomatis di antara node penyimpanan baris dan node penyimpanan kolom.